问题
在android 8.0以上版本谷歌对后台service进行了严格限制,不允许后台service默默的存在,若想用service,必须以startForegroundService的方式启动service且必须在service内部5s内执行startForeground方法显示一个前台通知,否则会产生ANR或者crash。
解决问题
在MainActivity中启动服务
Intent intent1 = new Intent();
intent1.setClass(this, TestService.class);
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
startForegroundService(intent1);
} else {
startService(intent1);
}
TestService类
public class TestService extends Service {
private static final String ID = "channel_1";
private static final String NAME = "前台服务";
@Override
public IBinder onBind(Intent intent) {
return null;
}
@Override
public void onCreate() {
super.onCreate();
Log.d("日常打log", "onCreate");
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES