Write some Android demo code to Explore Android New technology , Black technology and Famous libraries...
- Explore JobScheduler on Android L
- Explore JobScheduler Support Library : Trigger
- Explore JobScheduler Support Library : JobSchedulerCompat
APK : Explore JobScheduler on Android L
APK : Explore JobScheduler Support Library : Trigger
APK : Explore JobScheduler Support Library : JobSchedulerCompat
notice:
- 1.Only supprot API-21.
- 2.should state "android.permission.BIND_JOB_SERVICE" in Manifest.
1.Get JobScheduler SystemService
JobScheduler jobScheduler = (JobScheduler) getSystemService(Context.JOB_SCHEDULER_SERVICE);
2.Set JobInfo builder
JobInfo.Builder builder = new JobInfo.Builder(1,
new ComponentName(getPackageName(), JobSchedulerService.class.getName()));
builder.setPeriodic( 3000 );
3.extends JobService,achieve onStartJob() & onStopJob().
public class JobSchedulerService extends JobService {
@Override
public boolean onStartJob(JobParameters params) {
mJobHanlder.sendMessage(Message.obtain(mJobHanlder, 1, params));
return false;
};
@Override
public boolean onStopJob(JobParameters params) {
mJobHanlder.removeMessages(1);
return false;
}
}
4.Cancel Job
jobScheduler.cancelAll();
JobScheduler is a good feature of Android Lollipop, but what a pity only Lollipop
A backport of Android Lollipop's JobScheduler to api 10+
Using the JobScheduler API on Android Lollipop
Implementing GCM Network Manager on Android
https://github.com/airk000/Trigger
notice:
- 1.supprot API14.
- 2.should state there permission in Manifest.
permission : ACCESS_NETWORK_STATE & WAKE_LOCK & RECEIVE_BOOT_COMPLETED
service : android:name="com.github.airk.trigger.TriggerLoop"
receiver : com.github.airk.trigger.PersistReceiver
1.Get Trigger Instance
Trigger trigger = Trigger.getInstance(TriggerActivity.this);
2.New A Job
Job job1 = new Job(new Action() {
@Override
protected void act() {
Toast.makeText(TriggerActivity.this, "btJob1", Toast.LENGTH_SHORT).show();
}
}).attachOn(ThreadSpace.BACKGROUND)
.repeat()
.withExtra(new Condition() {
@Override
public String[] getAction() {
return new String[]{CUSTOM_COND1};
}
});
3.Schedule Job
trigger.schedule(job1, job2, job3, persistAfterRebootJob);
https://github.com/evant/JobSchedulerCompat
notice:
- 1.supprot API10+.
- 2.should state there permission in Manifest.
permission : ACCESS_NETWORK_STATE & WAKE_LOCK & RECEIVE_BOOT_COMPLETED
service : android:name=".service.TestJobService"
1.Get JobScheduler Instance
JobScheduler jobScheduler=JobScheduler.getInstance(LowAPIJobSchedulerMainActivity.this);
2.Set JobInfo Builder
JobInfo job = new JobInfo.Builder(1,
new ComponentName(getPackageName(), LowAPIJobSchedulerService.class.getName()))
.setMinimumLatency(1000)
.setOverrideDeadline(2000)
.setRequiredNetworkType(JobInfo.NETWORK_TYPE_UNMETERED)
.setRequiresCharging(true)
.setExtras(extras).build();
jobScheduler.schedule(job);
3.extends JobService,achieve onStartJob() & onStopJob()
public class LowAPIJobSchedulerService extends JobService {
private Handler mJobHanlder = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
Toast.makeText(getApplicationContext(), "JobService task running", Toast.LENGTH_SHORT).show();
jobFinished((JobParameters) msg.obj, false);
return true;
}
});
/**
* Start your job in a seperate thread
* @param params
* @return
*/
@Override
public boolean onStartJob(JobParameters params) {
mJobHanlder.sendMessage(Message.obtain(mJobHanlder, 1, params));
return false;
}
/**
* Stop the running job, returing true if it needs to be recheduled.
* @param params
* @return
*/
@Override
public boolean onStopJob(JobParameters params) {
mJobHanlder.removeMessages(1);
return true;
}
}
4.Cancel Job
jobScheduler.cancelAll();