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();
}