Android SDKにSwingUtilities.invokeAndWaitメソッドがありますか?android invokeandwait equivalent
簡単にエミュレートできますか?
私は、UIスレッドにセカンダリスレッドから治療を投稿し、UIがその実行を完了し、セカンダリスレッド
Android SDKにSwingUtilities.invokeAndWaitメソッドがありますか?android invokeandwait equivalent
簡単にエミュレートできますか?
私は、UIスレッドにセカンダリスレッドから治療を投稿し、UIがその実行を完了し、セカンダリスレッド
初に値を返し、これはおそらく良いアイデアではないことを待つ必要があります。ユーザは、HOMEボタン、BACKボタン、電話受話を受け入れることができます。その場合、UIは意味のある方法で「実行を終了しない」ことがあります。バックグラウンドスレッドを終了してその結果をメインアプリケーションスレッドに送信した後、メインアプリケーションスレッドは別のスレッドをforkすることができます。
さらに、java.util.concurrent
を見て、LinkedBlockingQueue
のようなニーズに合ったものを見つけてください。
私はそれが少し遅れたことは知っていますが、場合によっては助けになるかもしれません。 AndroidUtilities
クラスを作成します:ワーカースレッドで
public class AndroidUtilities {
public static void runOnUiThreadAndWait(Activity act, final Runnable runnable) {
synchronized (runnable) {
act.runOnUiThread(new Runnable() {
public void run() {
runnable.run();
synchronized (runnable) {
runnable.notify();
}
}
});
try {
runnable.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
使用法:
AndroidUtilities.runOnUiThreadAndWait(act, new Runnable() {...});
同期を明示的に行う必要があります:ワーカースレッドがにUIコードを提出する必要がありながら、EDTは、UIコードとnotify
を実行する必要があります私は「その実行を終了」と言うときEDTとwait
乾杯
が、これは「threatmentの実行を終了する」を意味します。ローカルスレッド変数を使用する必要があるため、別のスレッドを起動できません。 – user954469