我可以通过调用new来实例化android中的绑定服务类吗?

时间:2016-08-10 03:05:31

标签: android android-service android-service-binding

使用绑定服务的正常方式:

private ServiceConnection musicConnection = new ServiceConnection() {

  public void onServiceConnected(ComponentName name, IBinder service) { 
    MusicBinder binder = (MusicBinder)service;
    //get service
    musicSrv = binder.getService();
    //pass list

    musicBound = true;
  }

  @Override
  public void onServiceDisconnected(ComponentName name) {
    musicBound = false;
  }
};



Intent  playIntent = new Intent(this, MusicService.class);
bindService(playIntent, musicConnection, Context.BIND_AUTO_CREATE); 

而不是这个,我们不能使用它:

MusicService music=new MusicService();

如果是,那么以两种不同方式获得的两个实例之间是否会有任何差异?

1 个答案:

答案 0 :(得分:2)

绑定服务或启动服务将导致对目标服务的生命周期方法的相应调用。 如果此服务尚未运行,它将被实例化并启动(如果需要,为其创建一个进程);如果它正在运行,那么它仍然在运行。

新服务只是创建一个新对象,没有任何意义,系统对此一无所知。

就像活动一样,你不能新建一个活动,你应该开始一个活动,然后onCreate将响应创建活动实例并调用它的{{1}}方法。