我想知道从广播接收器启动asynctask是否被视为不良做法?我基本上注册了谷歌的C2DM服务器,然后当我拦截注册的广播接收器时,我想将它发送到我的服务器。
实现这一目标的最佳方法是什么?
答案 0 :(得分:18)
是的,这被认为是不好的做法。这是因为如果您从AsyncTask
开始BroadcastReceiver
,如果onReceive()
返回并且没有其他活动组件在运行,Android可能会终止您的进程。
正确的方法是从Service
开始BroadcastReceiver
。此Service
应管理AsyncTask
。这样Android就会知道活动组件,Android不会过早地杀死它(除非出现其他严重情况,例如内存条件不足)。
答案 1 :(得分:2)