gpt4 book ai didi

Android:是否可以使用 AlarmManager 完成所有更新任务

转载 作者:行者123 更新时间:2023-11-30 03:16:21 25 4
gpt4 key购买 nike

我已经使用 后台服务 来更新任务,比如在我的 android 应用程序中经常玩网络服务器(发送地理位置数据或按时间发送/获取网络数据),而且我还有为此面临许多问题(缓慢的过程,应用程序挂起)。

但是在我当前的应用程序中,我使用了 AlarmManager,然后使用了 PendingIntents 来完成一些运行良好的任务。所以我认为,如果我将每个使用服务的更新任务替换为 AlarmManager,然后是 PendingIntents,那会很好。

这是正确的方法还是我犯了一个大错误?

各种建议都值得赞赏。提前致谢。

最佳答案

使用 AlarmManager 安排的服务和警报有时服务于不同但互补的目的。当您使用 set 方法之一安排警报时,警报将在指定时间触发,您应该在 BroadcastReceiver 上处理它。这意味着你的处理必须是响应式的,不能有异步操作。 According to the docs :

A BroadcastReceiver object is only valid for the duration of the call to onReceive(Context, Intent). Once your code returns from this function, the system considers the object to be finished and no longer active. (...) Anything that requires asynchronous operation is not available, because you will need to return from the function to handle the asynchronous operation, but at that point the BroadcastReceiver is no longer active and thus the system is free to kill its process before the asynchronous operation completes.

如果您想处理更复杂的操作,建议为此启动一个服务。即使您在接收器上使用最近可用的 goAsync() 调用,您仍然需要 be responsive :

This does not change the expectation of being relatively responsive to the broadcast (finishing it within 10s)

所以这最终取决于您要实现的目标,何时使用它们中的每一个或组合使用它们。

关于Android:是否可以使用 AlarmManager 完成所有更新任务,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20042811/

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