gpt4 book ai didi

android - 如何从 JobService 返回结果?

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:30:23 27 4
gpt4 key购买 nike

我正在玩 Android 并编写一个包含 Activity 和服务的小应用程序。该 Activity 在单击按钮时启动服务,它应该从 URI 中获取一些数据并将其作为结果返回。有时,数据不可用或不符合条件,然后服务应每 X 分钟重试一次,即使 Activity 在后台也是如此。

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

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

我不能将 ResultsReceiverJobService 一起使用,因为我没有构建 JobService 实例(由 JobInfo.Builder),我无法将对回调对象的引用传递给它。

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

对不起,如果它是微不足道的,我对 Android 不熟悉..

谢谢!

最佳答案

How can I communicate between a scheduled job and the service that invoked it?

通常,您不需要。您的服务和您的 Activity 都不可能存在。 JobScheduler 背后的要点是让作业在您的应用程序不再运行时运行。如果您以其他方式使用它,那可能不合适。

也就是说,欢迎您使用事件总线(我会选择 greenrobot 的 EventBus,尽管 LocalBroadcastManager 也可以在这里工作),在您的流程中引发一个事件,表明工作完成。您的服务(或 Activity )可以在总线上注册事件并在引发这些事件时使用react。然而,与此同时,如果没有已注册的处理程序,事件总线完全满足于让事件“落在地板上”,因此您的 JobService 可以在“即发即弃”的情况下引发事件如果需要模式。

关于android - 如何从 JobService 返回结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37349596/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com