gpt4 book ai didi

android - 一次性权限导致后台计划作业和警报被取消

转载 作者:行者123 更新时间:2023-12-03 13:25:37 26 4
gpt4 key购买 nike

我们开发了一个 Android SDK,在测试 Android 11 Beta 时,我们发现了一个似乎尚未报告的问题。
在 Android 11 中,为位置、麦克风和相机权限引入了新的一次性权限。使用此选项,一旦用户离开应用程序,权限就会被撤销(更多详细信息可在 here 中找到)。
问题是在应用程序不再处于前台的一小段时间后(没有必要杀死应用程序,只需最小化就足够了),所有 future 计划的警报或作业都会被删除,就好像应用程序是强制的被杀。
这只发生在此级别的权限下。
拒绝或提供其他级别会按预期保留先前安排的警报或作业。
我们已经在 Beta 3 版本中重现了这一点,它是在具有 RPB3.200720.005 版本号的 Pixel 2 模拟器中。在这个 repo您可以找到一个示例应用程序来重现该错误。
这个单一的 Activity 应用程序安排在接下来的五分钟内响起警报,以及在 5-6 分钟内触发的工作。
屏幕上有三个按钮,每个按钮触发相应的权限请求。
JobService 和 BroadcastReceiver 类仅记录它们已被触发。
通过以下步骤可以重现这种情况:

  • 无论何时启动应用程序,都可以运行 adb shell dumpsys alarm | grep com.example.permissions.appadb shell dumpsys jobscheduler | grep com.example.permissions.app查看警报和作业是否已安排;
  • 单击任一按钮并授予一次性权限级别;
  • 最小化应用程序(您可以转到主屏幕或打开其他应用程序);
  • 大约一分钟后,同时运行 adb shell dumpsys alarm | grep com.example.permissions.appadb shell dumpsys jobscheduler | grep com.example.permissions.app .警报和作业将不再出现;
  • 等待作业和警报的原始计划时间(对系统延迟宽容)将表明它们不会被触发。

  • 大家有遇到过类似的情况吗?我们的直觉是,为了撤销一次性权限,应用程序进程会以某种方式被杀死,从而导致这些副作用。
    我们还在 Android Issue Tracker 上提交了一个问题。 ,如果谷歌回答它,我们将保持更新这篇文章。

    最佳答案

    这个问题已经“解决”了。问题实际上是 Android Studio 在关闭应用程序后撤销权限时调用强制关闭。
    实际谷歌的回应:

    Thank you very much for raising this issue, and providing sample codeto reproduce it. After investigating further, we discovered that thisis due to an interaction between Android Studio and apps launched viathe "Run" command.

    Specifically, when Android revokes an app's permission, it kills thatapp's process. We found that Android Studio sends a force-stop commandvia adb when it observes the app it launched is no longer running.

    If the app is started via the launcher (including in an emulatorthat's connected to Android Studio), the app is not force-stopped, andthe alarm and job both run as expected.


    因此,除了在开发阶段之外,它不会引起其他问题。有关更多信息,请查看问题中链接的 Android 问题跟踪器。

    关于android - 一次性权限导致后台计划作业和警报被取消,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63511570/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com