【发布时间】:2019-05-29 14:29:09
【问题描述】:
我刚刚将目标 SDK 移至 v9。
我遇到了一个问题,当我运行我的应用程序时,我打开设置并撤销其中一项权限。然后,当我将我的应用程序置于前台时,它会重新启动并尝试恢复应用程序,但无法正确恢复。
我的理解是行为应该与旋转设备相同。但是在这种情况下,我的应用可以正确恢复。
在应用运行时撤销权限是什么行为?应用程序应该终止并从头开始,还是可以恢复?
【问题讨论】:
标签: android permissions
我刚刚将目标 SDK 移至 v9。
我遇到了一个问题,当我运行我的应用程序时,我打开设置并撤销其中一项权限。然后,当我将我的应用程序置于前台时,它会重新启动并尝试恢复应用程序,但无法正确恢复。
我的理解是行为应该与旋转设备相同。但是在这种情况下,我的应用可以正确恢复。
在应用运行时撤销权限是什么行为?应用程序应该终止并从头开始,还是可以恢复?
【问题讨论】:
标签: android permissions
我的理解应该与旋转设备的行为相同。
没有。
谁能告诉我在应用程序运行时撤销权限时的行为是什么。
您的应用进程已终止。当用户返回应用程序时,Android 将为您的应用程序启动一个新进程。 Android 可能会尝试重新启动用户上次所处的活动,具体取决于所有这些事件的时间。
一般情况下,该行为与用户离开您的应用一段时间(例如 20 分钟)后,Android 在后台终止该进程,然后用户返回该进程的行为相同。
应用程序应该终止并从头开始,还是可以恢复。
我们无法回答这个问题,因为详细信息取决于应用程序。理想情况下,您的应用可以“恢复”,但这需要您将应用设计为能够处理每个活动的新流程。
【讨论】:
Bundle 是否为空取决于您是否在其中放入任何内容以及用户离开您的应用后的时间。如果用户最近离开了您的应用,Android 将尝试使用上次保存的实例状态 Bundle 重新启动您的上一个活动。有一些奇怪的边缘情况可能不起作用(例如,多窗口,当用户在设置中撤销权限时,您的应用程序的窗口仍然打开)。