怎么让service开机启动,并且不能让第三方软件禁止

来源:互联网 发布:腾讯软件测试待遇 编辑:程序博客网 时间:2024/06/07 11:08

1、如果需要让service开机启动,那么首先需要在开机的时候,发送Intent.ACTION_BOOT_COMPLETED广播

public class completedReceiver extends BroadcastReceiver {


@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if(intent.getAction().equals(Intent.ACTION_BOOT_COMPLETED)){
Intent startIntent=new Intent(context,service.class);
context.startService(startIntent);
}
}
}

2、为了不能让第三方软件禁止或杀死,需要在service里面,将onStartCommand方法中加上flags=START_STICKY,并且在onDestroy重新开启服务

public class service extends Service{

private final static String TAG="service";
private boolean istop=true;
@Override
public IBinder onBind(Intent intent) {
// TODO Auto-generated method stub
Log.i(TAG, "onBind");
return null;
}
@Override
public void onCreate() {
// TODO Auto-generated method stub
Log.i(TAG, "onCreate");
super.onCreate();
}
@Override
public int onStartCommand(Intent intent, int flags, int startId) {
// TODO Auto-generated method stub
Log.i(TAG, "onStartCommand");

flags=START_STICKY;
return super.onStartCommand(intent, flags, startId);
}
@Override
public void onDestroy() {
// TODO Auto-generated method stub
Log.i(TAG, "service is stopping");
istop=false;
Intent reStartIntent=new Intent(this,service.class);
startService(reStartIntent);
super.onDestroy();
}
@Override
public void onStart(Intent intent, int startId) {
// TODO Auto-generated method stub
Log.i(TAG, "onStart");
new Thread(new Runnable() {

@Override
public void run() {
// TODO Auto-generated method stub
while(istop){
try {
Thread.sleep(1000);
Log.i(TAG, "service is running");
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
}).start();
super.onStart(intent, startId);
}
}

3、在manifest加上相应的配置文件

0 0