我需要一些帮助以使我的应用程序在空闲模式下保持活动,但没有成功。我的应用程序需要每隔10秒从服务器检索一些信息,我无法使用fcm,因为服务器已经创建,无法更改。我也不能使用alarmmanager或jobscheduler,因为间隔为10秒。我还做了一个测试应用程序,它每秒振动一次,每秒增加一个值,并显示当前值,但仍然没有成功。到目前为止,我试过:
将应用程序添加到电池优化设置中的“不允许”列表中,首先手动,然后通过请求适当的权限并显示请求的弹出窗口。这似乎没有效果,如果允许优化,应用程序的行为是相同的。
在主活动、服务和两个位置获取部分唤醒锁。
使用背景线程。先用定时器,然后用while循环。应用程序在被发送到后台15秒后似乎进入休眠状态,即使设备仍然处于活动状态。按下电源按钮15秒后,如果它当时在前台,它也会进入睡眠状态。
使用后台服务(先绑定,然后不绑定)。首先使用计时器,然后使用带有while循环的单独线程。如果在设备处于活动状态或设备被发送到空闲状态(按下电源按钮)时发送到后台,则应用程序在15秒后停止运行。在这两种情况下,振动都会立即停止。
使上述服务成为前台服务。与后台服务不同的是,应用程序在后台运行45秒(设备处于空闲模式时仍为15秒),并且在应用程序运行时振动处于活动状态。在模拟器中,如果我拔下电池并从adb发送强制空闲命令,也可以在相同情况下的真实设备上正常工作。
1条答案
按热度按时间hgb9j2n61#
在不需要额外权限的情况下实现这一点的最简单方法是添加
android:keepScreenOn="true"
对于需要保持清醒的观点。这样地您也可以使用flag
FLAG_KEEP_SCREEN_ON
在活动中保持屏幕打开。有关更多信息,您可以在文档中了解有关保持设备唤醒的更多信息。