andrew - job scheduler
TRANSCRIPT
![Page 1: Andrew - Job scheduler](https://reader034.vdokumen.com/reader034/viewer/2022042520/5872a0361a28ab07208b58dd/html5/thumbnails/1.jpg)
Job Manager &Scheduler
Andrew KurniadiGoogle Developer Expert
![Page 2: Andrew - Job scheduler](https://reader034.vdokumen.com/reader034/viewer/2022042520/5872a0361a28ab07208b58dd/html5/thumbnails/2.jpg)
Mau Buat Scheduled Task?(Task Terjadwal)
![Page 3: Andrew - Job scheduler](https://reader034.vdokumen.com/reader034/viewer/2022042520/5872a0361a28ab07208b58dd/html5/thumbnails/3.jpg)
Caranya?● Alarm Manager● JobScheduler● TimerTask
![Page 4: Andrew - Job scheduler](https://reader034.vdokumen.com/reader034/viewer/2022042520/5872a0361a28ab07208b58dd/html5/thumbnails/4.jpg)
Kenapa Job Scheduler?● Penghematan Baterai● Mengatasi network yang tidak stabil ● Bertahan dari Aplikasi Restart
![Page 5: Andrew - Job scheduler](https://reader034.vdokumen.com/reader034/viewer/2022042520/5872a0361a28ab07208b58dd/html5/thumbnails/5.jpg)
Ciri-Ciri Task Yang Cocok● Tidak mempunyai UI● Butuh akses ke Network atau Wifi● Bisa dijalankan bersamaan● Timing tidak penting● Device dalam keadaan charging
![Page 6: Andrew - Job scheduler](https://reader034.vdokumen.com/reader034/viewer/2022042520/5872a0361a28ab07208b58dd/html5/thumbnails/6.jpg)
Jobpublic class TestJobService extends JobService {
@Override
public boolean onStartJob(JobParameters params) {
// Do some work
return true;
}
@Override
public boolean onStopJob(JobParameters params) {
Log.i(TAG, "on stop job: " + params.getJobId());
return true;
}
}
![Page 7: Andrew - Job scheduler](https://reader034.vdokumen.com/reader034/viewer/2022042520/5872a0361a28ab07208b58dd/html5/thumbnails/7.jpg)
JobInfo
![Page 8: Andrew - Job scheduler](https://reader034.vdokumen.com/reader034/viewer/2022042520/5872a0361a28ab07208b58dd/html5/thumbnails/8.jpg)
JobInfoJobInfo.Builder: mendefinisikan kondisi dimana Task/Job tersebut harus berjalan
● Device sedang dalam keadaan charging● Device sedang idle● Device sedang terkoneksi wifi● Set deadline tertentu● Jalan dalam jam tertentu● Delay tertentu
![Page 9: Andrew - Job scheduler](https://reader034.vdokumen.com/reader034/viewer/2022042520/5872a0361a28ab07208b58dd/html5/thumbnails/9.jpg)
JobInfoJobInfo.Builder builder = new JobInfo.Builder(JOB_ID,mServiceComponent);
builder.setMinimumLatency(1000);
builder.setOverrideDeadline(5000);
builder.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED);
builder.setRequiresDeviceIdle(true);
builder.setRequiresCharging(true);
JobScheduler jobScheduler =
(JobScheduler) getApplication().getSystemService(Context.
JOB_SCHEDULER_SERVICE);
// Schedule the job
jobScheduler.schedule(builder.build());
![Page 10: Andrew - Job scheduler](https://reader034.vdokumen.com/reader034/viewer/2022042520/5872a0361a28ab07208b58dd/html5/thumbnails/10.jpg)
API 21+Works on Lollipop and above only
![Page 11: Andrew - Job scheduler](https://reader034.vdokumen.com/reader034/viewer/2022042520/5872a0361a28ab07208b58dd/html5/thumbnails/11.jpg)
Alternatives
![Page 12: Andrew - Job scheduler](https://reader034.vdokumen.com/reader034/viewer/2022042520/5872a0361a28ab07208b58dd/html5/thumbnails/12.jpg)
Alternatives● Android Job - https://github.com/evernote/android-job● GCM Network Manager - https://developers.google.com/cloud-
messaging/network-manager
![Page 13: Andrew - Job scheduler](https://reader034.vdokumen.com/reader034/viewer/2022042520/5872a0361a28ab07208b58dd/html5/thumbnails/13.jpg)
Demo Timehttps://github.com/akurni/JobScheduler-Sample.git
![Page 14: Andrew - Job scheduler](https://reader034.vdokumen.com/reader034/viewer/2022042520/5872a0361a28ab07208b58dd/html5/thumbnails/14.jpg)
Terima Kasih@akurni