mirror of https://github.com/tasks/tasks
Use android-job to schedule refresh
parent
ce89959c07
commit
70f64ee9e6
@ -1,32 +0,0 @@
|
||||
package org.tasks.jobs;
|
||||
|
||||
import android.content.Intent;
|
||||
import android.support.annotation.NonNull;
|
||||
import javax.inject.Inject;
|
||||
import org.tasks.analytics.Tracker;
|
||||
import org.tasks.injection.InjectingJobIntentService;
|
||||
import timber.log.Timber;
|
||||
|
||||
public abstract class Job extends InjectingJobIntentService {
|
||||
|
||||
@Inject Tracker tracker;
|
||||
|
||||
@Override
|
||||
protected void onHandleWork(@NonNull Intent intent) {
|
||||
super.onHandleWork(intent);
|
||||
|
||||
Timber.d("onHandleIntent(%s)", intent);
|
||||
|
||||
try {
|
||||
run();
|
||||
} catch (Exception e) {
|
||||
tracker.reportException(e);
|
||||
} finally {
|
||||
scheduleNext();
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract void run();
|
||||
|
||||
protected abstract void scheduleNext();
|
||||
}
|
@ -1,5 +0,0 @@
|
||||
package org.tasks.jobs;
|
||||
|
||||
public abstract class MidnightJob extends Job {
|
||||
|
||||
}
|
@ -1,41 +0,0 @@
|
||||
package org.tasks.jobs;
|
||||
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.support.v4.app.JobIntentService;
|
||||
import javax.inject.Inject;
|
||||
import org.tasks.LocalBroadcastManager;
|
||||
import org.tasks.injection.IntentServiceComponent;
|
||||
|
||||
public class MidnightRefreshJob extends MidnightJob {
|
||||
|
||||
public static final String TAG = "job_midnight_refresh";
|
||||
@Inject LocalBroadcastManager localBroadcastManager;
|
||||
@Inject JobManager jobManager;
|
||||
|
||||
@Override
|
||||
protected void run() {
|
||||
localBroadcastManager.broadcastRefresh();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void scheduleNext() {
|
||||
jobManager.scheduleMidnightRefresh();
|
||||
}
|
||||
|
||||
@Override
|
||||
protected void inject(IntentServiceComponent component) {
|
||||
component.inject(this);
|
||||
}
|
||||
|
||||
public static class Broadcast extends BroadcastReceiver {
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
JobIntentService
|
||||
.enqueueWork(context, MidnightRefreshJob.class, JobManager.JOB_ID_MIDNIGHT_REFRESH,
|
||||
intent);
|
||||
}
|
||||
}
|
||||
}
|
@ -1,40 +1,27 @@
|
||||
package org.tasks.jobs;
|
||||
|
||||
import android.content.BroadcastReceiver;
|
||||
import android.content.Context;
|
||||
import android.content.Intent;
|
||||
import android.support.v4.app.JobIntentService;
|
||||
import javax.inject.Inject;
|
||||
import android.support.annotation.NonNull;
|
||||
import com.evernote.android.job.Job;
|
||||
import org.tasks.LocalBroadcastManager;
|
||||
import org.tasks.injection.IntentServiceComponent;
|
||||
import org.tasks.scheduling.RefreshScheduler;
|
||||
|
||||
public class RefreshJob extends Job {
|
||||
|
||||
public static final String TAG = "job_refresh";
|
||||
@Inject RefreshScheduler refreshScheduler;
|
||||
@Inject LocalBroadcastManager localBroadcastManager;
|
||||
|
||||
@Override
|
||||
protected void inject(IntentServiceComponent component) {
|
||||
component.inject(this);
|
||||
}
|
||||
private final RefreshScheduler refreshScheduler;
|
||||
private final LocalBroadcastManager localBroadcastManager;
|
||||
|
||||
@Override
|
||||
protected void run() {
|
||||
localBroadcastManager.broadcastRefresh();
|
||||
RefreshJob(RefreshScheduler refreshScheduler, LocalBroadcastManager localBroadcastManager) {
|
||||
this.refreshScheduler = refreshScheduler;
|
||||
this.localBroadcastManager = localBroadcastManager;
|
||||
}
|
||||
|
||||
@NonNull
|
||||
@Override
|
||||
protected void scheduleNext() {
|
||||
protected Result onRunJob(@NonNull Params params) {
|
||||
localBroadcastManager.broadcastRefresh();
|
||||
refreshScheduler.scheduleNext();
|
||||
}
|
||||
|
||||
public static class Broadcast extends BroadcastReceiver {
|
||||
|
||||
@Override
|
||||
public void onReceive(Context context, Intent intent) {
|
||||
JobIntentService.enqueueWork(context, RefreshJob.class, JobManager.JOB_ID_REFRESH, intent);
|
||||
}
|
||||
return Result.SUCCESS;
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue