Android问题绑定启动服务

时间:2013-05-02 19:33:16

标签: android android-service

我在onCreate()中启动我的服务(如果第一次调用onCreate)并在onStart()中调用bindService。该服务有效,但在调用bindService后,我的本地服务实例仍然为null。此外,似乎是没有调用getService()。 这是一些代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
...
if(savedInstanceState == null){
   final Intent i = new Intent(this, HostService.class);
   startService(i);
}

}

protected void onStart(){
    super.onStart();
    bindService(new Intent(this, StartGameActivity.class), connection, Context.BIND_AUTO_CREATE);
}

private ServiceConnection connection = new ServiceConnection(){

    @Override
    public void onServiceConnected(ComponentName arg0, IBinder arg1) {
        HostBinder binder = (HostBinder) arg1;
        hostService = binder.getService();
        isBound = true;
    }

    @Override
    public void onServiceDisconnected(ComponentName arg0) {
        isBound = false;
    }

};

并在HostService中:

...
private HostBinder binder = new HostBinder();
...
public class HostBinder extends Binder{
    HostService getService(){
        Log.d(TAG, "getService");
        return HostService.this;
    }
}

@Override
public IBinder onBind(Intent arg0) {
    return binder;
}

为什么在调用onStart()之后hostService仍然为null,为什么没有调用getService(" getService"不在LogCat中打印)?

thx&问候

1 个答案:

答案 0 :(得分:0)

您无需致电startService();它将由bindService()开始。

onStart()方法中,您要创建启动 StartGameActivity.class 的意图。那是你想要的,还是你的意思是推出 HostService.class

如果这些都不是你的问题,我们需要更多的继续。您可以在onServiceConnected()onBind()方法中添加日志记录声明,以确保它们被调用吗?

任何看起来有趣的logcat消息?

您是通过活页夹还是通过消息与您的服务进行交流?