私はこのようなことをしたい:
public class MyCallable implements Callable<Boolean>, MyObserver
{
Boolean mSuccess = false;
@Override
public Boolean call() throws Exception
{
// ... Wait here until myCallback is called ...
return mSuccess;
}
@Override
public void myCallback()
{
if(something) mSuccess = true;
}
}
だから私はそれを次のように使うことができます:
MyCallable callable = new MyCallable();
FutureTask<Boolean> futureTask = new FutureTask<Boolean>(callable);
ExecutorService executor = Executors.newFixedThreadPool(1);
executor.execute(futureTask);
Boolean successfull = futureTask.get();
この「コールバックが呼び出されるのを待つ」コードはどのようになりますか? 「Boolean mCallbackCalled = false」と呼ばれるメンバーを作成し、while(!mCallbackCalled) だけにすることもできると思いますが、それはかなりハックなようです...