繁体   English   中英

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

[英]Foreground service pausing/sleeping after a while app is in background

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

我有一个连接到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和华为电话进行了测试。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM