从广播接收器开始asynctask

时间:2011-10-26 08:34:37

标签: android android-c2dm

我想知道从广播接收器启动asynctask是否被视为不良做法?我基本上注册了谷歌的C2DM服务器,然后当我拦截注册的广播接收器时,我想将它发送到我的服务器。

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

2 个答案:

答案 0 :(得分:18)

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

正确的方法是从Service开始BroadcastReceiver。此Service应管理AsyncTask。这样Android就会知道活动组件,Android不会过早地杀死它(除非出现其他严重情况,例如内存条件不足)。

答案 1 :(得分:2)

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

可以显示使用示例here