私は、この私のプロジェクトでasyncronus XML-RPCクライアント(https://github.com/gturri/aXMLRPC)を使用し、このように、このクライアントのasyncronousコールバック・メソッドを使用して、いくつかの方法を書いている:私が好きな他の方法でコールバック応答からメソッドを呼び出すベストプラクティスは?
public void xmlRpcMethod(final Object callbackSync) {
XMLRPCCallback listener = new XMLRPCCallback() {
public void onResponse(long id, final Object result) {
// Do something
if (callbackSync != null) {
synchronized (callbackSync) {
callbackSync.notify();
}
}
}
public void onError(long id, final XMLRPCException error) {
// Do something
if (callbackSync != null) {
synchronized (callbackSync) {
callbackSync.notify();
}
}
}
public void onServerError(long id, final XMLRPCServerException error) {
Log.e(TAG, error.getMessage());
if (callbackSync != null) {
synchronized (callbackSync) {
callbackSync.notifyAll();
}
}
}
};
XMLRPCClient client = new XMLRPCClient("<url>");
long id = client.callAsync(listener, "<method>");
}
呼び出すためにこのメソッド(ここでは "xmlRpcMethod")を呼び出し、終了するまで待機します。
public void testMethod(){
Object sync = new Object();
xmlRpcMethod(sync);
synchronized (sync){
try{
sync.wait();
}catch(Interrupted Exception e){
e.printStackTrace();
}
}
// Do something after xmlRcpFinished
}
しかし、待っていると、プロジェクトが大きくなると、私は終了する多くの要求を待つ必要がある場合の醜いを取得同期させるこの方法:私はこのような方法を書きました。 これは唯一可能な/最良の方法ですか?あるいは誰かがより良い解決策を知っていますか? RPCコールを遮断作成する
FuturesとExecutorServiceについて聞いたことがありますか?あなたはコンカレントコレクションでもそれを行うことができます。 – Fildor
先物はかなり面白いようです!これらのヒントをありがとう! – bartolja