Suche…


Thread-Beispiel mit seiner Beschreibung

Beim Start einer Anwendung wird zunächst der Haupt-Thread ausgeführt. Dieser Haupt-Thread behandelt das gesamte Anwendungskonzept der Benutzeroberfläche. Wenn wir die Task, in der wir die Benutzeroberfläche nicht benötigen, lange ausführen möchten, verwenden wir den Thread, um diese Task im Hintergrund auszuführen.

Hier ist das Beispiel von Thread, das Schlag beschreibt:

new Thread(new Runnable() {
    public void run() {
        for(int i = 1; i < 5;i++) {  
            System.out.println(i);  
        }
    }
}).start();

Wir können Thread erstellen, indem wir das Objekt von Thread erstellen, das die Thread.run() Methode zum Ausführen der thread.Here hat. Die run() Methode wird von der start() Methode aufgerufen.

Wir können die mehreren Threads auch unabhängig voneinander ausführen, was als MultiThreading bezeichnet wird. Dieser Thread verfügt auch über die Funktionalität des Ruhemodus, durch den der derzeit ausgeführte Thread für die angegebene Zeitspanne in den Ruhezustand versetzt wird (die Ausführung vorübergehend abbrechen). Aber der Schlaf wirft die InterruptedException. Also müssen wir damit umgehen, indem wir try / catch verwenden.

try{Thread.sleep(500);}catch(InterruptedException e){System.out.println(e);}

Aktualisieren der Benutzeroberfläche aus einem Hintergrund-Thread

Es ist üblich, einen Hintergrund-Thread für Netzwerkvorgänge oder für lange laufende Aufgaben zu verwenden und dann die Benutzeroberfläche bei Bedarf mit den Ergebnissen zu aktualisieren.

Dies stellt ein Problem dar, da nur der Haupt-Thread die Benutzeroberfläche aktualisieren kann.

Die Lösung ist die Verwendung der runOnUiThread() -Methode, da Sie damit die Codeausführung des UI-Threads von einem Hintergrund-Thread aus initiieren können.

In diesem einfachen Beispiel wird beim runOnUiThread() der Aktivität ein Thread gestartet, der ausgeführt wird, bis die magische Zahl 42 zufällig generiert wird. Anschließend wird die runOnUiThread() mit der runOnUiThread() Methode aktualisiert, sobald diese Bedingung erfüllt ist.

public class MainActivity extends AppCompatActivity {

    TextView mTextView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        mTextView = (TextView) findViewById(R.id.my_text_view);

        new Thread(new Runnable() {
            @Override
            public void run() {
                while (true) {
                    //do stuff....
                    Random r = new Random();
                    if (r.nextInt(100) == 42) {
                       break;
                    }
                }

                runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        mTextView.setText("Ready Player One");
                    }
                });
            }
        }).start();
    }
}


Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow