前台服务在后台运行一段时间后暂停/休眠

时间:2019-11-28 17:50:40

标签: android performance service

我是应用程序开发的初学者,非常感谢您的帮助!

我有一个连接到BLE设备并连接到前台服务的应用程序,该服务收集BLE设备提供的数据。前台服务已绑定到活动。

问题是,当用户最小化应用程序/按首页并锁定手机,然后过一会儿(5-10分钟)后,服务始终暂停还是睡眠/打ze睡? (也许是整个应用程序?)。

从Android Profiler:CPU始终保持约20-30%,内存为160MB,然后在暂停/睡眠后降为0。

我在BluetoothGattCallback.onCharacteristicChanged上有日志,每次BLE设备发送数据以检查服务是否仍处于活动状态时都会调用该日志。该应用程序在后台运行几分钟后,此日志记录停止。当我恢复该应用程序时,原本在“空闲时间”期间发送的数据会同时泛洪(也缺少我认为的某些数据)。这是一个问题,因为我需要记录数据到达的时间,并且数据流不应中断。 (被称为handler.postDelayed方法,该方法在单独的线程中运行,该线程无限计数以检查服务是否正在停止或App istelf。此方法也停止记录。)

我尝试了以下解决方案,但没有一个起作用:

    活动或应用程序中的
  1. PARTIAL_WAKE_LOCK WakeLock.acquire()。 (没有发布要求进行测试的电话)。请注意,当日志记录停止时,可能同时删除了WakeLock(?)。使用命令“ adb shell dumpsys power | findStr -iake”在adb中进行验证
  2. 清单中的REQUEST_IGNORE_BATTERY_OPTIMIZATIONS。 (用于测试)
  3. startService()和bindService(...,BIND_AUTO_CREATE | BIND_IMPORTANT)并调用startForeground()。
  4. getWindow()。clearFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);活动中。

仅使用Vivo 1811和华为电话进行了测试。

我对此完全迷失了,任何帮助将不胜感激!非常感谢你!

0 个答案:

没有答案