1

メソッドでは、いくつかのコードを呼び出す必要がありますが、メソッドの戻り呼び出しの後です。どうすればいいですか?

// this call needs to happen after the return true call  
xmlRpcClient.invoke("newDevices", listDeviceDesc);

return true;
4

4 に答える 4

1

匿名のスレッドを使用して目的を達成し、内部に 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;
于 2013-11-07T16:05:25.747 に答える
0

IMO、「リターンが呼び出された後」に何かを行うが、呼び出し元のメソッドが戻り値を処理する前に、リターンの前にそれを行うことと区別できないため、正確にいつ発生させたいかを自問する必要があります。

Swing GUI アプリケーションでは、SwingUtilities.invokeLater「その他すべて」が完了するまでランナブルの実行を遅らせるために使用できます。これは、単一のユーザー アクションによって多くのリスナーが実行される場合に役立ちます (1 つのコンポーネントがフォーカスを失い、別のコンポーネントがフォーカスを取得し、別のコンポーネントもアクティブ化されます... すべてマウス 1 回のクリックで実行されます)。

于 2013-11-07T16:42:53.663 に答える