gpt4 book ai didi

android - 当用户开始使用android设备时如何启动后台服务?

转载 作者:行者123 更新时间:2023-11-29 01:49:18 29 4
gpt4 key购买 nike

我已经实现了一项 Android 服务 (START_STICKY),它在设备启动时启动并在后台运行。此服务的功能是与 SD 卡交互。由于它连续运行,从粘性开始它会消耗电池。为了解决电池消耗过多的问题,我想在用户使用设备时启动此服务。

理想情况下,根据 ACTION_SCREEN_ONACTION_SCREEN_OFF Intent 启动/停止服务。

当我测试它时发现我无法在 list 中注册 ACTION_SCREEN_OFFACTION_SCREEN_ON,所以我在我的服务中创建了一个广播接收器来捕获ACTION_SCREEN_OFF & ACTION_SCREEN_ON

但是,由于我无法在 list 中注册 Intent ,所以当我在 ACTION_SCREEN_OFF 上停止服务时。我怎么可能在屏幕重新亮起时启动它?

注意:正如我已经提到的,SCREEN_ON + SCREEN_OFF 不能在 list 文件中注册。它被注册为

// 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);

因此,当服务未运行时,此 Intent 将不会触发。

最佳答案

您可以使用 BroadCastReciever 根据广播类型调用您的服务

public class MyReceiver extends BroadcastReceiver {

public static boolean wasScreenOn = true;

@Override
public void onReceive(Context context, Intent intent) {

if (intent.getAction().equals(Intent.ACTION_SCREEN_OFF)) {

// do whatever you need to do here

} else if (intent.getAction().equals(Intent.ACTION_SCREEN_ON)) {
// and do whatever you need to do here

}
else if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED))
{
// and do whatever you need to do here
}

}

关于android - 当用户开始使用android设备时如何启动后台服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19294612/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com