当前位置: 首页 > 知识库问答 >
问题:

手机打瞌睡时在后台运行应用程序

金高轩
2023-03-14
adb shell dumpsys deviceidle whitelist +<Package Name>

谁能给我建议哪种最好的方法来不中断地运行应用程序

共有1个答案

禄光霁
2023-03-14

实际上,如果不运行前台服务,就无法做到这一点。在白名单中列出可能不适合您的应用程序,即使是这样,您还是要求用户给您许可,从最终用户的角度来看,这可能是危险的。

不过,我对此有个窍门。收听Android的广播,当你捕捉到该设备将进入打瞌睡模式时,启动前台服务。在大多数情况下,用户将无法看到您的前景通知图像,也不知道您正在运行一个服务。因为设备处于Hibernate模式,这意味着它在某个用户不观看的地方是稳定的。所以你可以做任何需要的事情。

您还可以收听打瞌睡模式结束时发送的广播。当这种情况发生时,停止前台服务,以正常的逻辑与报警经理一起工作。

PowerManager pm = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) {
    if(intent.getAction().equals("android.os.action.DEVICE_IDLE_MODE_CHANGED")){
        if (pm.isDeviceIdleMode()) {
            startForegroundService();
            //stopAlarmManagerLogic();
        } else {
            stopForegroundService();
            //startAlarmManagerLogic();
            return;
        }
        return;
    }
}
 类似资料:
  • 我正在使用后台服务,以获得用户的位置和上传到服务器。 我使用了一个扩展Service类的LocationTrack类和扩展BroadcastReciver的AlramReciver。 我已经在manifest中添加了所有权限,并在manifest文件中注册了AlarmReciver和LocationTracker类。 Oreo-在前台启动服务 https://developer.android.c

  • 请注意,禁用应用程序的电池优化不会帮助打瞌睡模式,正如这里所回答的。

  • 进入Androids的Doze模式(锁定屏幕,运行adb shell dumpsys电池拔出,然后运行adb shell dumpsys deviceidle Force-Idle) 几秒钟/分钟后,在“运行”选项卡下,将出现以下内容: 和 捕获的异常是:MyDatabase getDatabaselData[cloud_firestore/unavailable]服务当前不可用。 pubspec

  • 我试图实现推送通知与反应本机与此插件反应本机推送通知。我成功的是在应用程序运行时收到通知(在前台),但我想做的是在应用程序关闭时收到通知(后台),不运行,当我收到通知进入应用程序时。 我的密码 我正在使用firebase函数发送通知 AndroidManifest。xml 正如我之前所说的,只有当应用程序运行时,当我使用firebase http功能发送时,我才能成功获得通知。我现在只在Andro

  • 问题内容: 我正在使用Eclipse管理我的Android项目,该项目使用Amazon的适用于AWS的Android库。我已将库jar文件添加到./libs文件夹,从中我将库添加到了Java构建路径(项目属性-> Java构建路径->库->添加JARS …)。我的应用程序可以正确编译,但是当我在模拟器或电话上运行它时,会出现NoClassDefFoundError。我了解到,正确编译应用程序后通常

  • 我有一个简单的java程序,它只是一段代码,可以从数据库中读取并根据某些条件修改数据库的内容。现在,我想要的是这个程序应该在启动时自动启动并在后台静默运行,除非有人从任务管理器中杀死它。我以前从未做过这样的事情,也不知道具体该怎么做。有人能帮我解决这个问题吗?谢谢你...