У меня есть задание, которое должно обновлять базу данных sqlited через сетевую операцию, которая наблюдается в 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>