Biasanya ketika saya membuat layanan Android saya menerapkan onCreate
metode ini, tetapi dalam proyek terakhir saya ini tidak berhasil. Saya mencoba menerapkan onStartCommand
, dan ini tampaknya berhasil.
Pertanyaannya adalah: ketika saya harus menerapkan layanan metode mana yang diperlukan? Metode apa yang harus saya terapkan? onCreate
,, onStartCommand
atau keduanya? Dan apa peran masing-masing?
android
android-service
oncreate
GVillani82
sumber
sumber
onCreate
selalu dipanggil terlepasJawaban:
onCreate()
dipanggil saatService
objek dibuat instance-nya (yaitu: saat layanan dibuat ). Anda harus melakukan hal-hal dalam metode ini yang perlu Anda lakukan hanya sekali (yaitu: menginisialisasi beberapa variabel, dll.).onCreate()
hanya akan dipanggil sekali per objek yang dibuat instance-nya .Anda hanya perlu menerapkan
onCreate()
jika Anda benar-benar ingin / perlu menginisialisasi sesuatu hanya sekali .onStartCommand()
dipanggil setiap kali klien memulai layanan menggunakanstartService(Intent intent)
. Ini berartionStartCommand()
dapat dipanggil beberapa kali. Anda harus melakukan hal-hal dalam metode ini yang diperlukan setiap kali klien meminta sesuatu dari layanan Anda. Ini sangat tergantung pada apa yang dilakukan layanan Anda dan bagaimana layanan itu berkomunikasi dengan klien (dan sebaliknya).Jika Anda tidak menerapkannya,
onStartCommand()
Anda tidak akan bisa mendapatkan informasi apa pun dariIntent
yang diteruskan oleh klienonStartCommand()
dan layanan Anda mungkin tidak dapat melakukan pekerjaan yang berguna.sumber
startService()
, jika layanan tidak berjalan, Android akan membuat instance kelas layanan (ini adalah objek layanan) dan kemudian akan memanggilonCreate()
objek tersebut. Itu kemudian akan memanggilonStartCommand()
objek itu. Jika, suatu saat nanti, Anda memanggil lagistartService()
, jika layanan masih berjalan, Android tidak akan membuat objek layanan baru. Sebaliknya, itu hanya akan memanggilonStartCommand()
objek layanan yang ada. Apakah itu jelas?dan kapan pun
service
dipanggil menggunakan startService .onStartCommand
akan dipanggil. dan Anda dapat melakukan tindakan apa pun. seperti untuk pemutar musik, Anda dapat memutar, menjeda, berhenti menggunakan tindakanDan Anda melakukan apa pun
operation in service
dengan mengirimkan tindakan dan menerimanya dionStartCommand
onCreate
bekerja seperti seorang Pembuat.Edit Singkat
onCreate()
panggilan hanya untuk pertama kali Anda memulaiService
SedangkanonStartCommand()
panggilan setiap kali Anda meneleponstartService
lagi. Ini memungkinkan Anda mengatur tindakan seperti putar, hentikan, jeda musik.sumber