Andrew - Job scheduler

14
Job Manager & Scheduler Andrew Kurniadi Google Developer Expert

Transcript of Andrew - Job scheduler

Page 1: Andrew - Job scheduler

Job Manager &Scheduler

Andrew KurniadiGoogle Developer Expert

Page 2: Andrew - Job scheduler

Mau Buat Scheduled Task?(Task Terjadwal)

Page 3: Andrew - Job scheduler

Caranya?● Alarm Manager● JobScheduler● TimerTask

Page 4: Andrew - Job scheduler

Kenapa Job Scheduler?● Penghematan Baterai● Mengatasi network yang tidak stabil ● Bertahan dari Aplikasi Restart

Page 5: Andrew - Job scheduler

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

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

JobInfo

Page 8: Andrew - Job scheduler

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

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

API 21+Works on Lollipop and above only

Page 11: Andrew - Job scheduler

Alternatives

Page 12: Andrew - Job scheduler

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

Demo Timehttps://github.com/akurni/JobScheduler-Sample.git

Page 14: Andrew - Job scheduler

Terima Kasih@akurni