在AndroidManifest.xml文件中添加以下代码:
其中,YourForegroundService
是你自定义的前台服务类名。上面的foregroundServiceType
属性可以将服务标记为位置或数据同步类型,以避免Android 13杀死服务。
在YourForegroundService
类中,添加以下代码以获取唤醒锁:
private PowerManager.WakeLock wakeLock;
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE);
wakeLock = powerManager.newWakeLock(PowerManager.PARTIAL_WAKE_LOCK, "ForegroundService::WakeLock");
wakeLock.acquire();
// do your things...
return START_STICKY;
}
@Override
public void onDestroy() {
super.onDestroy();
if (wakeLock != null) {
wakeLock.release();
}
}
在onStartCommand
方法中获取唤醒锁,并在onDestroy
方法中释放。
这样做可以保持服务在后台持久运行,即使屏幕关闭。注意,这也可能会导致Android 13在需要时杀死服务,以释放系统资源。