immediate false (.. ). , immediate , .
onStartJob() . ( .)
, , URI . "*/DCIM/*". ( .)
Android , , . , , reset.
public class ZNJobService extends JobService {
final Handler workHandler = new Handler();
Runnable workRunnable;
public static void registerJob(Context context, boolean immediate) {
final JobInfo jobInfo = createJobInfo(context, immediate);
final JobScheduler js = context.getSystemService(JobScheduler.class);
final int result = js.schedule(jobInfo);
if (result == JobScheduler.RESULT_SUCCESS) {
log.INFO(" JobScheduler OK");
} else {
log.ERROR(" JobScheduler fails");
}
}
private static JobInfo createJobInfo(Context context, boolean immediate) {
final JobInfo.Builder b =
new JobInfo.Builder(
ZNJOBSERVICE_JOB_ID, new ComponentName(context, ZNJobService.class));
b.addTriggerContentUri(
new JobInfo.TriggerContentUri(
MediaStore.Images.Media.INTERNAL_CONTENT_URI,
JobInfo.TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS));
b.addTriggerContentUri(
new JobInfo.TriggerContentUri(
MediaStore.Images.Media.EXTERNAL_CONTENT_URI,
JobInfo.TriggerContentUri.FLAG_NOTIFY_FOR_DESCENDANTS));
if (immediate) {
b.setTriggerContentUpdateDelay(1);
b.setTriggerContentMaxDelay(100);
} else {
b.setTriggerContentUpdateDelay(15 * 60 * 1000);
b.setTriggerContentMaxDelay(2 * 60 * 60 * 1000);
}
return b.build();
}
@Override
public boolean onStartJob(final JobParameters params) {
log.INFO("onStartJob");
if (params.getTriggeredContentAuthorities() != null && params.getTriggeredContentUris() != null) {
workRunnable = new Runnable() {
@Override
public void run() {
yourMethod(params.getTriggeredContentUris());
jobFinished(params, false);
scheduleJob(ZNJobService.this, false);
}};
Postal.ensurePost(workHandler, workRunnable);
return true;
}
scheduleJob(this, false);
return false;
}
@Override
public boolean onStopJob(final JobParameters params) {
if (workRunnable != null) {
workHandler.removeCallbacks(workRunnable);
workRunnable = null;
}
return false;
}
private static void yourMethod(Uri[] uris) {
for (Uri uri : uris) {
log.INFO("JobService Uri=%s", uri.toString());
}
}
}