Диспетчер FirebaseJobDispatcher не запускается (SimpleJobService)

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

person rial    schedule 05.08.2020    source источник


Ответы (1)


job.gettag().equals(PERIODIC_JOB_TAG)

всегда возвращает false, что приводит к тому, что периодическое задание не выполняется. Я не уверен, почему это не работает, поскольку я не могу найти функцию gettag в JobParameters документация

person rial    schedule 05.08.2020