JobIntentService onHandleWork не вызывается - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть скелетный класс JobIntentService

public class BackgroundRequestService extends JobIntentService {
/**
 * Unique job ID for this service.
 */
static final int JOB_ID = 1234;

public static void enqueueWork(Context context, Intent work) {
    BackgroundRequestService.enqueueWork(context, BackgroundRequestService.class, JOB_ID, work);
}


@Override
protected void onHandleWork(@NonNull Intent intent) {

    if (intent.getExtras() != null){
        String x = ";";
    }
}

}

Я включил Службу в манифест

 <service android:name=".BackgroundRequestService"
        android:enabled="true"
        android:permission="android.permission.BIND_JOB_SERVICE"
        android:exported="false" />

И вызвал соответствующий метод enqueue

Intent intent = new Intent();
        intent.putExtra("hardware", hardware);
        BackgroundRequestService.enqueueWork(context, intent);

Но onHandleWork никогда не вызывают.Я просмотрел все страницы о том, как правильно настроить сервисы и убедиться, что onBind не переопределяется, но это все еще не работает, интересно, обнаружит ли другой набор глаз что-то, что я пропустил.Спасибо

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

Обнаружил проблему при правильном просмотре Logcat.

Оказывается, что на "оборудовании", которое я вкладывал в свое намерение, отсутствует поле для сериализации.

Это вызвало это сообщениепоявиться в Logcat

I/UDP: no longer listening for UDP broadcasts cause of error Parcelable encountered IOException writing serializable object (name = Project.Hardware)

После исправления этой проблемы с сериализацией я смог вызвать метод onHandleWork ().

0 голосов
/ 13 декабря 2018

Попробуйте запустить сервис следующим образом:

 ComponentName comp = new ComponentName(context.getPackageName(), BackgroundRequestService.class.getName());
 BackgroundRequestService.enqueueWork(context, (getIntent().setComponent(comp)));
...