Java 在继续之前,如何等待OnService已连接

Java 在继续之前,如何等待OnService已连接,java,android,multithreading,android-service,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的OnSer

在我的应用程序中,我有一个按钮,单击一个按钮就可以绑定到服务

SomeObject mObject = null;
bindService(new Intent(IServiceRunner.class.getName()), mServiceRunnerConnection, Context.BIND_AUTO_CREATE);
if(mSomeObject != null) {
...
//SOME_CODE_1 
...
}
在mServiceRunnerConnection的OnServiceConnection方法中,我正在实例化一个对象,如下所示:

public void onServiceConnected(ComponentName className, IBinder service) {
        mSomeObject = IServiceRunner.Stub.asInterface(service);
}
但是在调用bindService()之后,我正在使用这个mSomeObject。问题是这个实例化需要很短的时间,到那时我的代码失败了,我无法执行一些代码

我知道最好在onServiceConnected()方法本身中编写一些_代码_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 
...
}

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

是的,你是对的:在服务连接()中编写一些代码,没有其他方法可以定义真正的布尔值。完成mSomeObject后,将该值设置为false。当您等待mSomeObject时,使用while(value){}@ozi和您将永远等待,因为onServiceConnected将永远不会被调用,不要这样做that@pskink你也可以让时间计数,对吗?如果长时间>5秒。打破继续null@ozi,不,它将不起作用,绑定到服务后无法阻止线程