JobIntentService onHandleWork 无法正常工作
Posted
技术标签:
【中文标题】JobIntentService onHandleWork 无法正常工作【英文标题】:JobIntentService onHandleWork not working well 【发布时间】:2019-09-12 16:28:04 【问题描述】:我在 IntentJobServices / JobServices 中转换了我的所有 IntentServices / 服务,因此我的应用程序与所有安全策略兼容。
但是我在绑定和启动我的 JobIntentService 时遇到问题... 我需要启动 IntentJob 然后绑定到它,但是当我这样做时:
MyJobIntentService.enqueueWork(...)
只有我的“onBind”服务被调用,而“onHandleWork”永远不会被调用。
我尝试使用 JobIntentService 和 Context 的静态方法“enqueueWork”,但没有一个能正常工作... 此外,我在 *** 中阅读并测试了有关此问题的所有主题,但没有一个给我一个好的解决方案...
为了解决我的问题,我做了:
@Override @Nullable
public IBinder onBind(@NonNull Intent intent)
super.onBind(intent);
new Thread(
() -> onHandleWork(intent)
).start();
initMessageManager();
return this.mMessenger.getMsgReceiver().getBinder();
我的 JobIntentService 和 Binded Activity 都有一个 Messenger Sender 和 Receiver 来传达同步状态信息... 所以我必须将 IBinder 返回到我启动的 Service Messenger 到我的 Activity 中的 ServiceConnection,所以现在我这样做是为了让事情正常进行...... 但是,如果我的活动被杀死,绑定的活动有一个泄漏的 ServiceConnection,它会抛出一个异常并停止我的服务。 我正在尝试解决这个问题,也许我解决了这个问题,方法是在我的活动被破坏时解除绑定我的服务..
这是解决这个问题的好方法还是有更好的方法?
我个人不喜欢在 onBind 中启动线程,因为我的 onHandleWork 从未在 android 版本 >= 8.0 上调用过,在 Android 版本
谢谢,祝你编码愉快! :D 再见!
编辑:是的,很抱歉我的语法错误,但我在工作,我没有 给...关于那个xD无论如何“onPause”上的“unbind”或 “onDestroy”生命周期方法不起作用......因为当我调用 取消绑定服务停止工作,如果可能的话,我仍然需要它 运行..有什么建议吗?
他们会用 JobIntentService 解决这个问题吗???
【问题讨论】:
【参考方案1】:向上
实际上,我正在通过 Activity - Service 解决消息传递问题,方法是使用没有从 OnBind 方法返回的 IBinder 的 Messenger 实例,而是通过在启动服务的 Intent 中传递 Messenger 的实例。
但我更喜欢使用 onBind 方法来更改它,就像我对经典“服务”类所做的那样。 什么时候能解决?
【讨论】:
以上是关于JobIntentService onHandleWork 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章
JobIntentService 的 onDestroy 被调用后会发生啥?
JobIntentService 不调用 OnHandleWork
JobIntentService - onHandleWork 并不总是被调用?
JobIntentService 不会在 Android 8.0 上立即启动