2つの異なるスレッドから同じUI操作(Toast
メッセージの表示)を行う必要がある状況に陥りました。違いは、最初のスレッドはアクティビティのUIスレッドであり、もう1つはバックグラウンドプロセスを実行し始めた別のスレッドだということです。問題は、Toast
メッセージを表示するコードが常にUIスレッドから実行されるようにするためのベストプラクティスは何かということです。私はここに二つの可能性を見ている。Android:UI操作がUIスレッド上で確実に行われるようにするためのベストプラクティス
は、我々はそれが我々からrunOnUiThread()
を使用できるため、UIスレッド上で呼ばれるように持っていることを確認
private void showToast() {
Toast.makeText(context, message, Toast.LENGTH_LONG).show();
}
などのテストメッセージそして、我々は、このメソッドを呼び出すたびに表示するようになっている機能を持っています私たちが呼んでいる場所showToast()
。
Toast
を表示するコードが、showToast()
の方法内のUI thread
で実行されるようにすることもできます。次のようなもの:
private void showToast() {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(context, message, Toast.LENGTH_LONG).show();
}
});
}
これはどちらが優先され、なぜですか?
なぜ2番目のオプションを使用しませんか? –
[Androidの更新UI要素 - ベストプラクティス?](http://stackoverflow.com/questions/21635062/android-updating-ui-thread-elements-best-practice)の可能な複製 –