Broadcast的生命周期只有一个回调方法:void onReceive(Context curContext,Intent broadcastMsg)。当broadcast消息到达接收者时,Android会调用他的onReceive()方法,并且传递包含这个信息的intent对象。broadcast接收者在执行这个方法时,被认为是活动的。当onReceive()方法返回时,它停止的活动状态。
一个活动的广播接受者进程是不能被杀死的,但是当他所消耗的内存被别的进程需要时,一个非活动状态的进程可以被系统随时杀死。
这带来一个问题,相应一个广播消息是非常耗时的,因此,很多事情需要在一个独立的线程中执行,而不是在主线程里。如果onReceive()方法启动一个线程,那么整个进程包括刚启动的新线程,是非活动状态的,(除非进程里其他应用程序组件有活动的),所以有被系统销毁的危险。这个问题的解决方法是在onReceive()方法里启动一个服务然后处理一些事情,所以系统会知道在这个进程里仍然有处于活动状态的任务需要被处理。