在我的应用程序中,我有一个按钮,它可以在点击按钮时绑定到服务。
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
...
}
但这根本不起作用(如预期的那样)。请建议一种方法。