1、不被系统回收
在manifest.xml中设置
<application
android:allowBackup="true"
android:icon="@drawable/logo"
android:label="@string/app_name"
android:theme="@style/AppTheme"
android:persistent="true"
>
2、不被第三方软件杀死
a、重写Service的onStartCommand,修改flag的值,此处flag设置是Service被杀之后重新启动
@Override
public int onStartCommand(Intent intent,int flag,int startId){
flag=START_STICKY;
return super.onStartCommand(intent,flag,startId);
}
b、重写Service的onDestroy,Service被销毁之后,手动启动该服务
@Override
public void onDestroy(){
super.onDestroy();
Intent intent=new Intent();
intent.setClass(this,MainService.class);
startService(intent);
}
3、以上的方法都无法避免被杀掉的命运,如果有某些模块想一直保持运行状态,那么上面的方法都是无法实现。
解决方案是在使用Notification机制:
在Service的onCreate方法中:
@Override
public void onCreate(){
Notification notification=new Notification();
startForeground(1,notification);
}