什么是一个进程中的BroadcastReceiver生命周期?

时间:2010-12-24 02:36:02

标签: android lifecycle

阅读有关活动和流程生命周期的一些问题/答案后。我想我了解有关活动和流程生命周期的详细信息。但我对这些观察者感到困惑,比如BroadcastReceiver / ContentObserver和进程生命周期。

我想知道的是,当我注册BroadcastReciver(即,BroadcastReceiver侦听SMS接收意图)时,如果已经注册BroadcastReceiver的进程已经存在,那么当系统调用BroadcastReceiver时,

  1. 它是在同一个过程中吗?
  2. 由于流程没有终止,流程中的这些静态数据可以直接使用,对吧?
  3. 另一方面,如果进程已经终止,系统将再次启动进程,当然这些静态数据为空?
  4. 当系统调用BroadcastReceiver时,它是否也会调用主活动onCreate?
  5. 感谢。

2 个答案:

答案 0 :(得分:4)

1。)不确定“注册BroadcastReceiver的进程”是什么意思。如果为BroadcastRecevier()提供了一个命名进程,那么它将在一个进程中创建,该进程的名称来自应用程序包和name属性(XYZ)。如果已存在具有该名称的进程,则不会创建新进程,并且将在现有进程中创建BroadcastReceiver。

2。)因此,如果进程仍在内存中,那么您可能已经初始化了静态数据。

3。)正确,在这种情况下,任何静态数据都必须重新初始化。

4.如果BroadcastReceiver的进程尚不存在,那么将创建该进程,但BroadcastReceiver将是该进程中唯一创建的进程。没有活动将开始。

使Activity成为“主要”活动的唯一因素是它被注册以使用android.intent.action.MAIN的动作处理某种类型的Intent。当应用程序“启动”时,这是一种广播的意图。用户可以切换到已经运行的应用程序,并且没有“主”活动不起作用,因为在这种情况下不会广播具有动作MAIN的意图。关键在于,“主”活动与其运行的进程没有特殊关系。它只与特定类型的意图有特殊关系。

答案 1 :(得分:0)

BroadcastReceiversContentObservers非常不同。

1。)是的,一般来说,你所做的每一件事都在同一个过程中,除非非特别明确定义。

2。)这个问题毫无意义。你在问什么?

3。)再一次,没有意义。什么静态数据?

4。)否。广播接收器与活动完全不同。广播接收器接收广播时唯一呼叫的是onReceive()方法。