Chrome Uygulaması Yaşam Döngüsü

Uygulama yaşam döngüsünü yönetmekten uygulama çalışma zamanı ve etkinlik sayfası sorumludur. Uygulama çalışma zamanı, uygulama yüklemeyi yönetir, etkinlik sayfasını kontrol eder ve uygulamayı istediği zaman kapatabilir. Etkinlik sayfası, uygulama çalışma zamanındaki etkinlikleri dinler ve nelerin nasıl başlatılacağını yönetir.

Yaşam döngüsü nasıl çalışır?

Uygulama çalışma zamanı, etkinlik sayfasını kullanıcının masaüstünden yükler ve onLaunch() etkinliği tetiklenir. Bu etkinlik, etkinlik sayfasına hangi pencerelerin başlatılacağını ve boyutlarını bildirir.

uygulama yaşam döngüsünün işleyiş şekli

Etkinlik sayfasında çalışan JavaScript olmadığında, bekleyen geri çağırma olmadığında ve açık pencere olmadığında çalışma zamanı, etkinlik sayfasını kaldırır ve uygulamayı kapatır. Etkinlik sayfası kaldırılmadan önce onSuspend() etkinliği tetiklenir. Bu, etkinlik sayfasının uygulama kapatılmadan önce basit temizlik görevlerini tamamlamasına olanak tanır.

Etkinlik sayfası ve pencereleri oluşturma

Tüm uygulamaların bir etkinlik sayfası olmalıdır. Bu sayfa, kendi kullanıcı arayüzü olmadan uygulamanın üst düzey mantığını içerir ve diğer tüm uygulama sayfaları için pencereler oluşturmaktan sorumludur.

Etkinlik sayfası oluşturma

Etkinlik sayfasını oluşturmak için uygulama manifest dosyasına "background" alanını ve background.js öğesini komut dizisi dizisine dahil edin. Etkinlik sayfası tarafından kullanılan tüm kitaplık komut dosyalarının önce "background" alanına eklenmesi gerekir:

"background": {
  "scripts": [
    "foo.js",
    "background.js"
  ]
}

Etkinlik sayfanız onLaunched() işlevini içermelidir. Bu işlev, uygulamanız herhangi bir şekilde başlatıldığında çağrılır:

chrome.app.runtime.onLaunched.addListener(function() {
  // Tell your app what to launch and how.
});

Pencere oluşturma

Etkinlik sayfası, kendi takdirine bağlı olarak bir veya daha fazla pencere oluşturabilir. Varsayılan olarak bu pencereler, etkinlik sayfasıyla bir komut dosyası bağlantısı kullanılarak oluşturulur ve etkinlik sayfası tarafından doğrudan komut dosyası ile yazılabilir.

Chrome Uygulamaları'ndaki Windows, herhangi bir Chrome tarayıcı penceresiyle ilişkili değildir. Başlık çubuğu ve boyut denetimleri içeren isteğe bağlı bir çerçeveye ve önerilen bir pencere kimliğine sahiptirler. Kimliği olmayan Windows, yeniden başlatıldıktan sonra boyutuna ve konumuna geri yüklenmez.

Aşağıda, background.js kaynağından oluşturulan örnek bir pencere verilmiştir:

chrome.app.runtime.onLaunched.addListener(function() {
  chrome.app.window.create('main.html', {
    id: 'MyWindowID',
    bounds: {
      width: 800,
      height: 600,
      left: 100,
      top: 100
    },
    minWidth: 800,
    minHeight: 600
  });
});

Lansman Verileri Dahil

Uygulamanızın nasıl kullanıma sunulduğuna bağlı olarak, etkinlik sayfanızda lansman verilerini işlemeniz gerekebilir. Uygulama, uygulama başlatıcı tarafından başlatıldığında varsayılan olarak başlatma verisi yoktur. Dosya işleyicileri olan uygulamaların dosyalarla başlatılabilmesi için launchData.items parametresini işlemeniz gerekir.

Uygulama çalışma zamanı etkinliklerini dinleme

Uygulama çalışma zamanı, uygulama yükleme, güncelleme ve kaldırma işlemlerini kontrol eder. Uygulama çalışma zamanını ayarlamak için herhangi bir işlem yapmanız gerekmez. Ancak etkinlik sayfanız, yerel ayarları depolamak için onInstalled() etkinliğini ve etkinlik sayfası yüklenmeden önce basit temizleme görevlerini yapmak için onSuspend() etkinliğini dinleyebilir.

Yerel ayarları depolama

chrome.runtime.onInstalled(), uygulamanız ilk kez yüklendiğinde veya güncellendiğinde çağrılır. Bu işlev her çağrıldığında onInstalled etkinliği tetiklenir. Etkinlik sayfası bu etkinliği dinleyebilir ve yerel ayarları depolamak ve güncellemek için Storage API'yi kullanabilir (Depolama alanı seçenekleri bölümüne de bakın).

chrome.runtime.onInstalled.addListener(function() {
  chrome.storage.local.set(object items, function callback);
});

Veri kaybını önleme

Kullanıcılar uygulamanızı istedikleri zaman kaldırabilir. Kaldırıldığında, çalışan kod veya özel veri bırakılmaz. Kullanıcılar yerel olarak düzenlenmiş ve senkronize edilmemiş verileri olan bir uygulamayı kaldırabileceğinden bu durum veri kaybına yol açabilir. Veri kaybını önlemek için verileri saklamanız gerekir.

En azından, kullanıcı ayarlarını saklamanız gerekir. Böylece, kullanıcılar uygulamanızı yeniden yüklese bile bilgileri yeniden kullanılabilir hale gelir. Storage API (storage.sync) kullanılarak kullanıcı verileri, Chrome senkronizasyonu ile otomatik olarak senkronize edilebilir.

Uygulama kapanmadan önce temizleme

Uygulama çalışma zamanı, onSuspend() etkinliğini sayfayı boşaltmadan önce etkinlik sayfasına gönderir. Etkinlik sayfanız bu etkinliği dinleyebilir, uygulama kapanmadan önce görevleri temizleyip durumu kaydedebilir.

Bu etkinlik tetiklendiğinde, uygulama çalışma zamanı uygulamayı kapatma işlemini başlatır. Uygulamanın açık pencereleri varsa uygulama ileride onRestarted etkinliği aracılığıyla yeniden başlatılabilir. Bu durumda, uygulama bir onRestarted etkinliği aldığında aynı durumda yeniden başlatılabilmesi için mevcut durumunu kalıcı depolama alanına kaydetmelidir. Uygulamanın durumunu kaydetmesi için yalnızca birkaç saniye vardır. Bu sürenin ardından uygulama sonlandırılır. Bu nedenle, uygulama normal şekilde çalışırken uygulama durumunu artımlı olarak kaydetmeniz önerilir.

onSuspend alındıktan sonra, askıya alma işlemi herhangi bir nedenle iptal edilmediği sürece uygulamaya başka etkinlik gönderilmez. Bu durumda onSuspendCanceled uygulamaya teslim edilir ve uygulama kaldırılmaz.

chrome.runtime.onSuspend.addListener(function() {
  // Do some simple clean-up tasks.
});