在Android应用程序关闭后停止服务的解决方法是使用startForeground()方法将服务转换为前台服务,并在服务的onDestroy()方法中停止服务。
以下是一个示例代码:
在服务的onCreate()方法中添加以下代码:
@Override
public void onCreate() {
super.onCreate();
// 创建通知渠道(仅适用于Android 8.0及更高版本)
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel channel = new NotificationChannel("service_channel", "Service Channel", NotificationManager.IMPORTANCE_DEFAULT);
NotificationManager manager = getSystemService(NotificationManager.class);
manager.createNotificationChannel(channel);
}
// 创建通知
Notification notification = new NotificationCompat.Builder(this, "service_channel")
.setContentTitle("Service is running")
.setContentText("This is a foreground service")
.setSmallIcon(R.drawable.ic_notification)
.build();
// 将服务转换为前台服务
startForeground(1, notification);
}
在服务的onDestroy()方法中添加以下代码:
@Override
public void onDestroy() {
super.onDestroy();
// 停止前台服务
stopForeground(true);
// 停止服务
stopSelf();
}
通过将服务转换为前台服务,即使应用程序关闭,服务仍然在后台运行,并且不会被系统停止。当你想要停止服务时,调用stopForeground(true)方法以停止前台服务,并调用stopSelf()方法以停止服务。
请注意,如果你的应用程序在Android 8.0及更高版本上运行,你还需要创建一个通知渠道,并将通知与通道关联起来。这样做是为了遵循Android 8.0引入的通知渠道概念。