繁体   English   中英

Android marshmallow动态权限更改会杀死所有应用程序进程

[英]Android marshmallow dynamic permission change kills all application processes

观察:手动更改Android应用程序的权限会终止此应用程序的所有进程。

过程:转到设置 - >应用程序选择应用程序和权限。 禁用其中一个权限。 设备:运行Android Marshmallow 6.0的Nexus 6设备

当我从启动器启动应用程序时,它启动了在此应用程序的权限更改之前位于顶部的活动。 这与我们通过从UI多任务菜单中刷出应用程序来终止应用程序进程时的行为不同。 在这种情况下,首先创建启动器活动。 也就是说,为了使应用程序在更改权限后启动时正常工作,它不能依赖启动的启动器活动。

这是所有Android 6.0+设备上具有动态权限的预期行为吗? 为什么通过从UI多任务菜单中刷出应用程序进程来杀死应用程序时的行为有何不同?

也就是说,为了使应用程序在更改权限后启动时正常工作,它不能依赖启动的启动器活动。

多年来一直如此。 例如,如果您的进程因内存不足而终止,但用户最近已经进入(例如,在过去的半小时内),那么当用户访问概览屏幕时(您称之为“UI多任务”)菜单“)并返回到您的应用程序,控件将返回到用户最后一次活动的新实例(即,已经在BACK堆栈的顶部)。

这是所有Android 6.0+设备上具有动态权限的预期行为吗?

是。 它也是所有以前的Android设备中的预期行为,对于您的进程被终止但您的任务仍然未完成且最近的其他情况。

为什么通过从UI多任务菜单中刷出应用程序进程来杀死应用程序时的行为有何不同?

从概览屏幕中轻扫任务将删除该任务。 因此,当用户尝试返回您的应用程序时(例如,通过主屏幕启动器图标),该任务无法重复使用。

我想杀人的理由如下。 这是关于并发性的。 系统可以选择以下三种方法之一:

  1. 以静默方式撤消权限。 应用程序无法对此进行检查,因为在任何“检查”和“使用”时刻之间仍然会发生撤销。

  2. 通知应用程序。 这种通知必须由应用程序确认,这意味着它的线程不会再访问已禁用的API,系统现在可以关闭API。 这很优雅,但对于没有经验的程序员来说很难编程。

  3. 要杀死该应用程序,请确保下次启动它时将正确地意识到该权限已被撤销。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM