首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >一次权限导致后台计划作业和警报被取消。

一次权限导致后台计划作业和警报被取消。
EN

Stack Overflow用户
提问于 2020-08-20 18:58:05
回答 2查看 536关注 0票数 12

我们开发了一个Android,在测试Android11Beta的同时,我们发现了一个似乎还没有报告的问题。

在Android 11中,已经为位置、麦克风和相机权限引入了新的一次性权限.使用此选项,一旦用户离开应用程序,权限就会被撤销(可以找到更多详细信息,这里)。

问题是,在短时间内,当应用程序不再处于前台时(没有必要杀死应用程序,只需最小化就足够了),所有未来计划中的警报或作业都会被删除,就像应用程序被强行杀死一样。只有在这个级别的权限下才会发生这种情况。拒绝或提供其他级别保持原计划的警报或作业,如预期。我们已经在Beta 3构建中复制了这一点,在一个带有RPB3.200720.005构建号的Pixel 2仿真器中。在这个存储库中,您可以找到一个用于复制bug的示例应用程序。

这个单一的活动应用程序计划在接下来的5分钟内发出警报,并在5-6分钟内触发一项任务。屏幕有三个按钮,每个按钮触发相应的权限请求。JobService和BroadcastReceiver类只记录它们已被触发。这种情况可在采取下列步骤后再发生:

  1. 无论何时启动应用程序,都可以同时运行adb shell dumpsys alarm | grep com.example.permissions.appadb shell dumpsys jobscheduler | grep com.example.permissions.app,以确保警报和作业都被调度;
  2. 单击任意按钮并授予一次性权限级别;
  3. 最小化应用程序(你可以进入主屏幕或打开其他应用程序);
  4. 大约一分钟后,运行adb shell dumpsys alarm | grep com.example.permissions.appadb shell dumpsys jobscheduler | grep com.example.permissions.app。报警器和作业将不再出现;
  5. 等待作业和警报的原计划时间(对系统延迟从宽处理)将显示不会触发它们。

你们中有谁遇到过类似的情况?我们的预感是,为了撤销一次性权限,应用程序进程正在以某种方式被终止,从而导致这些副作用。我们还在Android问题跟踪器上提交了一个问题,如果谷歌回答了这个问题,我们会更新这篇文章。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-09-14 05:38:01

这个问题“解决了”。问题实际上是在Android关闭应用程序后,当权限被撤销时,Android Studio调用了一个强制关闭。

谷歌的实际反应是:

非常感谢您提出了这个问题,并提供了示例代码来再现它。经过进一步研究,我们发现这是由于Android和通过"Run“命令启动的应用程序之间的交互。 具体来说,当Android撤销应用程序的许可时,它会扼杀该应用程序的进程。我们发现,当Android观察到它发布的应用程序不再运行时,它会通过亚行发送一个强制停止命令。 如果应用程序是通过启动程序启动的(包括在连接到Android的模拟器中),则应用程序不会强制停止,警报和作业都会按预期运行。

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

票数 0
EN

Stack Overflow用户

发布于 2022-01-26 11:54:21

我知道我的问题与这个问题不完全一样,但当我点击这个一次性许可时,我在谷歌地图上的android 11中也遇到了这个问题。我注意到,如果你离开你的应用程序在后台1分钟,然后回去,应用程序进程被扼杀了。

我在取景器中有两个SupportMapFragment,并在TabLayout中连接,每次发生这种情况,视图都会被重新创建,但是处于视图器当前位置的片段没有被正确地重新创建。

对于那些遇到这种情况的人,您必须更改您的流,只使用一个SupportMapFragment而不是两个。这样,您的地图片段将正确地重新创建。我只是根据标签当前位置来处理地图状态和标记。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63511570

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档