【发布时间】:2020-08-05 14:21:13
【问题描述】:
我有一个作业应该通过网络操作更新 sqlitedatabase,该操作在 recyclerview 中观察到,但它似乎没有工作。我已经打开和关闭了应用程序来测试这个并且两者都不起作用。任何意见表示赞赏
EarthquakeUpdateJobService.java
public class EarthquakeUpdateJobService extends SimpleJobService {
private static final String TAG = "EarthquakeUpdateJob ";
private static final String UPDATE_JOB_TAG = "update_job";
private static final String PERIODIC_JOB_TAG = "periodic_job";
public static void scheduleUpdateJob(Context context) {
FirebaseJobDispatcher jobDispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(context));
jobDispatcher.schedule(jobDispatcher.newJobBuilder().setTag(UPDATE_JOB_TAG).setService(EarthquakeUpdateJobService.class).setConstraints(Constraint.ON_ANY_NETWORK).build());
}
@Override
public int onRunJob(JobParameters job) {
// connect to internet, parse xml, update sqlite table
scheduleNextUpdate(this, job);
return RESULT_SUCCESS;
}
private void scheduleNextUpdate(Context context, JobParameters job) {
if(job.getTag().equals(PERIODIC_JOB_TAG)) {
SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(context);
int updateFreq = Integer.parseInt(sharedPreferences.getString(PreferenceActivity.PREF_UPDATE_FREQ, "60"));
boolean autoUpdateChecked = sharedPreferences.getBoolean(PreferenceActivity.PREF_AUTO_UPDATE, false);
if(autoUpdateChecked) {
FirebaseJobDispatcher jobDispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(context));
jobDispatcher.schedule(jobDispatcher.newJobBuilder().setTag(PERIODIC_JOB_TAG).setService(EarthquakeUpdateJobService.class).setConstraints(Constraint.ON_ANY_NETWORK).setReplaceCurrent(true).setRecurring(true).setTrigger(Trigger.executionWindow(updateFreq*60 /2, updateFreq * 60)).setLifetime(Lifetime.FOREVER).build());
}
}
}
}
androidManifest.xml
<service android:name=".EarthquakeUpdateJobService" android:exported="true">
<intent-filter>
<action android:name="com.firebase.jobdispatcher.ACTION_EXECUTE" />
</intent-filter>
</service>
【问题讨论】:
标签: android android-service android-jobscheduler firebase-job-dispatcher