anroid service 如何一直在后台运行?

天王盖地虎626 发布于 2014/09/29 11:39
阅读 894
收藏 0

如果,我在客户端的主界面执行下面的语句


Intent intent=new Intent(MainActivity.this, ServiceDemo.class);  
 startService(intent);   启动

我想,只要不调用

 stopService(new Intent(this, ServiceDemo.class));

应该一直处于运行的,

我现在希望该工程的其他activity任何时候都可以调用该ServiceDemo服务的一个方法,请问该怎样弄哦?

我先前采用activity中绑定的办法,如下

mConnection = new ServiceConnection() {

         @Override
         public void onServiceDisconnected(ComponentName name) {
             mService = null;
         }

         @Override
         public void onServiceConnected(ComponentName name, IBinder service) {
             // 获取服务上的IBinder对象,调用IBinder对象中定义的自定义方法,获取Service对象
          TrackService.LocalBinder binder=(ServiceDemo.LocalBinder)service;
             mService=binder.getService();
         }
     };
  
  /**
   * 绑定服务
   */
  if(mService ==null){
   bindService(new Intent(TrackAddActivity.this,ServiceDemo.class), mConnection, Service.BIND_AUTO_CREATE); 
  }

该办法可以获得mService实例对象,可以调用该mService方法中的方法,但是这样弄,如果这个activity退出了,也会把mServiceg给干掉,这不是我希望的,请问有什么办法哦?

加载中
0
carlos
carlos
不使用binder机制可以的吧,别的activity也可以发intent去启动这个service啊
0
xizzhu
xizzhu

你可以继承一个Application对象,然后在其onCreate()里面调用startService()来启动这个Service,这样所有的Activity都可以bind这个Service而不被杀掉了

记得在你的Service里面覆盖onStartCommand()方法,这样即使系统杀死了你的Service,也会自动重启的:

@Override
public int onStartCommand(Intent intent, int flags, int startId) {
    return START_STICKY;
}



0
zhx2012
zhx2012
使用startForeground()试试
返回顶部
顶部