Apa perbedaan antara Layanan, Async, Tugas & Utas. Jika saya tidak salah semuanya digunakan untuk melakukan beberapa hal di latar belakang. Jadi, bagaimana memutuskan mana yang akan digunakan dan kapan?
android
android-asynctask
android-service
java-threads
SpunkerBaba
sumber
sumber
Jawaban:
Mungkin Anda sudah membaca deskripsi dokumentasi tentang mereka, saya tidak akan mengulanginya, sebaliknya saya akan mencoba memberikan jawaban dengan kata-kata saya sendiri, semoga mereka akan membantu Anda.
Layanan seperti Kegiatan tetapi tidak memiliki antarmuka pengguna. Mungkin jika Anda ingin mengambil cuaca misalnya, Anda tidak akan membuat aktivitas kosong untuk itu, karena ini Anda akan menggunakan Layanan.
Thread adalah Thread, mungkin Anda sudah tahu dari bagian lain. Anda perlu tahu bahwa Anda tidak dapat memperbarui UI dari Thread. Anda perlu menggunakan Handler untuk ini, tetapi baca lebih lanjut.
AsyncTask adalah Thread cerdas yang disarankan untuk digunakan. Cerdas karena dapat membantu dengan metode itu, dan ada tiga metode yang berjalan di utas UI, yang bagus untuk memperbarui komponen UI.
Saya sering menggunakan Layanan, AsyncTasks. Kurangi utas, atau tidak sama sekali, karena saya dapat melakukan hampir semua hal dengan AsyncTask.
sumber
Ini adalah jawaban termudah untuk pertanyaan Anda
Benang
adalah unit eksekusi yang menjalankan "paralel" ke utas utama adalah poin penting, Anda tidak dapat memperbarui komponen UI dari utas apa pun di sini kecuali utas utama.
AsyncTask
adalah utas khusus, yang memberi Anda metode pembantu untuk memperbarui UI sehingga pada dasarnya Anda dapat memperbarui UI bahkan AsyncTask akan berjalan pada utas latar belakang. Penanganan komunikasi antarproses tidak perlu dilakukan secara eksplisit.
Layanan
pecahkan masalah di atas karena ia hidup terpisah dari aktivitas yang memanggilnya sehingga ia dapat terus berjalan bahkan ketika aktivitas dihancurkan, ia berjalan di Main Thread (waspadalah terhadap ANR) menggunakan layanan latar belakang (memperpanjang IntentService itu membuat thread pekerja secara otomatis untukmu) . Layanan seperti aktivitas tanpa UI , bagus untuk tugas panjang
sumber
Beberapa informasi lebih lanjut saya berharap seseorang mengatakan kepada saya beberapa hari yang lalu:
Kasus penggunaan saya adalah seperti ini: Saya memiliki satu utas di ruang global yang terhubung ke server dan Kegiatan yang menunjukkan hasilnya. Saat pengguna menekan tombol beranda, Kegiatan beralih ke latar belakang dan Layanan baru dimulai. Layanan ini kemudian membaca hasil dari utas dan menampilkan informasi di area notifikasi ketika diperlukan. Saya tidak khawatir tentang OS yang menghancurkan Aktivitas saya karena saya tahu bahwa selama Layanan berjalan tidak akan merusak utas.
sumber
Singkatnya, Layanan untuk
time consuming tasks
, AsyncTask untukshort-lived tasks
, Utas adalahstandard java construction
untuk utas.sumber
Dari perspektif pengembang:
Utas : Digunakan untuk mengeksekusi kode yang diset ke pararel ke utas utama. Tetapi Anda tidak dapat menangani UI di dalam utas. Untuk itu perlu Anda gunakan
Handler
. Hadler bekerja seperti utas tetapi dapat menangani UI juga.ASyncTask : Digunakan untuk menangani tugas-tugas yang tidak dapat Anda lakukan untuk bekerja pada utas utama. Sebagai contoh, permintaan HTTP adalah pekerjaan yang sangat berat yang tidak dapat ditangani pada utas utama, sehingga Anda menangani permintaan HTTP dalam
ASyncTask
Ini berfungsi secara paralel dengan utas utama Anda secara serempak di latar belakang. Ia memiliki beberapa metode panggilan balik yang digunakan pada korespondensi mereka. acaraLayanan : Merupakan proses latar belakang. Ini digunakan ketika Anda harus melakukan beberapa pemrosesan yang tidak memiliki UI yang terkait dengannya.
sumber
Service
tidak akan perlu dijalankan di latar belakang kecuali Anda menggunakanIntentService
. Jika Anda memulai standarService
dari UiThread, itu akan berjalan pada UiThread.Service
tidak akan berjalan dalam proses yang berbeda secara default, tetapi dalam proses aplikasi dengan komponen lainnya. Lebih baik mengatakan bahwa ituService
akan berjalan di Background of the Thread yang hidup di dalamnya.layanan seperti aktivitas yang memakan waktu lama, tetapi tugas Async memungkinkan kita untuk melakukan operasi lama / latar belakang dan menunjukkan hasilnya pada utas UI tanpa harus memanipulasi utas.
sumber