【问题标题】:Android O Settings to enable background restriction for applications为应用程序启用后台限制的 Android O 设置
【发布时间】:2017-09-20 07:31:44
【问题描述】:

根据Docs-

注意:默认情况下,这些限制仅适用于面向 Android 8.0(API 级别 26)或更高版本。但是,用户可以启用大多数 设置屏幕中任何应用程序的这些限制,即使 该应用的目标 API 级别低于 26。

我的目标是低于 API 26,但我找不到在官方 android 模拟器中启用限制的设置。

此设置在哪里可用?

【问题讨论】:

  • API 26以下的android版本没有限制
  • @user12345 我要求在 API 26 上运行的应用程序,目标低于 API 26。
  • 模拟器安装的是哪个安卓版本?
  • API 26= Android O
  • 它应该显示在应用程序的设置页面上,适用于倾向于消耗大量电池的应用程序。有关这方面的一些背景信息,请参阅my May blog post。但是,我还不能在生产中重现它。

标签: android android-8.0-oreo notification-channel


【解决方案1】:

启用背景限制的设置在应用信息 -> 电池屏幕中可用。 p>

还不能在模拟器中重现。

当您最初安装应用程序(目标低于 API 26)时,该选项不可用,直到应用程序执行一些后台工作。

所以我能够制作它-

  1. 在 API 25 上定位应用程序
  2. 创建一个长时间运行的服务(大约 5 分钟)
  3. 从 MainActivity 的 onCreate 启动服务
  4. 将应用程序发送到后台(按返回键)并让设备保持电池供电(未连接电源)

几分钟后,该选项将可用于启用限制。

【讨论】:

    【解决方案2】:

    您可以使用 adb 来启用/禁用后台限制。

    Android 7.0(API 级别 24)引入了一些额外的 Android 调试桥 (ADB) 命令,您可以使用这些命令在禁用这些后台进程的情况下测试应用行为:

    • 要模拟隐式广播和后台服务不可用的情况,请输入以下命令: $ adb shell cmd appops set <package_name> RUN_IN_BACKGROUND ignore
    • 要重新启用隐式广播和后台服务,请输入以下命令: $ adb shell cmd appops set <package_name> RUN_IN_BACKGROUND allow

    来源:https://developer.android.com/topic/performance/background-optimization#further-optimization

    您还可以将应用设置为在后台运行:

    adb shell am make-uid-idle <package>

    来源:Android Oreo Background Execution Limits

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-10-03
      • 1970-01-01
      • 1970-01-01
      • 2021-05-16
      • 1970-01-01
      • 1970-01-01
      • 2019-01-30
      • 1970-01-01
      相关资源
      最近更新 更多