如何在 Android M 或更高版本中在运行时更改权限时防止重新创建 Activity
Posted
技术标签:
【中文标题】如何在 Android M 或更高版本中在运行时更改权限时防止重新创建 Activity【英文标题】:How to prevent Re-creating an Activity while changing the permissions at runtime in Android M or above 【发布时间】:2017-03-07 13:03:19 【问题描述】:我的应用使用位置权限。如果此权限在运行时从 App Settings 撤销并返回到应用程序,则当前活动将被销毁并重新创建。如何防止该活动的重新创建?
【问题讨论】:
【参考方案1】:你不能。如果用户撤销您应用的权限,android 将终止您的进程。这会迫使您返回检查权限代码,您会发现您丢失了权限。
由于您的应用程序的进程可以在您的 UI 不在前台时随时终止,因此您的应用程序应该已经能够处理这种情况。如果它不能,那么您需要修复它,因为您的进程将在后台时因其他原因而终止(操作系统释放系统 RAM,用户使用任务杀手应用程序,用户在设置中按下强制停止等。 )。
【讨论】:
太棒了,不知道这种行为。谢谢!【参考方案2】:这是在 android 中实现的直接清理机制,用于处理 android M 中的权限更改。
该进程将终止并上线,init's
本身具有可用权限。
因此,您的查询的答案 -> 在整个过程重新启动时,您无法阻止重新创建您的活动。如果您仍然希望检测到此类事件,则最多可以在撤销权限之前保留一些标志,并在您的应用程序进入前台后检查它。
【讨论】:
以上是关于如何在 Android M 或更高版本中在运行时更改权限时防止重新创建 Activity的主要内容,如果未能解决你的问题,请参考以下文章
如何查看我的 Xamarin.Forms 应用程序是不是在 Visual Studio 中的 Android 6(或更高版本)上运行或/和可运行?
如何在 android 10 或更高版本中获取设备 ID 或 imei 号码
Android N 要求 IDE 运行 Java 1.8 或更高版本?
如何在 api 17 或更高版本中使 android seekbar 全宽?