Android实例化服务通过bindService()

时间:2013-05-04 20:05:18

标签: android service android-service

我遇到绑定服务的问题: 我使用以下代码:

protected void onCreate(){
    ...
    button.setOnClickListener(new OnClickListener(){
           @Override
            public void onClick(View v) {
                if(mService != null)
                               Log.e(TAG, "is instantiated (onClick)!");
            });
}

protected void onStart(){
   super.onStart();
   bindService(new Intent(this, HostService.class), connection, Context.BIND_AUTO_CREATE);
   if(mService == null)
      Log.e(TAG, "is null (onStart)!");
}
...

开始我的活动后“为null(onStart)!”在LogCat中打印。 当我点击按钮“实例化(onClick)!”打印出来。 为什么bindService()不直接实例化我的服务实例mService,如何解决引用它的问题?

thx&问候

1 个答案:

答案 0 :(得分:0)

  

为什么bindService()不直接实例化我的服务实例mService

不应该这样。 bindService()是异步的,就像Android中的许多操作一样。

  

如何解决这个问题?

将您的业务逻辑放在onServiceConnected()的{​​{1}}中,而不是在ServiceConnection来电后立即。