如何保证service一直在后台运行

       作为安卓四大组件之一的service,是一个不需要提供与用户交互的UI,且运行在后台,执行长时间操作或者远程操作的组件。

在实际开发应用过程中,我们常常会想要自己的service一直在后台运行,但是安卓会在系统内存低的时候自动清理后台服务,这时我们的服务很有可能就会被kill,浏览了网上的许多方法,加上自己的实践,在这整理了一些让service一直运行在后台的方法:

    一、在service被销毁的时候发送一条广播,即在onDestory里

@Override
public void onDestroy() {

super.onDestroy();

Intent intent = new Intent("在这里写上广播消息,例如com.mmm.ddd.service.destory");
sendBroadcast(intent);
}


   然后写一个广播,

@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub

if ( intent.getAction().equals("com.mmm.ddd.service.destory")) {
Intent myIntent = new Intent(context, service(这里是服务的名称).class);
// myIntent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startService(myIntent);
}

}

然后在mainfest文件里注册广播和服务

  

 

在这里可以给service加上优先级,1000的话表示服务的优先级很高,在系统内存低的时候不会被先考虑干掉。

 
            
                
            
        

当然,这种方法也不是非常保险,我们还可以写一个守护线程,来监听这个服务是否被销毁。

        二,再开一个服务监听第一个服务的销毁

此方法和上一个方法类似,只不过在onDestory时,服务一发送广播,告知服务二服务一被销毁了,此时服务二接收广播启动服务一,同理,服务二销毁时发送广播告知服务一,服务一在启动服务二。

你可能感兴趣的:(如何保证service一直在后台运行)