我如何在继续之前等待onServiceConnected

时间:2014-08-19 13:52:32

标签: java android multithreading android-service

在我的应用程序中,我有一个按钮,它可以在点击按钮时绑定到服务。

SomeObject mObject = null;
bindService(new Intent(IServiceRunner.class.getName()), mServiceRunnerConnection, Context.BIND_AUTO_CREATE);
if(mSomeObject != null) {
...
//SOME_CODE_1 
...
}

在mServiceRunnerConnection的onServiceConnected方法中,我正在实例化一个对象,如下所示:

public void onServiceConnected(ComponentName className, IBinder service) {
        mSomeObject = IServiceRunner.Stub.asInterface(service);
}

但是在调用bindService()之后我正在使用这个mSomeObject。问题是这个实例化很少发生,到那时我的代码失败了,我无法执行SOME_CODE_1

我知道如果我在onServiceConnected()方法本身内写SOME_CODE_1会是最好的,但由于各种限制,我不能这样做。

如何在从bindService()调用向前移动之前等待这个mSomeObject被实例化?

我尝试了以下内容:

SomeObject mObject = null;
try{
bindService(new Intent(IServiceRunner.class.getName()), mServiceRunnerConnection, Context.BIND_AUTO_CREATE);
Thread.sleep(3000);
}catch(Exception e){
}
if(mSomeObject != null) {
...
//SOME_CODE_1 
...
}

但这根本不起作用(如预期的那样)。请建议一种方法。

0 个答案:

没有答案