Android R 中的后台服务在省电模式下停止

2023-12-13

我编写了一个 Android 应用程序,通过更改电量来检查电池电量,并在电量达到特定值时发出警报。 我在我的应用程序中使用了广播接收器和后台服务。 它在所有 Android 版本中都能正常工作,但在 Android R 中,当打开省电模式时,服务会停止。 我在多个模拟器和具有不同 Android 版本的真实设备上测试了我的应用程序,并且工作正常,但在 Android R 中出现问题。 有没有办法防止服务停止?

我的服务类别:

public class BatService extends Service {

  private BatReceiver receiver = new BatReceiver();

  @Override
  public void onCreate() {
    super.onCreate();
  }

  @Override
  public int onStartCommand(Intent intent, int flags, int startId) {

    BatteryLevelAsync async = new BatteryLevelAsync();
    async.execute();

    return START_STICKY;
  }

  @Override
  public void onDestroy() {
    unregisterReceiver(receiver);

    super.onDestroy();
  }

  private class BatteryLevelAsync extends AsyncTask<Void,Void,Void>
  {
    @Override
    protected Void doInBackground(Void... voids) {
      registerReceiver(receiver, new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
      return null;
    }
  }

  @Override
  public IBinder onBind(Intent intent) {
    return null;
  }
}

谷歌对 Android 8 进行了限制以优化电池。 即使在使用服务时,这也会限制后台工作。 我找到了解决这个问题的方法:使用PowerManager。

添加清单权限:

<uses-permission android:name="android.permission.REQUEST_IGNORE_BATTERY_OPTIMIZATIONS" />

并将以下代码添加到您的 Activity 中:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
  String packageName = context.getPackageName();
  PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
  if (!pm.isIgnoringBatteryOptimizations(packageName)) {
    Intent intent = new Intent();
    intent.setAction(android.provider.Settings.ACTION_REQUEST_IGNORE_BATTERY_OPTIMIZATIONS);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    intent.setData(Uri.parse("package:" + packageName));
    context.startActivity(intent);
  }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Android R 中的后台服务在省电模式下停止 的相关文章

  • 将项目升级到Android Studio 1.0(Gradle问题)

    首先 我对 android 开发 android studio gradle 非常陌生 所以如果我问了一个愚蠢的问题 请原谅我 我的团队一直在使用 android studio 的 beta 版本开发一个项目 我刚刚安装了新版本 1 0 并
  • Flutter 中的 AndroidManifest 中缺少默认通知通道元数据

    我在用firebase messaging 5 0 1软件包来实现推送通知 在 IOS 中一切正常 而在 Android 中 当我的移动应用程序在后台运行时 我收到通知 但它没有导航到相应的屏幕 它只是打开默认屏幕 如何实现到该特定屏幕的导
  • 如何在 android 中启动“添加联系人”活动

    您能告诉我如何在 Android 中启动 添加联系人 活动吗 谢谢 API 级别 5 及以上解决方案 Add listener so your activity gets called back upon completion of act
  • API29 上不推荐使用 setColorFilter

    我使用以下行来更改 VectorDrawable 的颜色 mydrawable getBackground setColorFilter color PorterDuff Mode SRC ATOP 这很好用 尽管它现在已被弃用 文档建议我
  • 更改卡片高度即更改 Jetpack 中与 Material 3 组合的卡片颜色

    我正在使用 Card 可组合项 我希望它的颜色为白色 但是当我向它添加一些高度时 它的颜色会更改为更像主要容器颜色 我看过文档 其中有一种称为高程覆盖的东西 但找不到说明如何使用它的示例 这是我的代码 Card modifier Modif
  • onScale 事件后触发奇怪的 onScroll 事件

    我有一个同时使用 SimpleOnScaleGestureListener 和 SimpleOnGestureListener 的应用程序 每当我进行捏缩放时 我都会得到预期的 onScale 但是当我抬起时 我会看到一个奇怪的 onScr
  • Android:如何使用后台线程?

    我开发了一个应用程序 它从互联网获取内容并相应地在设备的屏幕上显示它 该程序运行得很好 就是有点慢 加载并显示内容大约需要 3 4 秒 我想将获取内容并将其显示在后台线程中的所有代码放在一起 当程序执行这些功能时 我想显示一个进度对话框 你
  • 如何向开发人员发送崩溃报告?

    我开发 Android 应用程序 但在某些情况下我的应用程序force close 如果出现以下情况 我如何向开发人员发送包含详细信息的电子邮件force close随时发生 The ACRA https github com ACRA a
  • Android中如何检测WIFI连接何时建立?

    我需要检测何时通过 WIFI 建立网络连接 发送什么广播来确定已建立有效的网络连接 我需要验证是否存在有效的 HTTP 网络连接 我应该监听什么以及需要进行哪些额外测试才能知道是否存在有效连接 您可以注册一个BroadcastReceive
  • 我想从 android 中服务器的视频 url 创建缩略图

    My code public static Bitmap retriveVideoFrameFromVideo String videoPath throws Throwable Bitmap bitmap null MediaMetada
  • 使用 Android Studio 进行调试永远停留在“等待调试器”状态

    UPDATE The supposed重复是一个关于陷入 等待调试器 执行时Run 而这个问题就陷入了 等待调试器 执行时Debug 产生问题的步骤不同 解决方案也不同 每当我尝试使用Android Studio的调试功能时 运行状态总是停
  • Android 中的列表视图分页

    我有一个列表视图 其中显示了 50 个元素 我决定对视图进行分页 以便视图的每个部分都有 10 个元素 然后单击 下一个 按钮以获取下一个 10 个元素 如何设置10个数据 我关注这篇文章http rakhi577 wordpress co
  • TextInputLayout 对于在 EditText 中以编程方式给出提示没有效果

    我有一个 EditText 它的父级是 TextInputLayout 我试图以编程方式为 EditText 提供提示 不在布局中 在这种情况下 文本输入提示动画不起作用 它像简单的 EditText 一样工作 有人可以建议如何处理它吗 下
  • SDK >=26 仍需要 mipmap/ic_launcher.png?

    在 Android 中 有两种指定启动器图标 可以说是应用程序图标 的方法 老 方式 在 mipmap 文件夹中指定不同的 png 文件 通常命名为 ic launcher png 但可以通过以下方式设置名称android icon mip
  • Glass 语音命令给定列表中最接近的匹配项

    使用 Glass 您可以通过 确定 Glass 菜单启动应用程序 它似乎会选择最接近的匹配项 除非命令相距数英里 并且您可以明显看到命令列表 无论如何 是否可以从应用程序内或从语音提示 在初始应用程序触发后 给出类似的列表并返回最接近的匹配
  • 我在 PopupMenu 中使用 ShareActionProvider,但显示两个 PopupMenu?

    我在 PopupMenu 中使用 ShareActionProvider 但是当我单击共享菜单项时 它会在屏幕上显示两个 PopupMenus 一个被另一个覆盖 一个显示应用程序图标和名称 另一个仅显示应用程序名称 除了这个问题之外 它工作
  • 剪切评级栏中的图像

    我制作了自己的评级栏 花朵图像有 4 种尺寸 xdpi hdpi 等 从 24px24px 到 64x64px
  • 无法使用文件提供程序从内部存储打开 PDF 以便在 Android 8 和 9 上查看

    仅适用于 Android 8 和 9 我这里有一个 PDF 文件管理器 String url file storage emulated 0 Android data com verna poc files Download mypdf p
  • Android AdMob:addView 在返回活动之前不会显示广告

    我正在尝试在游戏顶部添加横幅广告 我的活动使用带有自定义 SurfaceView 的relativelayout 我希望广告与 SurfaceView 重叠 广告会加载并可点击 但不会绘制到屏幕上 当我离开活动并返回时 会绘制广告 例如 通
  • Fragment 生命周期和在不存在的 Fragment 上调用 onCreate 的问题

    我正在 Android 中测试片段 并且片段生命周期有一些令人困惑的行为 我有一个活动 在横向和纵向模式下使用 xml 布局 我有一些代码可以访问在片段布局之一中定义的 EditText 对象 如果我以横向模式启动应用程序 一切都会正常 我

随机推荐

  • CakePHP 2.0:CakeEmail 的挫败感

    在 Cake 1 3 中 电子邮件组件做了它应该做的事情 2 0 中新的 Cake Email 类令人沮丧 没有发送电子邮件 没有错误 模糊的文档 我已经尝试了所有可能的变体 尝试了我的 SMTP Mail 和 Gmail 但没有任何反应
  • 将 char[] 转换为 byte[]

    我想在Java中将字符数组转换为字节数组 有哪些方法可以进行这种转换 无需创建即可转换String object import java nio CharBuffer import java nio ByteBuffer import ja
  • RouteData.Values 保持为空

    我的路线代码如下所示 RouteTable Routes MapPageRoute IDP Person IDP Person aspx 现在我想获取表单上的数据 通常它的工作原理如下 int id Convert ToInt32 Page
  • SQLException:字符串或二进制数据将被截断

    我有一个 C 代码 可以批量执行大量插入语句 在执行这些语句时 我收到 字符串或二进制数据将被截断 错误和事务回滚 为了找出是哪个插入语句导致了这个问题 我需要在 SQLServer 中一项一项地插入 直到遇到错误 是否有聪明的方法可以使用
  • NSNotificationCenter 与委托(使用协议)?

    它们各自的优点和缺点是什么 我应该在哪里具体使用它们 这里的经验法则是有多少客户希望收到事件通知 如果它主要是一个对象 例如 关闭视图或对单击的按钮进行操作 或对失败的下载做出反应 那么您应该使用委托模型 如果您发出的事件可能同时引起许多对
  • 如何从应用程序调用关闭电源、重新启动对话框?

    当从我的应用程序中长按电源按钮时 我想调用关闭电源 重新启动等对话框 与默认的 Android 对话框相同 我不需要从我的应用程序中直接调用重新启动 关闭电源等 只是想调用该对话框 怎么称呼呢 或如何在应用程序上发送电源按钮键 提前致谢 如
  • Nuxt.js - 是否可以将自定义路径/基设置为静态文件的网址?

    TLDR 如何更改静态文件路径src nuxt
  • 从 .idea 文件夹中忽略什么?

    可能的重复 Intellij Idea 9 10 要签入 或不签入 源代码管理的哪些文件夹 我开始使用 WebStorm 进行 Web 开发 但不确定要添加什么以及要从我们的 Git 存储库中排除什么 显然里面有一些文件 idea文件夹旨在
  • 更改 DataGridViewRow 的轮廓

    如果满足某个条件我想改变轮廓DataGridViewRow蓝色使其脱颖而出 我知道这不是BackColor因为它改变了行的背景颜色 我尝试过改变ForeColor为蓝色但没有任何变化 我不相信这是选择风格 因为这种行为不是我想要的 有什么建
  • WPF:如何使 DataGrid 与动态列的绑定可编辑?

    我需要将一些数据绑定到具有可变列数的 DataGrid 我使用以下代码使其工作 int n 0 foreach string title in TitleList DataGridTextColumn col new DataGridTex
  • 在 Android 上将 HTML 转换为图像(任何格式)[关闭]

    Closed 这个问题需要细节或清晰度 目前不接受答案 有谁知道如何在Android上将html代码 其中包含图像 转换为图像 我知道如何使用 JLabel JEditorPane 和 BufferedImage 在 Java 上实现它 但
  • 具有不可移动、默认可构造值类型的 map/unordered_map

    Update 出现在23 5 4 3中here那m 1 版本应该有效 Update2 m 1 正在使用 gcc4 9 1 具体来说 std mutex 假设我想要一个std unordered map
  • Javascript InnerHTML 删除表单元素中的数据

    我有一个带有按钮的表单 允许您向表单添加字段
  • 如何正确取消初始化 OpenSSL

    在我的 OpenSSL 客户端中 我遇到的问题是 当我选择静态链接 libeay32 和 ssleay32 而不是动态链接时 我从 Visual Leak Detector 收到了大量内存泄漏错误 我从 OP 中复制了命令这个线程 但我还剩
  • R 中多个数据帧的相同功能

    我是 R 新手 这是一个非常简单的问题 我发现了很多与我想要的类似的东西 但并不完全一样 基本上我有多个数据框 我只想在所有数据框上运行相同的函数 for 循环可以工作 但我不确定如何正确设置它来调用数据帧 它似乎也最喜欢使用 R 的 la
  • php exec() 命令权限被拒绝

    我有一个 C 可执行文件 skypeforwarder 如果我在 Mac 的终端中使用命令行 skypeforwarder 就可以工作 亨利 Users henry Desktop skypeForwarder skypekit sdk s
  • 如何按照请求的顺序处理 jquery ajax 请求

    我正在制作一个 java servlet 页面 用于检查域名列表 并通过 jquery ajax 请求检查每个名称 除了结果被乱序附加到 DOM 之外 它工作得很好 什么是按请求顺序处理请求但又像长轮询效果一样异步的最佳方法 我是 Java
  • 在启动时通过UAC授予c++程序管理权限

    所以我做了一些研究 但我有兴趣了解如何让他的程序在执行之前向 UAC 请求管理权限 这是否需要在 ShellExecute 中使用 runas 我意识到这是我在编程冒险中需要理解的事情 因为几乎我安装的每个程序都问过我这个问题 例如 如果我
  • 如何将整数转换为日期对象Python?

    我正在 python 中创建一个模块 在其中我收到整数格式的日期 例如20120213 表示 2012 年 2 月 13 日 现在 我想将这个整数格式的日期转换为 python 日期对象 另外 是否有任何方法可以减去 添加此类整数格式日期中
  • Android R 中的后台服务在省电模式下停止

    我编写了一个 Android 应用程序 通过更改电量来检查电池电量 并在电量达到特定值时发出警报 我在我的应用程序中使用了广播接收器和后台服务 它在所有 Android 版本中都能正常工作 但在 Android R 中 当打开省电模式时 服