阅读有关活动和流程生命周期的一些问题/答案后。我想我了解有关活动和流程生命周期的详细信息。但我对这些观察者感到困惑,比如BroadcastReceiver / ContentObserver和进程生命周期。
我想知道的是,当我注册BroadcastReciver(即,BroadcastReceiver侦听SMS接收意图)时,如果已经注册BroadcastReceiver的进程已经存在,那么当系统调用BroadcastReceiver时,
感谢。
答案 0 :(得分:4)
1。)不确定“注册BroadcastReceiver的进程”是什么意思。如果为BroadcastRecevier()提供了一个命名进程,那么它将在一个进程中创建,该进程的名称来自应用程序包和name属性(XYZ)。如果已存在具有该名称的进程,则不会创建新进程,并且将在现有进程中创建BroadcastReceiver。
2。)因此,如果进程仍在内存中,那么您可能已经初始化了静态数据。
3。)正确,在这种情况下,任何静态数据都必须重新初始化。
4.如果BroadcastReceiver的进程尚不存在,那么将创建该进程,但BroadcastReceiver将是该进程中唯一创建的进程。没有活动将开始。
使Activity成为“主要”活动的唯一因素是它被注册以使用android.intent.action.MAIN的动作处理某种类型的Intent。当应用程序“启动”时,这是一种广播的意图。用户可以切换到已经运行的应用程序,并且没有“主”活动不起作用,因为在这种情况下不会广播具有动作MAIN的意图。关键在于,“主”活动与其运行的进程没有特殊关系。它只与特定类型的意图有特殊关系。
答案 1 :(得分:0)
BroadcastReceivers
和ContentObservers
非常不同。
1。)是的,一般来说,你所做的每一件事都在同一个过程中,除非非特别明确定义。
2。)这个问题毫无意义。你在问什么?
3。)再一次,没有意义。什么静态数据?
4。)否。广播接收器与活动完全不同。广播接收器接收广播时唯一呼叫的是onReceive()
方法。