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

Мне нужно обрабатывать намерения, опубликованные с помощью 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).

Iне знаю, что здесь означает «позднее», но 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);

Есть идеи о том, что мне не хватает?

1 Ответ

0 голосов
/ 04 сентября 2019

Вы можете попробовать эту рекомендацию.Кроме того, вы можете проверить разрешение AndroidManifest.xml на android.permission.BIND_JOB_SERVICE.

...