`
xinanadu
  • 浏览: 227366 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

BroadcastReceiver中的耗时操作

 
阅读更多

在BroadcastReceiver中接收到广播之后,有时会进行一些耗时的操作。大家一般有两种写法:

1)在当前BroadcastReceiver中另起线程操作

2)由当前BroadcastReceiver启动新的Service,在新的Service中操作

 

其实,第一种方法并不推荐。因为大家都知道,安卓在内存不足或其他资源不够的情况下会作清理。而BroadcastReceiver在onReceive()调用后,就只剩下一个线程在跑了,没有service的级别高!

 

http://developer.android.com/guide/components/processes-and-threads.html中有一段

Because a process running a service is ranked higher than a process with background activities, an activity that initiates a long-running operation might do well to start a service for that operation, rather than simply create a worker thread—particularly if the operation will likely outlast the activity. For example, an activity that's uploading a picture to a web site should start a service to perform the upload so that the upload can continue in the background even if the user leaves the activity. Using a service guarantees that the operation will have at least "service process" priority, regardless of what happens to the activity. This is the same reason that broadcast receivers should employ services rather than simply put time-consuming operations in a thread.

所以,推荐大家用第2种写法。

0
0
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics