我想知道从广播接收器启动asynctask是否被认为是一种不好的做法?我基本上注册了Google的C2DM服务器,然后当我拦截到onregistered广播接收器时,我想将其发送到我的服务器。
最佳完成此操作的方法是什么?
最佳完成此操作的方法是什么?
是的,这被认为是不好的做法。这是因为如果你从BroadcastReceiver
启动AsyncTask
,而且当onReceive()
返回时没有其他活动组件运行,Android可能会杀死你的进程。
正确的方法是从BroadcastReceiver
启动Service
。而且这个Service
应该管理AsyncTask
。这样Android将了解活动组件并且不会过早地将其杀死(除非出现其他关键条件,如内存不足条件)。