为什么活动通过onCreate而不是onRestart返回到前端?

时间:2018-03-14 13:11:41

标签: android events android-activity broadcastreceiver lifecycle

我想要做的是通过在BroadCastReceiver侦听BOOT_COMPLETED事件中发送意图来启动设备重启时的活动。 Activity在其onCreate事件处理程序中有一个条件moveTaskToBack。活动是可启动的,也是App的唯一活动。

  1. 当我重新启动设备时,应用程序正在运行,我可以告诉“活动”已从屏幕隐藏。从logcat开始打印'onCreate'消息以指示onCreate事件发生。然后我点击屏幕上的App图标,期望活动从后面显示onCreate将被省略,moveTaskToBack将不会运行。但onCreate事件处理程序仍然执行,Activity再次隐藏。
  2. 另一方面,我从BroadCastReceiver中删除了启动Activity,只需在屏幕上点击图标打开App即可。首先点击应用程序开始运行和活动隐藏,当我再次点击图标时,活动显示。从logcat开始,第一个事件是onRestart,这是预期的。
  3. 我不确定两种方式带回活动有什么不同?为什么onCreate在第一种情况下应用BroadcastReceiver两次?

    干杯!

1 个答案:

答案 0 :(得分:0)

我现在知道广播接收器启动的活动是在堆栈中,而由启动器启动的活动是同一个类,在另一个堆栈中。因此,当我点击App图标桌面时,为什么onCreate事件再次发生,为App创建一个新的堆栈和全新的活动。

感谢xvlcw提供了很大的帮助......