怎么让service一直运行

2025-11-21 14:01:38

1、在service被销毁的时候发送一条广播,即在onDestory里,如下代码所示:

@Override  

public void onDestroy() {  

    super.onDestroy();  

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

    sendBroadcast(intent);  

}  

2、然后写一个广播,代码如下:

@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);  

   }   

}  

3、然后在mainfest文件里注册广播和服务,如下代码所示:

<service  

           android:name="(服务的名称)"  

           android:priority="1000" />  

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

<receiver android:name="(广播的名称)" >  

      <intent-filter>  

             <action android:name="com.mmm.ddd.service.destory" />  

       </intent-filter>  

</receiver>  

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

5、再开一个服务监听第一个服务的销毁

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

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢