自定义JobIntentService onHandleWork未调用

Esh*_*aan 30 android jobservice android-8.0-oreo jobintentservice

我最近正在更新一个应用程序,我使用JobIntentService而不是常规的IntentService处理来自push的通知,因为它似乎是在棒棒糖前设备和帖子上处理此问题的正确方法.我这样排队工作:

JobIntentService

这是清单声明:

IntentService

我从未在onHandleWork中看到任何回调或在我的logcat中看到任何错误日志.是否有人成功整合了这可能有所帮助?

更新:我在api level 21设备上测试了它并且它工作..但它似乎没有在我的android O像素XL设备上调用..任何线索为什么?

更新#2:我似乎也看到了intentservice的onCreate被调用,但没有其他生命周期方法(包括onHandleWork).有人遇到过这个吗?

agi*_*llo 60

从IntentService升级到JobIntentService后,我遇到了同样的问题.确保从旧实现中删除此方法:

@Override
public IBinder onBind(Intent intent) {
    return null;
}
Run Code Online (Sandbox Code Playgroud)

对我来说,这解决了这个问题,现在它在奥利奥之前和之后都有效.

  • 谢谢!!你救了我的一天! (3认同)

Jul*_*ule 8

我遇到了同样的问题(在预O设备上工作正常,没有任何关于O设备上发生任何事情的迹象).今天,我再次尝试使用与昨​​天完全相同的代码,现在它可以工作 - 唯一的区别是我在两者之间重新启动了设备.

我目前的理论是我的初始设置不起作用; 我当前的那个,只是重新部署新代码并没有清除JobScheduler中的破坏状态; 重启或卸载/重新安装包.

现在正在运行的设置(从以前的IntentService迁移):

<service
    android:name=".MyJobIntentService"
    android:exported="false"
    android:permission="android.permission.BIND_JOB_SERVICE"/>
Run Code Online (Sandbox Code Playgroud)

并开始

Intent intent = new Intent(); 
intent.putExtra(EXTRA_NAME, extraValue);
JobIntentService.enqueueWork(context, MyJobIntentService.class, FIXED_JOB_ID, intent);
Run Code Online (Sandbox Code Playgroud)

请注意,intent 不是显式intent(即,未设置ComponentName).