メソッドでは、いくつかのコードを呼び出す必要がありますが、メソッドの戻り呼び出しの後です。どうすればいいですか?
// this call needs to happen after the return true call
xmlRpcClient.invoke("newDevices", listDeviceDesc);
return true;
匿名のスレッドを使用して目的を達成し、内部に 1 秒の遅延を追加できます。
try{return true;}finally{yourCode}
メソッドが実際に戻る前に finally が実行されるため、このトリックは実行されません。
new Thread() {
public void run() {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
// this call needs to happen after the return true call
xmlRpcClient.invoke("newDevices", listDeviceDesc);
}
}.start();
return true;
IMO、「リターンが呼び出された後」に何かを行うが、呼び出し元のメソッドが戻り値を処理する前に、リターンの前にそれを行うことと区別できないため、正確にいつ発生させたいかを自問する必要があります。
Swing GUI アプリケーションでは、SwingUtilities.invokeLater
「その他すべて」が完了するまでランナブルの実行を遅らせるために使用できます。これは、単一のユーザー アクションによって多くのリスナーが実行される場合に役立ちます (1 つのコンポーネントがフォーカスを失い、別のコンポーネントがフォーカスを取得し、別のコンポーネントもアクティブ化されます... すべてマウス 1 回のクリックで実行されます)。