Tuesday, October 22, 2019

Memperkenalkan WorkManager



Ada banyak pertimbangan dan praktik terbaik untuk menangani pekerjaan latar belakang, yang diuraikan dalam seri entri blog Google Power. Salah satu hal yang berulang kali disebut adalah library Android Jetpack yang disebut WorkManager, yang memperluas kemampuan API framework JobScheduler dan mendukung Android 4.0+ (API 14+). WorkManager beta baru saja dirilis hari ini!
Entri blog ini adalah yang pertama dari seri baru WorkManager. Kita akan menjelajahi dasar-dasar WorkManager, bagaimana dan kapan waktu yang tepat menggunakannya, dan apa yang terjadi di balik layar. Kemudian kita akan membahas kasus penggunaan yang lebih kompleks.

Apa yang dimaksud dengan WorkManager?
WorkManager adalah salah satu Komponen Arsitektur Android dan merupakan bagian dari Android Jetpack, sebuah cara baru dan ringkas dalam cara membangun aplikasi Android modern.

WorkManager adalah library Android yang menjalankan pekerjaan latar belakang yang dapat ditangguhkan saat batasan pekerjaan terpenuhi.

WorkManager ditujukan untuk tugas-tugas yang membutuhkan jaminan bahwa sistem akan menjalankannya bahkan bila aplikasi ditutup.

Dengan kata lain, WorkManager menyediakan API ramah-baterai yang merangkum evolusi bertahun-tahun dari pembatasan perilaku latar belakang Android. Ini sangat penting untuk aplikasi Android yang perlu menjalankan tugas latar belakang!

Kapan waktu yang tepat menggunakan WorkManager
WorkManager menangani pekerjaan latar belakang yang perlu dijalankan ketika berbagai batasan terpenuhi, terlepas dari apakah proses aplikasi tersebut aktif atau tidak. Pekerjaan latar belakang bisa dimulai saat aplikasi berada di latar belakang, saat aplikasi berada di latar depan, atau saat aplikasi dimulai di latar depan tetapi beralih ke latar belakang. Apa pun yang dilakukan aplikasi, pekerjaan latar belakang harus terus dijalankan, atau dimulai ulang bila Android mematikan prosesnya.

Salah satu kekeliruan umum tentang WorkManager adalah bahwa ia diperuntukkan bagi tugas yang perlu dijalankan di thread “latar belakang” tetapi tidak perlu bertahan dari penutupan prosesnya. Bukan itu masalahnya. Ada solusi lain untuk kasus penggunaan ini seperti coroutines Kotlin, ThreadPools, atau library seperti RxJava. Anda bisa menemukan informasi selengkapnya tentang kasus penggunaan ini dalam panduan pemrosesan latar belakang.

Ada banyak situasi berbeda ketika Anda perlu menjalankan pekerjaan latar belakang, dan karena itu Anda membutuhkan solusi berbeda untuk menjalankan pekerjaan latar belakang. Entri blog tentang pemrosesan latar belakang ini menyediakan banyak informasi keren tentang kapan waktu yang tepat menggunakan WorkManager. Lihatlah diagram berikut yang bersumber dari blog:



Diagram dari Modern background execution in Android
Dalam kasus WorkManager, ia cocok digunakan untuk pekerjaan latar belakang yang harus diselesaikan dan dapat ditangguhkan.

Untuk memulai, tanyakan pada diri Anda sendiri:
Apakah tugas ini harus diselesaikan?

Jika aplikasi ditutup pengguna, apakah ia masih harus menyelesaikan tugas? Contohnya adalah aplikasi catatan dengan sinkronisasi jarak jauh; setelah Anda selesai menulis catatan, Anda tentu berharap aplikasi akan menyinkronkan catatan dengan server backend. Semuanya ini tetap berjalan bahkan bila Anda beralih ke aplikasi lain dan OS harus menutup aplikasi tersebut untuk mendapatkan kembali sebagian memori. Ini juga harus tetap berjalan bahkan bila Anda memulai ulang perangkat. WorkManager memastikan tugas diselesaikan.

Apakah tugas ini dapat ditangguhkan?
Bisakah kita menjalankannya nanti, atau ini hanya berguna jika tugas dijalankan sekarang? Jika tugas bisa dijalankan nanti, berarti tugasnya dapat ditangguhkan. Kembali ke contoh sebelumnya, tentu sangat menyenangkan jika catatan Anda langsung segera diupload, tetapi bila ini tidak memungkinkan dan sinkronisasi terjadi belakangan, itu bukanlah masalah besar. WorkManager menghormati pembatasan latar belakang OS dan mencoba menjalankan pekerjaan Anda dengan penggunaan baterai seefisien mungkin.

Jadi, sebagai panduan, WorkManager ditujukan untuk tugas-tugas yang membutuhkan jaminan bahwa sistem akan menjalankannya, bahkan bila aplikasi ditutup. WorkManager tidak ditujukan untuk pekerjaan latar belakang yang membutuhkan eksekusi segera atau pada waktu yang tepat. Jika Anda membutuhkan agar sebuah pekerjaan dieksekusi pada waktu yang tepat (seperti jam alarm, atau pengingat acara), gunakan AlarmManager. Untuk pekerjaan yang harus dieksekusi dengan segera tetapi berjalan lama, sering kali Anda harus memastikan bahwa pekerjaan dieksekusi saat berada di latar depan; apakah itu dengan membatasi eksekusi ke latar depan (dalam hal ini, pekerjaan tersebut tidak lagi berjalan sebagai pekerjaan latar belakang) atau menggunakan Foreground Service.

WorkManager bisa dan sebaiknya dipasangkan dengan API lain saat Anda perlu memicu beberapa pekerjaan latar belakang dalam skenario yang lebih kompleks:

Jika server Anda memicu pekerjaan, WorkManager bisa dipasangkan dengan Firebase Cloud Messaging.

Jika Anda mendengarkan siaran menggunakan penerima siaran dan kemudian perlu memicu pekerjaan yang berjalan lama, Anda bisa menggunakan WorkManager. Perhatikan bahwa WorkManager menyediakan dukungan untuk banyak Constraints umum yang biasanya datang sebagai siaran — dalam kasus ini, Anda tidak perlu mendaftarkan penerima siaran Anda sendiri.

Mengapa menggunakan WorkManager?
WorkManager menjalankan pekerjaan latar belakang sembari menangani masalah kompatibilitas dan menjalankan praktik terbaik bagi baterai dan kesehatan sistem untuk Anda.

Selain itu, dengan menggunakan WorkManager, Anda bisa menjadwalkan tugas periodik dan rantai tugas dependen yang kompleks: pekerjaan latar belakang dapat dieksekusi secara paralel atau berurutan, dan Anda bisa menetapkan urutan eksekusi. WorkManager menangani input dan output antar tugas dengan lancar.

Anda juga bisa menetapkan kriteria mengenai kapan tugas latar belakang harus dijalankan. Misalnya, tidak ada alasan untuk membuat permintaan HTTP ke server jarak jauh jika perangkat tidak memiliki sambungan jaringan. Jadi, Anda bisa menetapkan Constraint bahwa suatu tugas hanya dapat dijalankan ketika terdapat sambungan jaringan.

Sebagai bagian dari eksekusi terjamin, WorkManager mengelola seluruh pekerjaan Anda bila perangkat dimulai ulang dan proses dihentikan secara paksa. Anda juga bisa dengan mudah menentukan strategi coba lagi jika pekerjaan Anda dihentikan dan Anda ingin mencobanya lagi nanti.

  • Yang terakhir, WorkManager memungkinkan Anda mengawasi status permintaan pekerjaan sehingga Anda bisa mengupdate UI.
  • Sebagai ringkasan, WorkManager menawarkan keuntungan berikut:
  • Menangani kompatibilitas dengan berbagai versi OS
  • Mengikuti praktik terbaik kesehatan sistem
  • Mendukung tugas tidak bersamaan dan tugas periodik
  • Mendukung tugas berantai dengan input/output
  • Anda bisa menyetel batasan kapan tugas dijalankan
  • Menjamin eksekusi tugas, bahkan bila aplikasi atau perangkat dimulai ulang

Mari kita lihat contoh konkretnya di mana kita membangun pipeline tugas bersamaan yang menerapkan filter ke sebuah gambar. Hasilnya kemudian dikirim ke tugas compress dan kemudian ke tugas upload.

Kita bisa menetapkan serangkaian batasan untuk tugas-tugas ini dan menentukan kapan mereka dapat dieksekusi:



Contoh rantai tugas dengan batasan
Semua pekerja ini menetapkan urutan yang tepat: mis. kita tidak tahu urutan pemfilteran gambar, tetapi kita tahu bahwa pekerja Compress hanya akan mulai setelah semua pekerja Filter selesai.

Cara kerja penjadwal WorkManager
Untuk memastikan kompatibilitas mundur ke API level 14, WorkManager memilih cara yang tepat untuk menjadwalkan tugas latar belakang bergantung pada API level perangkat. WorkManager bisa menggunakan JobScheduler atau kombinasi dari BroadcastReceiver dan AlarmManager.



Bagaimana WorkManager menentukan penjadwal yang akan digunakan
Apakah WorkManager siap digunakan untuk produksi?

WorkManager sekarang dalam versi beta. Ini berarti bahwa tidak akan ada perubahan yang merusak API dalam revisi utama ini.

Ketika WorkManager versi stabil sudah dirilis, WorkManager akan menjadi cara yang disukai untuk menjalankan tugas latar belakang. Karena alasan ini, sekaranglah saat yang tepat untuk mulai menggunakan WorkManager dan membantu mengembangkannya!

lihat selengkap nya disini https://developers-id.googleblog.com/2019/01/memperkenalkan-workmanager.html

Share : Memperkenalkan WorkManager

Related Posts

Memperkenalkan WorkManager
4/ 5
Oleh

0 comments : Memperkenalkan WorkManager

0 comments : Memperkenalkan WorkManager