从广播接收器启动异步任务

发布于 2024-12-12 08:55:55 字数 111 浏览 0 评论 0原文

我想知道从广播接收器启动异步任务是否被认为是一种不好的做法?我基本上是在谷歌的C2DM服务器上注册的,然后当我拦截注册的广播接收器时,我想将其发送到我的服务器。

实现这一目标的最佳方法是什么?

I want to know if starting up a asynctask from a broadcast receiver considered a bad practice? I basically registered with the C2DM server of google and then when I intercept the onregistered, broadcast receiver, I want to send it to my server.

what is the best way of accomplishing this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

蒲公英的约定 2024-12-19 08:55:56

是的,这被认为是不好的做法。这是因为,如果您从 BroadcastReceiver 启动 AsyncTask,如果 onReceive() 返回并且没有其他活动组件在运行,Android 可能会终止您的进程。

正确的方法是从 BroadcastReceiver 启动 Service。这个Service应该管理AsyncTask。这样,Android 将了解活动组件,并且 Android 不会过早终止它(除非出现其他关键情况,例如内存不足的情况)。

Yes, this is considered bad practice. That's because if you start AsyncTask from BroadcastReceiver Android may kill your process if onReceive() returned and there is no other active components running.

The correct way would be to start Service from BroadcastReceiver. And this Service should manage AsyncTask. This way Android will be aware about the active component and Android will not kill it prematurely (unless other critical conditions arise, like not enough memory conditions).

蓝眼泪 2024-12-19 08:55:56

从 Honeycomb 开始,您可以调用 goAsync( ),然后您有 10 秒左右的时间异步完成工作。

此处显示了使用示例。

Starting with Honeycomb, you can call goAsync(), and then you have 10 seconds or so to do your work asynchronously .

Example of usage can be shown here.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文