从广播接收机开始一个asynchronous的

我想知道,如果从广播接收机启动一个asynctask被认为是不好的做法? 我基本上注册与谷歌的C2DM服务器,然后当我拦截注册,广播接收器,我想发送到我的服务器。

完成这个的最好方法是什么?

  • 长轮询与Apple推送通知服务和Android C2DM
  • Android的C2DM:重复的消息到相同的设备和应用程序
  • Android C2DM推送通知
  • android c2dm注册ID
  • 针对Kindle Fire推送通知/ C2DM?
  • 没有检测到GPU仿真的仿真器
  • C2DM实现PHP代码
  • Android和(数百万)推送通知
  • 是的,这被认为是不好的做法。 那是因为如果你从BroadcastReceiver启动AsyncTask ,如果onReceive()返回并且没有其他活动组件运行,Android可能会AsyncTask你的进程。

    正确的方法是从BroadcastReceiver启动Service 。 而这个Service应该pipe理AsyncTask 。 这样Android就会意识到活动组件,Android不会过早地杀死它(除非出现其他临界条件,比如没有足够的内存条件)。

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

    使用示例可以在这里显示。