Siklus Proses Aplikasi Chrome

Runtime aplikasi dan halaman peristiwa bertanggung jawab untuk mengelola siklus proses aplikasi. Runtime aplikasi mengelola penginstalan aplikasi, mengontrol halaman acara, dan dapat menonaktifkan aplikasi kapan saja. Halaman peristiwa memproses peristiwa dari runtime aplikasi dan mengelola apa yang diluncurkan dan caranya.

Cara kerja siklus proses

Runtime aplikasi memuat halaman peristiwa dari desktop pengguna dan peristiwa onLaunch() diaktifkan. Peristiwa ini memberi tahu halaman peristiwa jendela yang akan diluncurkan dan dimensinya.

cara kerja siklus proses aplikasi

Jika halaman peristiwa tidak memiliki JavaScript yang dieksekusi, tidak ada callback yang tertunda, dan tidak ada jendela yang terbuka, runtime akan menghapus muatan halaman peristiwa dan menutup aplikasi. Sebelum menghapus muatan halaman peristiwa, peristiwa onSuspend() akan diaktifkan. Hal ini memberi halaman peristiwa kesempatan untuk melakukan tugas pembersihan sederhana sebelum aplikasi ditutup.

Membuat halaman dan jendela peristiwa

Semua aplikasi harus memiliki halaman acara. Halaman ini berisi logika tingkat atas aplikasi tanpa UI-nya sendiri dan bertanggung jawab untuk membuat jendela untuk semua halaman aplikasi lainnya.

Membuat halaman acara

Untuk membuat halaman peristiwa, sertakan kolom "background" dalam manifes aplikasi dan sertakan background.js dalam array skrip. Setiap skrip library yang digunakan oleh halaman peristiwa harus ditambahkan ke kolom "background" terlebih dahulu:

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

Halaman peristiwa Anda harus menyertakan fungsi onLaunched(). Fungsi ini dipanggil saat aplikasi diluncurkan dengan cara apa pun:

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

Membuat jendela

Halaman peristiwa dapat membuat satu atau beberapa jendela sesuai kebijaksanaannya. Secara default, jendela ini dibuat dengan koneksi skrip ke halaman peristiwa dan dapat langsung dibuat skripnya oleh halaman peristiwa.

Jendela di Aplikasi Chrome tidak dikaitkan dengan jendela browser Chrome apa pun. Jendela ini memiliki bingkai opsional dengan kontrol ukuran dan panel judul, serta ID jendela yang direkomendasikan. Jendela tanpa ID tidak akan dipulihkan ke ukuran dan lokasinya setelah dimulai ulang.

Berikut adalah contoh jendela yang dibuat dari background.js:

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
  });
});

Termasuk Data Peluncuran

Bergantung pada cara aplikasi diluncurkan, Anda mungkin perlu menangani data peluncuran di halaman peristiwa. Secara default, tidak ada data peluncuran saat aplikasi dimulai oleh peluncur aplikasi. Untuk aplikasi yang memiliki pengendali file, Anda harus menangani parameter launchData.items agar dapat diluncurkan dengan file.

Memproses peristiwa runtime aplikasi

Runtime aplikasi mengontrol penginstalan, update, dan uninstal aplikasi. Anda tidak perlu melakukan apa pun untuk menyiapkan runtime aplikasi, tetapi halaman peristiwa dapat memproses peristiwa onInstalled() untuk menyimpan setelan lokal dan peristiwa onSuspend() untuk melakukan tugas pembersihan sederhana sebelum halaman peristiwa di-unload.

Menyimpan setelan lokal

chrome.runtime.onInstalled() dipanggil saat aplikasi Anda pertama kali diinstal, atau saat telah diupdate. Setiap kali fungsi ini dipanggil, peristiwa onInstalled akan diaktifkan. Halaman peristiwa dapat memproses peristiwa ini dan menggunakan Storage API untuk menyimpan dan memperbarui setelan lokal (lihat juga Opsi penyimpanan).

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

Mencegah kebocoran data

Pengguna dapat meng-uninstal aplikasi Anda kapan saja. Saat di-uninstal, tidak ada kode eksekusi atau data pribadi yang tertinggal. Hal ini dapat menyebabkan hilangnya data karena pengguna mungkin meng-uninstal aplikasi yang memiliki data yang tidak disinkronkan dan diedit secara lokal. Anda harus menyimpan data untuk mencegah kehilangan data.

Setidaknya, Anda harus menyimpan setelan pengguna sehingga jika pengguna menginstal ulang aplikasi Anda, informasi mereka masih tersedia untuk digunakan kembali. Dengan menggunakan Storage API (storage.sync), data pengguna dapat disinkronkan secara otomatis dengan sinkronisasi Chrome.

Pembersihan sebelum aplikasi ditutup

Runtime aplikasi mengirimkan peristiwa onSuspend() ke halaman peristiwa sebelum menghapus muatannya. Halaman peristiwa Anda dapat memproses peristiwa ini, melakukan tugas pembersihan, dan menyimpan status sebelum aplikasi ditutup.

Setelah peristiwa ini diaktifkan, runtime aplikasi akan memulai proses penutupan aplikasi. Jika aplikasi memiliki jendela terbuka, aplikasi tersebut dapat dimulai ulang pada masa mendatang melalui peristiwa onRestarted. Dalam hal ini, aplikasi harus menyimpan statusnya saat ini ke penyimpanan persisten sehingga dapat dimulai ulang dalam status yang sama jika menerima peristiwa onRestarted. Aplikasi hanya memiliki waktu beberapa detik untuk menyimpan statusnya, setelah itu aplikasi akan dihentikan, jadi sebaiknya simpan status aplikasi secara bertahap saat aplikasi berjalan secara normal.

Setelah menerima onSuspend, tidak ada peristiwa lebih lanjut yang akan dikirim ke aplikasi, kecuali jika penangguhan dibatalkan karena alasan tertentu. Dalam hal ini, onSuspendCanceled akan dikirim ke aplikasi, dan aplikasi tidak akan di-unload.

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