在系统杀死Android应用程序之前,该应用程序可以在后台运行多长时间关闭了电池优化功能?

问题描述

我正在构建一个Android应用,该应用需要与外围设备保持持续的蓝牙(经典)通信。只要应用程序在前台运行,一切都很好。但是,当应用程序置于后台时,系统会在不确定的时间后杀死该应用程序。该应用可以在2到15分钟内挂在任何地方。即使该应用没有进行电池优化,也会发生这种情况。我希望通过关闭电池优化功能,可以防止Android将应用置于待机模式/杀死它。

如果该应用在电池上运行时无法永远运行,那么该应用在后台可以运行多长时间?

我希望应用程序在后台的存在时间是可以确定的!感谢您对此事的帮助。

在运行Android 8.1.0的Motorola G5S Plus上进行了测试

清单文件的“ background_running”已打开: <Meta-data android:name="android.app.background_running" android:value="true"/>

应用程序的目标SDK为API 29:Android 10

解决方法

您需要使用WakeLock / Foreground Service来实现后台服务,在服务中,您需要编写要在后台运行的所有蓝牙代码,在服务中的活动/片段中编写的代码,需要实现蓝牙回调广播接收器。