onHandleWork() не вызывается в JobIntentService
Мне нужно обрабатывать намерения, опубликованные с помощью AlarmManager, как во время работы моего приложения, так и во время загрузки. Я написал подкласс JobIntentService для обработки намерений, но он не работает должным образом: onHandleWork не вызывается.
Моя реализация работала, когда обработчик был IntentService, за исключением времени загрузки из-за ограничений на фоновые службы. Поэтому я пытаюсь использовать JobIntentService вместо этого.
public class MyJobIntentService extends JobIntentService
{
public int onStartCommand(@Nullable Intent intent, int flags, int startId)
{
// This gets called with the intent given to AlarmManager
return super.onStartCommand(intent, flags, startId);
}
public static void enqueueWork(Context context, Intent work)
{
// Not called
enqueueWork(context, NotificationService.class, JOB_ID, work);
}
public void onHandleWork(@NonNull Intent intent)
{
// Not called
...
}
// No other methods overridden
}
onStartCommand вызывается. В документации сказано, что этот метод:
Обрабатывает команды запуска при запуске в качестве службы pre-O, ставя их в очередь для последующей отправки в onHandleWork(Intent).
Я не знаю, что здесь означает "позже", но onHandleWork фактически не вызывается, хотя onStartCommand был вызван с ожидаемым намерением.
Я прочитал ответы на подобные вопросы и убедился, что я не переопределяю другие методы. Я также создал запись манифеста для службы, которая, как я полагаю, является правильной, иначе onStartCommand не будет вызываться.
Вот как я создаю PendingIntent, используемый с AlarmManager:
Intent myIntent = new Intent( myContext, MyJobIntentService.class);
...
PendingIntent pendingIntent = PendingIntent.getService( mContext, 0, myIntent, PendingIntent.FLAG_UPDATE_CURRENT);
myAlarmManager.set(AlarmManager.ELAPSED_REALTIME_WAKEUP, futureInMillis, pendingIntent);
Есть идеи о том, что мне не хватает?
0 ответов
Вы можете попробовать эту рекомендацию. Кроме того, вы можете проверить свой AndroidManifest.xml наandroid.permission.BIND_JOB_SERVICE
разрешение.