Android8.0后启动Service服务
程序员文章站
2024-02-29 18:40:52
...
参考网址:https://blog.csdn.net/yt_42370304/article/details/105842170
https://blog.csdn.net/sinat_20059415/article/details/80584487
Android8.0后不再允许后台service直接通过startService方式去启动
启动方式
Intent intent = new Intent(this, MyService.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startForegroundService(intent);
} else {
startService(intent);
}
MyService
public class MyService extends Service {
@Override
public void onCreate() {
super.onCreate();
NotificationManager notificationManager = (NotificationManager)
getSystemService(Context.NOTIFICATION_SERVICE);
//创建NotificationChannel
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O){
NotificationChannel channel = new NotificationChannel(NOTIFICATION_ID,
NOTIFICATION_NAME, NotificationManager.IMPORTANCE_HIGH);
notificationManager.createNotificationChannel(channel);
}
startForeground(1,getNotification());
}
//这个必须加,不能设置为null
private Notification getNotification() {
Notification.Builder builder = new Notification.Builder(this)
.setSmallIcon(R.drawable.ic_launcher_background)
.setContentTitle("测试服务")
.setContentText("我正在运行");//标题和内容可以不加
//设置Notification的ChannelID,否则不能正常显示
if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
builder.setChannelId(NOTIFICATION_ID);
}
Notification notification = builder.build();
return notification;
}
}
说明:
测试发现Android8.0后如果用startService启动服务,应用退到后台后此服务一会儿就会被杀掉;如果用startForegroundService启动服务,并且添加了消息通知后,应用后台挂起则不会被系统杀掉
推荐阅读
-
Android8.0后启动Service服务
-
Android8.0 启动 Service 的方法
-
Android8.0之后启动服务崩溃
-
如何配置Linux的服务设置为自动启动或崩溃重新启动后
-
windows重启后自启动多tomcat无窗口模式(没有将Tomcat设置为服务)
-
mysql-8.0.15-winx64 使用zip包进行安装及服务启动后立即关闭问题
-
安装MySQL 5后无法启动(不能Start service)解决方法小结
-
MySQL 重装MySQL后, mysql服务无法启动
-
服务器意外断电后MySQL无法启动
-
本地服务开启MySQL57提示本地计算机上MySQL服务启动后停止。。。。