如何防止在 Android M 或更高版本的运行时更改权限时重新创建 Activity

How to prevent Re-creating an Activity while changing the permissions at runtime in Android M or above

我的应用程序使用位置权限。如果在运行时从 App Settings 撤销此权限并返回到 app,则当前 activity 将被销毁并重新创建。如何防止重新创建 activity?

你不能。如果用户从您的应用程序撤消权限,Android 将终止您的进程。这会迫使您返回检查权限代码,在那里您会发现您丢失了权限。

由于您的应用进程可以在您的 UI 不在前台时随时终止,因此您的应用应该已经能够处理这种情况。如果不能,那么您需要解决这个问题,因为您的进程在后台时会由于其他原因而终止(OS 释放系统 RAM,用户使用任务杀手应用程序,用户按下 Force Stop设置等)。

这是 android 中实现的直接清理机制,用于处理 android M 中的权限更改。 该进程终止并上线,init's 本身具有可用权限。

因此,您的查询的答案 -> 您无法阻止重新启动您的 activity,因为整个过程将重新启动。如果您仍然希望检测此类事件,最多可以在撤销权限之前保留一些标志,并在您的应用进入前台后检查它。