Tuesday, October 16, 2018

Scheduling Tasks WorkManager di Android

Fitur dari WorkManager

WorkManger memungkinkan Anda menetapkan batasan seperti koneksi jaringan, tingkat baterai minimum, status pengisian perangkat, kemacetan perangkat, dan tingkat penyimpanan. Pekerjaan akan dijalankan jika semua batasan yang ditentukan untuk itu terpenuhi.

Dengan WrokManger, Anda dapat membagi tugas-tugas yang berarti setelah menjalankan satu tugas, tugas selanjutnya dapat dikonfigurasi untuk dieksekusi dan kemudian yang berikutnya.

Tugas dapat melewati argumen dan dapat mengembalikan nilai.

Setup

Untuk menggunakan manajer kerja dalam proyek Anda, Anda perlu menambahkan ketergantungan berikut ke file build.gradle modul.

implementation 'android.arch.work:work-runtime:1.0.0-alpha09'

Langkah-langkah untuk menjadwalkan Tugas Menggunakan WorkManger

Berikut adalah langkah-langkah untuk membuat tugas dan menjadwalkannya menggunakan perpustakaan pekerja perpustakaan.

Pertama, kita perlu menciptakan kelas pekerja dengan memperluas Worker dan menerapkan metode doWork () yang berisi pekerjaan yang perlu dijalankan.

public class RefreshDataWorker extends Worker { @NonNull @Override public Worker.Result doWork() { Context context = getApplicationContext(); Log.d("RefreshDataWorker", "refreshing data...."); return Worker.Result.SUCCESS; } }

Kemudian buat permintaan kerja menggunakan pembuat permintaan kerja. Ada dua jenis permintaan pekerjaan yang dapat dibuat, OneTimeWorkRequest dan PeriodicWorkRequest. OneTimeWorkRequest digunakan untuk menjadwalkan tugas satu kali. PeriodicWorkRequest digunakan untuk menjadwalkan tugas berulang yang perlu dijalankan secara berkala.

Objek OneTimeWorkRequest dan PeriodicWorkRequest dapat dibuat menggunakan pembuat permintaan yang sesuai.

OneTimeWorkRequest refreshWork = new OneTimeWorkRequest.Builder(RefreshDataWorker.class) .build();

Kemudian dapatkan instance WorkManager dan antrekan permintaan kerja dengan memanggil enqueue () method di atasnya.

WorkManager.getInstance().enqueue(refreshCpnWork);

Anda dapat memanggil kode yang berisi implementasi untuk langkah-langkah yang disebutkan di atas dari penangan kejadian atau kapan setiap kali aplikasi Anda dimulai. Misalnya, Anda dapat memanggil dari ViewModel kode yang mengantre satu kali permintaan kerja.

Untuk tugas yang berulang, Anda perlu memastikan bahwa tugas periodik dijadwalkan satu kali pada perangkat. Setelah tugas periodik dijadwalkan dan aplikasi terbuka, itu akan berjalan setiap kali setelah selang waktu yang ditentukan berakhir. Anda dapat melihat bagaimana ini diimplementasikan dalam contoh.

Permintaan Kerja Berkala

Jika pekerjaan harus dijalankan setiap waktu setelah berakhirnya jangka waktu tertentu, PeriodicWorkRequest.Builder perlu digunakan untuk membuat permintaan kerja secara berkala. Pembangun pembangun mengambil interval berulang dan satuan waktu sebagai argumen.

Interval waktu minimum antara tayangan ulang tugas adalah 15 menit atau 900.000 detik.

PeriodicWorkRequest refreshWork = new PeriodicWorkRequest.Builder(RefreshDataWorker.class, 25, TimeUnit.MINUTES) .build();

Batasan Kerja

Batasan dapat diterapkan pada permintaan kerja untuk membuat pekerjaan berjalan hanya ketika kendala terpenuhi. Anda dapat menambahkan batasan untuk membuat pekerjaan hanya berjalan ketika perangkat menggunakan jenis jaringan tertentu, saat perangkat dalam keadaan idle, ketika perangkat sedang mengisi daya, ketika baterai perangkat memiliki tingkat pengisian minimum tertentu dan / atau ketika penyimpanan perangkat tidak rendah.

Anda dapat menggunakan Constraints.Builder untuk membuat objek Batasan. Ini menyediakan berbagai metode seperti setRequiredNetworkType, setRequiresBatteryNotLow, setRequiresCharging, setRequiresDeviceIdle dan setRequiresStorageNotLow untuk mendefinisikan batasan.

Untuk menerapkan batasan untuk bekerja, Batasan objek perlu ditambahkan ke pembuat permintaan kerja dengan memanggil metode setConstraints.

Constraints constraints = new Constraints.Builder() .setRequiresDeviceIdle(true) .setRequiresCharging(true) .setRequiredNetworkType(NetworkType.CONNECTED) .setRequiresBatteryNotLow(true) .setRequiresStorageNotLow(false) .build(); OneTimeWorkRequest refreshCpnWork = new OneTimeWorkRequest.Builder(RefreshWorker.class) .setConstraints(constraints) .build();


Share : Scheduling Tasks WorkManager di Android

Related Posts

Scheduling Tasks WorkManager di Android
4/ 5
Oleh

0 comments : Scheduling Tasks WorkManager di Android

0 comments : Scheduling Tasks WorkManager di Android