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

Uygulama çalışma zamanı ve etkinlik sayfası, uygulama yaşam döngüsünü yönetmekten 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 dinleyip nelerin ve nasıl başlatıldığını yönetir.

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

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

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

Etkinlik sayfasında çalışan JavaScript, bekleyen geri çağırma ve açık pencere yoksa çalışma zamanı, etkinlik sayfasını kaldırır ve uygulamayı kapatır. Etkinlik sayfasının yüklemesi kaldırılmadan önce onSuspend() etkinliği tetiklenir. Bu sayede etkinlik sayfası, uygulama kapatılmadan önce basit temizlik görevlerini gerçekleştirme fırsatı elde eder.

Etkinlik sayfası ve pencere oluşturma

Tüm uygulamalarda 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ştur

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

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

Etkinlik sayfanızda onLaunched() işlevi bulunmalıdır. 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

Bir etkinlik sayfası, kendi takdirine bağlı olarak bir veya daha fazla pencere oluşturabilir. Varsayılan olarak bu pencereler, etkinlik sayfasına komut dosyası bağlantısıyla oluşturulur ve etkinlik sayfası tarafından doğrudan komut verilebilir.

Chrome Uygulamaları'ndaki Windows, herhangi bir Chrome tarayıcı penceresiyle ilişkilendirilmez. Başlık çubuğu ve boyut kontrolleri bulunan isteğe bağlı bir çerçeve ve önerilen bir pencere kimliği vardır. Kimliği olmayan Windows, yeniden başlatma sonrasında boyutlarına ve konumlarına geri yüklemez.

background.js ürününden oluşturulmuş örnek pencere:

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 Verilerini Dahil Etme

Uygulamanızın nasıl başlatıldığına bağlı olarak etkinlik sayfanızda lansman verilerini işlemeniz gerekebilir. Varsayılan olarak, uygulama, uygulama başlatıcı tarafından başlatıldığında başlatma verisi olmaz. Dosya işleyicileri olan uygulamaların dosyalarla başlatılmasına izin vermek 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ı kaldırılmadan önce basit temizlik görevlerini gerçekleştirmek için onSuspend() etkinliğini dinleyebilir.

Yerel ayarları depolama

Uygulamanız ilk kez yüklendiğinde veya güncellendiğinde chrome.runtime.onInstalled() çağrılır. Bu işlev her çağrıldığında onInstalled etkinliği tetiklenir. Etkinlik sayfası, bu etkinliği dinleyip yerel ayarları depolamak ve güncellemek için Storage API'yi kullanabilir (Depolama 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ırabilirler. Kaldırıldığında, herhangi bir kod yürütme veya gizli veri kalmaz. Kullanıcılar yerel olarak düzenlenmiş, senkronize edilmemiş verileri olan bir uygulamayı kaldırıyor olabileceğinden bu durum veri kaybına yol açabilir. Veri kaybını önlemek için verileri saklamalısınız.

En azından, kullanıcıların uygulamanızı yeniden yüklediklerinde bilgilerinin yeniden kullanılabilmesi için kullanıcı ayarlarını depolamanız gerekir. Storage API (storage.sync) kullanılarak kullanıcı verileri, Chrome senkronizasyonu ile otomatik olarak senkronize edilebilir.

Uygulama kapanmadan önce temizleyin

Uygulama çalışma zamanı, onSuspend() etkinliğini kaldırmadan önce etkinlik sayfasına gönderir. Etkinlik sayfanız bu etkinliği dinleyebilir, uygulama kapanmadan önce temizleme görevlerini gerçekleştirebilir ve durumu kaydedebilir.

Bu etkinlik tetiklendiğinde, uygulama çalışma zamanı uygulamayı kapatma işlemini başlatır. Uygulamanın açık pencereleri varsa 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 yalnızca birkaç saniye içinde durumunu kaydetmesi gerekir. Sonrasında sonlandırılır. Bu nedenle, uygulama normal şekilde çalışırken uygulama durumunu kademeli olarak kaydetmek iyi bir fikirdir.

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

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