Ich bin in Situationen gelandet, in denen ich die gleiche UI-Operation (sagen wir von einer Toast
Nachricht) aus zwei verschiedenen Threads. Der Unterschied besteht darin, dass der erste Thread der UI-Thread für die Aktivität ist und der andere Thread ein separater Thread ist, mit dem ich einen Hintergrundprozess gestartet habe. Die Frage ist, dass es die beste Vorgehensweise ist, sicherzustellen, dass der Code zum Anzeigen der Nachricht Toast
immer vom UI-Thread ausgeführt wird. Ich sehe hier zwei Möglichkeiten.Android: Best Practice, um sicherzustellen, dass eine UI-Operation auf UI-Thread ausgeführt wird
Wir haben eine Funktion, die die Testnachricht wie
private void showToast() {
Toast.makeText(context, message, Toast.LENGTH_LONG).show();
}
Und jedes Mal, wenn wir diese Methode aufrufen, um zu zeigen, soll sichergestellt werden, dass es auf dem UI-Thread aufgerufen werden muss, für die wir verwenden können runOnUiThread()
der Ort, den wir anrufen showToast()
. Die andere Option besteht darin, sicherzustellen, dass der Code, der Toast
anzeigt, auf der UI thread
innerhalb der Methode showToast()
selbst ausgeführt wird. Soetwas wie das:
private void showToast() {
runOnUiThread(new Runnable() {
@Override
public void run() {
Toast.makeText(context, message, Toast.LENGTH_LONG).show();
}
});
}
Welches ist die bevorzugte Praxis und warum?
Warum nicht die zweite Option verwenden? –
Mögliche Duplikate von [Update der Android-Thread-Elemente - Best Practice?] (Http://stackoverflow.com/questions/21635062/android-updating-ui-thread-elements-best-practice) –