首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何返回JobService的结果?

如何返回JobService的结果?
EN

Stack Overflow用户
提问于 2016-05-20 14:40:12
回答 1查看 3.5K关注 0票数 5

我和Android玩了一会儿,还编写了一个带有活动和服务的小应用程序。该活动在单击按钮时启动服务,它应该从URI中获取一些数据并返回它。有时,数据是不可用的,或者不符合标准,那么即使活动处于后台,服务也应该每隔X分钟重试一次。

我通过IntentResultReceiver (在包中传递)实现了活动和服务之间的通信。在实现服务时,我想使用新的JobScheduler组件,但后来看到它只能接受一个PersistableBundle,它不能添加Parcelable对象(ResultReceiver),而只能添加基本类型。

我希望该服务安排一个作业,在网络可用时运行,并且每隔X分钟检查一次数据。一旦它得到它,我希望将数据返回给服务,这样它就可以决定它是否可以接受,或者我们需要重新尝试。如果服务接受数据,它将通过ResultsReceiver将其返回给活动。

我不能将ResultsReceiverJobService一起使用,而且由于我没有构造JobService实例(由JobInfo.Builder完成),所以不能将它传递给回调对象的引用。

如何在计划作业和调用它的服务之间进行通信?

抱歉,如果这是小事,我不熟悉Android..。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-05-20 14:45:47

如何在计划作业和调用它的服务之间进行通信?

一般来说,你不会。你的服务和你的活动都不可能存在。JobScheduler背后的要点是,当应用程序不再运行时,作业就会运行。如果您正在以其他方式使用它,这可能是不合适的。

尽管如此,我们欢迎您使用事件总线(绿色机器人的EventBus将是我的选择,尽管LocalBroadcastManager也在这里工作),在您的过程中引发一个事件来表示任务已经完成。您的服务(或活动)可以注册总线上的事件,并在引发这些事件时作出反应。但是,同时,如果没有注册的处理程序,事件总线完全满足于让事件“落在地板上”,因此如果需要,您的JobService就可以在“失忆”模式下引发事件。

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

https://stackoverflow.com/questions/37349596

复制
相关文章

相似问题

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