Android8.0以上server的启动有新的方法:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startForegroundService(new Intent(this, AreaService.class));
}else {
startService(new Intent(this, AreaService.class));
}
在AreaService的onCreate和onDestroy添加下面的方法:
@Override
public void onCreate() {
super.onCreate();
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
StringCHANNEL_ID="myservice";
NotificationChannel channel =new NotificationChannel(CHANNEL_ID,
"mytest", NotificationManager.IMPORTANCE_HIGH);
((NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE)).createNotificationChannel(channel);
Notification notification =new NotificationCompat.Builder(this, CHANNEL_ID)
.setContentTitle("")
.setContentText("").build();
startForeground(1, notification); //主要这边的不要写startForeground(0, notification);
NotificationManager mNotificationManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);
mNotificationManager.deleteNotificationChannel(CHANNEL_ID); // 取消弹框操作
}
}
@Override
public void onDestroy() {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
stopForeground(true);
}
super.onDestroy();
}
网友评论