Как передать обратный вызов в JobService? - PullRequest
0 голосов
/ 21 ноября 2018

Я использую Firebase JobDispatcher для Android, чтобы запланировать JobService.Мне нужно сообщить UI для обновлений.Как я могу передать обратный вызов в JobService?

Мой класс диспетчера работы

public class JobDispatcher {
private static final String REFRESH_ARTICLES_TAG = "refresh_articles";


private static FirebaseJobDispatcher firebaseJobDispatcher;

private JobDispatcher() {
}

public static void init(Context context) {
    firebaseJobDispatcher = new FirebaseJobDispatcher(new GooglePlayDriver(context));
}

private static FirebaseJobDispatcher getDispatcher(Context context) {
    if (firebaseJobDispatcher == null)
        init(context);

    return firebaseJobDispatcher;
}


public static void scheduleRefreshArticles(Context context, RequestCallbacks callbacks) {
    Class<RefreshItemsJobService> refreshItemsJobServiceClass = RefreshItemsJobService.class;
    Bundle args = new Bundle ();
    //args.putSerializable(RefreshItemsJobService.KEY_CALLBACKS, callbacks);
    Job sendNotificationJob = getDispatcher(context).newJobBuilder()
            .setService((RefreshItemsJobService.class))
            .setTag(REFRESH_ARTICLES_TAG)
            .setLifetime(Lifetime.UNTIL_NEXT_BOOT)
            .setRecurring(true)
            .setTrigger(Trigger.executionWindow(10, 20))
            .setReplaceCurrent(true)
            .setRetryStrategy(RetryStrategy.DEFAULT_LINEAR)
            .setConstraints(Constraint.ON_ANY_NETWORK)
            //.setExtras(args)
            .build();

    getDispatcher(context).schedule(sendNotificationJob);
}

public static void stopRefreshArticles(Context context) {
    getDispatcher(context).cancel(REFRESH_ARTICLES_TAG);
}

}

и моя служба работы

public class RefreshItemsJobService extends JobService {

public final static String KEY_CALLBACKS = "callbacks";

private RequestCallbacks callbacks;

@Override
public boolean onStartJob(JobParameters job) {
    Log.e("job_refresh", "started");
    callbacks = (RequestCallbacks) job.getExtras().getSerializable(KEY_CALLBACKS);
        if (callbacks != null)
            Api.checkForNewArticles(callbacks);
    return false;
}

@Override
public boolean onStopJob(JobParameters job) {
    return true;
}

}

Я пытаюсь передать обратные вызовы по пакетам, но это вызывает исключение, которое можно было бы перегрузить.

...