Siklus Proses Aplikasi Chrome

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

Cara kerja siklus proses

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

cara kerja siklus proses aplikasi

Jika halaman peristiwa tidak memiliki JavaScript yang sedang dieksekusi, tidak ada callback yang tertunda, dan tidak ada jendela yang terbuka, runtime akan menghapus muatan halaman peristiwa dan menutup aplikasi. Sebelum menghapus pemuatan halaman peristiwa, peristiwa onSuspend() akan diaktifkan. Hal ini memberi halaman peristiwa peluang 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 membuat jendela untuk semua halaman aplikasi lainnya.

Buat halaman acara

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

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

Halaman peristiwa Anda harus menyertakan fungsi onLaunched(). Fungsi ini dipanggil saat aplikasi Anda 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 diskresinya. Secara default, jendela ini dibuat dengan koneksi skrip ke halaman peristiwa dan dapat dibuat skripnya secara langsung oleh halaman peristiwa.

Windows di Aplikasi Chrome tidak dikaitkan dengan jendela browser Chrome apa pun. Elemen tersebut memiliki frame opsional dengan panel judul dan kontrol ukuran, serta ID jendela yang direkomendasikan. Windows tanpa ID tidak akan dipulihkan ke ukuran dan lokasi 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
  });
});

Mencakup Data Peluncuran

Bergantung pada cara aplikasi diluncurkan, Anda mungkin perlu menangani data peluncuran di halaman acara. Secara default, tidak ada data peluncuran saat aplikasi dimulai oleh peluncur aplikasi. Untuk aplikasi yang memiliki pengendali file, Anda perlu 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 Anda dapat memproses peristiwa onInstalled() untuk menyimpan setelan lokal dan peristiwa onSuspend() untuk melakukan tugas pembersihan sederhana sebelum halaman peristiwa dihapus muatannya.

Menyimpan setelan lokal

chrome.runtime.onInstalled() dipanggil saat aplikasi pertama kali diinstal, atau saat 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 eksekusi kode atau data pribadi yang tertinggal. Hal ini dapat menyebabkan kehilangan data karena pengguna mungkin meng-uninstal aplikasi yang memiliki data yang diedit secara lokal dan tidak disinkronkan. 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 otomatis disinkronkan 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 dan melakukan tugas pembersihan serta menyimpan status sebelum aplikasi ditutup.

Setelah peristiwa ini diaktifkan, runtime aplikasi akan memulai proses penutupan aplikasi. Jika aplikasi telah membuka jendela, aplikasi dapat dimulai ulang di lain waktu melalui peristiwa onRestarted. Dalam hal ini, aplikasi harus menyimpan statusnya saat ini ke penyimpanan persisten agar 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. Oleh karena itu, sebaiknya simpan status aplikasi secara bertahap saat aplikasi berjalan normal.

Setelah menerima onSuspend, tidak ada peristiwa lebih lanjut yang akan dikirimkan ke aplikasi, kecuali jika penangguhan dibatalkan karena alasan tertentu. Dalam hal ini, onSuspendCanceled akan dikirimkan ke aplikasi dan aplikasi tidak akan dihapus muatannya.

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