首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >JobIntentService onHandleWork工作不好

JobIntentService onHandleWork工作不好
EN

Stack Overflow用户
提问于 2019-04-23 13:09:33
回答 1查看 740关注 0票数 0

我在IntentJobServices / JobServices中转换了所有的IntentJobServices/服务,这样我的应用程序就可以兼容所有的安全策略。

但是我有一个问题要绑定并启动我的JobIntentService.我需要启动IntentJob,然后绑定到它,但是当我这样做时:

代码语言:javascript
复制
MyJobIntentService.enqueueWork(...)

只有我的'onBind‘服务会被调用,而'onHandleWork’永远不会被调用。

我尝试了静态方法"enqueueWork“的JobIntentService和我的上下文,但没有一个正确的工作.此外,我阅读并测试了这里关于这个问题的所有主题,但是没有一个给我一个好的解决方案.

为了解决我的问题我做了:

代码语言:javascript
复制
@Override @Nullable
public IBinder onBind(@NonNull Intent intent) {
    super.onBind(intent);
    new Thread(
        () -> onHandleWork(intent)
    ).start();
    initMessageManager();
    return this.mMessenger.getMsgReceiver().getBinder();
}

我的JobIntentService和绑定活动都有一个Messenger发件人和接收器来通信同步状态信息.因此,在我的活动中,我必须将IBinder返回到我发起的服务的信使到ServiceConnection,所以现在我这样做是为了让事情正常工作。但是,如果我的活动被终止,绑定的活动有一个泄漏的ServiceConnection,它会抛出一个异常并停止我的服务。我正试图解决这个问题,也许我是通过在我的活动被破坏时解除我的服务来解决这个问题的。

这是解决这个问题的好办法,还是有更好的办法?

就我个人而言,我不喜欢在onBind中启动线程,因为我的onHandleWork从来没有被调用过安卓版本的>= 8.0,而在安卓版本中,JobIntentService工作得很好,因为如果我为JobService排队,它会调用onHandleWork,如果我绑定它,它会调用onBind。那么,有没有更好的方法来解决这个问题呢?

谢谢,有一个不错的编码!:D再见!

编辑:是的,对不起,我的语法错误,但我在工作,我不给.关于xD,无论如何,"onPause“或"onDestroy”生命周期方法上的“解除绑定”不起作用.因为当我调用解除绑定的服务时,停止工作,如果可能的话,我需要它仍然运行。有什么建议吗? 他们会用JobIntentService解决这个问题吗?

EN

回答 1

Stack Overflow用户

发布于 2019-08-01 08:49:38

向上

实际上,我正在通过Activity解决消息传递问题,方法是使用一个没有从IBinder方法返回的OnBind的Messenger实例,而是将Messenger的实例传递到启动服务的意图中。

但是我更喜欢使用onBind方法来改变它,就像我对经典的“服务”类所做的那样。这事什么时候才能解决?

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55812015

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档