1. When a foreground service can be killed?
Proses yang menghosting layanan latar depan dianggap sebagai Proses latar depan. Proses seperti ini dianggap paling penting dan dihentikan terakhir. Dari dokumen:
Secara umum, hanya sedikit proses latar depan yang ada pada waktu tertentu. Mereka dibunuh hanya sebagai upaya terakhir—jika ingatan mereka sangat rendah sehingga mereka tidak dapat terus berjalan. Umumnya, pada saat itu, perangkat telah mencapai status paging memori, jadi mematikan beberapa proses latar depan diperlukan untuk menjaga antarmuka pengguna tetap responsif.
2. Do we need to define foreground service as START_STICKY?
Tergantung pada tugas yang Anda lakukan. Karena Anda baru saja mengatakan layanan berjalan terus-menerus, saya yakin Anda mungkin membutuhkannya. Bendera tersebut memiliki arti yang sama untuk layanan normal dan latar depan. Tanda START_STICKY
menunjukkan, jika layanan dimulai ulang setelah proses hostingnya terhenti, onStartCommand
layanan akan dipanggil dengan maksud nol. Ini adalah cara untuk membuat layanan menyadari bahwa layanan telah dimulai ulang.
3. Do we need to restart foreground services on android BOOt or they automatically start.
Tidak. Anda perlu mendaftarkan penerima siaran untuk Intent.ACTION_BOOT_COMPLETED dan memulai layanan secara manual dari onReceive
.
4. How many foreground services can we start from the same application at a time.
I have read somewhere in very obsequious manner in google docs that we can nominate 3 foreground service at a time, what does that mean?
Tidak yakin, alangkah baiknya jika Anda bisa membagikan sumbernya. Apakah Anda memiliki 1 atau 3 layanan latar depan, proses hostingnya dianggap sebagai proses latar depan. Menghosting beberapa layanan latar depan menghasilkan banyak pemberitahuan di bilah status, yang membuat pengguna mengetahui layanan tersebut sedang berjalan dan mengetahui cara menghentikannya. Anda juga dapat memiliki satu layanan latar depan dengan beberapa thread yang menjalankan operasi berbeda.
5. As the name suggests does the foreground service interrupts the main or UI thread?
Seperti dijelaskan di atas, layanan latar depan menjadikan proses hostingnya sebagai proses latar depan dan pengguna mengetahui layanan tersebut. Selain itu sama sekali tidak ada perbedaan dengan pelayanan normal. Suatu layanan secara default akan berjalan di thread UI, operasi yang berjalan lama harus dijalankan di thread terpisah. Jika perangkat memiliki beberapa prosesor inti, thread mungkin atau mungkin tidak berjalan pada inti yang tersedia secara paralel. Anda dapat membaca blog ini yang ditulis oleh @fadden. Dari blog:
Terkadang orang bertanya-tanya mengapa aplikasi multi-thread mereka tampaknya tidak menggunakan semua core yang tersedia. Hal ini umumnya terjadi karena dua alasan:
- Memigrasikan thread antar inti itu mahal, dari segi kinerja;
- Mengaktifkan inti CPU itu mahal, dari segi baterai.
P.S. : Layanan yang berjalan terus-menerus selalu dianggap sebagai anti-pola di Android, karena layanan tersebut terus-menerus menggunakan sumber daya sistem sehingga secara tidak langsung memengaruhi aplikasi lain. Jadi jika suatu saat harus menggunakannya, rancanglah dengan hati-hati.
person
Manish Mulimani
schedule
06.09.2014