进程保活
Android系统升级到了Oreo,本来理论上能正常跑的app被莫名其妙kill掉了,之前写的app也遇到了这样的问题。因此在这里记录一下几个保活的实现方式。
Android8.0新特性之一:为提高设备性能,系统会限制未在前台运行的应用的某些行为,具体而言,现在在后台运行的应用对后台服务的访问受到限制。 应用无法使用其清单注册大部分隐式广播(即,并非专门针对此应用的广播)。
以下表格出自网络,侵删。
保活方式:
1.开启前台Service,即Notification
SDK Version >= 26的情况下,Notification的适配代码:
String channelId = "channel_01";
String name="channel_name";
NotificationManager notificationManager = (NotificationManager) getSystemService(NOTIFICATION_SERVICE);
Notification notification = null;
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
NotificationChannel mChannel = new NotificationChannel(channelId, name, NotificationManager.IMPORTANCE_LOW);
Log.i(TAG, mChannel.toString());
if (notificationManager != null) {
notificationManager.createNotificationChannel(mChannel);
}
notification = new Notification.Builder(this)
.setChannelId(channelId)
.setContentTitle("位置模拟服务已启动")
.setContentText("MockLocation service is running")
.setSmallIcon(R.mipmap.ic_launcher).build();
} else {
NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(this)
.setContentTitle("位置模拟服务已启动")
.setContentText("MockLocation service is running")
.setSmallIcon(R.mipmap.ic_launcher)
.setOngoing(true)
.setChannelId(channelId);//无效
not