从锁定屏幕打开时,我的应用程序将重新启动

时间:2019-02-22 10:20:15

标签: android

重现该问题的步骤:

我正在使用带有Android 8.1.0的SM-T580 Android平板电脑。

  • 进入设备的设置屏幕->锁定屏幕->->快捷方式->在屏幕两侧之一上设置应用程序。
  • 以正常方式打开应用程序,然后导航到启动器活动以外的其他活动。
  • 锁定设备(按电源按钮)。
  • 按下电源按钮->可以看到锁定屏幕。
  • 将应用程序滑动到屏幕的对角即可打开它。
  • 应用程序重新启动到启动器活动。

也许这很有用,因为设备已使用模型(9点模型)锁定。

对此我有两个问题:

  • 为什么会这样?
  • 他们是否可以预防?通过锁屏打开时保持应用程序状态吗?

更新

我创建了一个示例项目来重现该问题:https://github.com/Martin-Hogge/lock-restart-sample

以下是重现我上面解释的方案后的日志:

2019-02-25 10:17:23.549 20482-20482/com.example.testlock D/TEST_LOCK: Application onCreate
2019-02-25 10:17:23.694 20482-20482/com.example.testlock D/TEST_LOCK: MainActivity onCreate
2019-02-25 10:17:24.024 20482-20482/com.example.testlock D/TEST_LOCK: MainActivity onStart
2019-02-25 10:17:24.032 20482-20482/com.example.testlock D/TEST_LOCK: MainActivity onResume
2019-02-25 10:17:27.036 20482-20482/com.example.testlock D/TEST_LOCK: MainActivity onPause
2019-02-25 10:17:27.079 20482-20482/com.example.testlock D/TEST_LOCK: SecondActivity onCreate
2019-02-25 10:17:27.109 20482-20482/com.example.testlock D/TEST_LOCK: SecondActivity onStart
2019-02-25 10:17:27.114 20482-20482/com.example.testlock D/TEST_LOCK: SecondActivity onResume
2019-02-25 10:17:27.646 20482-20482/com.example.testlock D/TEST_LOCK: MainActivity onStop
2019-02-25 10:17:29.104 20482-20482/com.example.testlock D/TEST_LOCK: SecondActivity onPause
2019-02-25 10:17:29.132 20482-20482/com.example.testlock D/TEST_LOCK: SecondActivity onStop
2019-02-25 10:17:34.297 20482-20482/com.example.testlock D/TEST_LOCK: SecondActivity onDestroy
2019-02-25 10:17:34.315 20482-20482/com.example.testlock D/TEST_LOCK: MainActivity onDestroy
2019-02-25 10:17:34.363 20482-20482/com.example.testlock D/TEST_LOCK: MainActivity onCreate
2019-02-25 10:17:34.449 20482-20482/com.example.testlock D/TEST_LOCK: MainActivity onStart
2019-02-25 10:17:34.455 20482-20482/com.example.testlock D/TEST_LOCK: MainActivity onResume

当我通过锁定屏幕重新打开应用程序时,我们可以看到MainActivitySecondActivity都被破坏了。

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

如果您仔细查看所提供的日志,则会发现两个活动都被调用onDestroy。调用onDestroy后,返回应用程序的唯一方法是重新启动应用程序(调用onCreate)。

由于调用了onDestroy,因此您需要将活动状态保存到永久存储(使用SharedPreferences或设置文件,视需要而定)。< / p>