我已经实现了一个 Android 服务 ( START_STICKY
),它在设备启动时启动并在后台运行。该服务的功能是与 SD 卡交互。由于它连续运行,以粘性启动它会消耗电池。为了解决大量的电池消耗问题,我想在用户使用设备时启动此服务。
理想情况下,基于ACTION_SCREEN_ON
&ACTION_SCREEN_OFF
意图启动/停止服务。
当我对此进行测试时发现我无法在清单中注册ACTION_SCREEN_OFF
& ACTION_SCREEN_ON
,因此我在我的服务中创建了一个广播接收器来捕获ACTION_SCREEN_OFF
& ACTION_SCREEN_ON
。
但是,由于我无法在清单中注册意图,所以当我在ACTION_SCREEN_OFF
. 当屏幕重新打开时,我怎么可能启动它?
注意:正如我已经提到的SCREEN_ON
+SCREEN_OFF
不能在清单文件中注册。它像这样注册
// REGISTER RECEIVER THAT HANDLES SCREEN ON AND SCREEN OFF LOGIC
IntentFilter filter = new IntentFilter(Intent.ACTION_SCREEN_ON);
filter.addAction(Intent.ACTION_SCREEN_OFF);
broadcastReceiver = new TestReceiver();
registerReceiver(broadcastReceiver, filter);
因此,当服务未运行时,此意图将不会触发。