阅读有关 Activity 和流程生命周期的一些问题/答案后。我想我了解有关 Activity 和流程生命周期的详细信息。但是我对这些观察者感到困惑,比如 BroadcastReceiver/ContentObserver with process lifecycle 。
我想知道的是,当我注册一个BroadcastReceiver(即监听SMS接收 Intent 的BroadcastReceiver)时,如果注册BroadcastReceiver的进程已经存在,当系统调用BroadcastReceiver时,
- 是否在同一个进程中?
- 而且因为进程没有终止,所以进程中的这些静态数据可以直接使用,对吧?
- 另一方面,如果进程已经终止,系统将再次启动进程,当然这些静态数据为空?
- 系统调用BroadcastReceiver时,会不会同时调用主activity的onCreate?
谢谢。
最佳答案
1.) 不确定“注册 BroadcastReceiver 的进程”是什么意思。如果您为 BroadcastRecevier () 提供了一个命名进程,那么它将在一个进程中创建,该进程的名称来自您的应用程序包加上名称属性 (XYZ)。如果具有该名称的进程已经存在,则不会创建新进程,并且您的 BroadcastReceiver 将在现有进程中创建。
2.) 因此,如果该进程仍在内存中,那么您是正确的,可能已经初始化了静态数据。
3.) 正确,在这种情况下,任何静态数据都必须重新初始化。
4.) 如果 BroadcastReceiver 的进程尚不存在,则将创建进程,但 BroadcastReceiver 将是进程中唯一创建的东西。不会启动任何 Activity 。
使 Activity 成为“主要”Activity 的唯一原因是它注册为使用 android.intent.action.MAIN 的操作处理某种 Intent。这是一种在“启动”应用程序时广播的 Intent。用户可以切换到已经运行的应用程序,并且“主要” Activity 不会发挥作用,因为在这种情况下不会广播带有操作 MAIN 的 Intent。关键是在“主”Activity 与其运行的进程没有特殊关系。它只与特定类型的 Intent 有特殊关系。
关于android - 进程中的 BroadcastReceiver 生命周期是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4523872/