Wie starten Sie eine Aktivität aus einer thread-Klasse in android?
Ich bin Verlängerung einer thread-Klasse und die von dieser Klasse möchte ich starten Sie eine Aktivität. Wie Sie dies tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ich bin Verlängerung einer thread-Klasse und die von dieser Klasse möchte ich starten Sie eine Aktivität. Wie Sie dies tun?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Müssen Sie rufen Sie
startActivity()
auf den Hauptthread der Anwendung. Eine Möglichkeit, dies zu tun ist, indem Sie Folgendes tun:Initialisieren einer
Handler
an und verbinden Sie diese mit dem primären thread der Anwendung.Wickeln Sie den code, mit dem die
Activity
innerhalb einer anonymenRunnable
Klasse und übergeben es an dieHandler#post(Runnable)
Methode.MyActivity.this
ist nur eine Referenz auf die aktuelle Tätigkeit, Rahmen (Sie ändern könnte, umMyActivity.this.getApplicationContext()
wenn Sie wollten, aber es nicht wirklich wichtig ist). Die wichtigste Sache zu verstehen ist, dass Sie hier nicht nennen, diestartActivity()
Methode von einem hintergrund-thread als es könnte Ursache seltsame Rasse-Bedingungen. Stattdessen müssen Sie der post einen Thread der Haupt-thread message queue zur Ausführung an den Haupt-thread. Macht das Sinn?run()
Methode. Es gibt keine thread-Erstellung beteiligt. Der hintergrund-thread sagt einfach das Haupt-thread zur Ausführung der runnable-Objekt, Wann immer er die chance bekommt. Da der Haupt-thread führt die runnables sequenziell eine nach der anderen, wir sind garantiert, dass keine race conditions auftreten.können Sie Etwas wie dieses.
handleMessage
. Nur nach einem Thread ausgeführt werden, auf dem Haupt-thread. Der runnable wird enthalten den code, wird die Aktion starten.Gut zu beginnen, einer Aktivität, einer Klasse, einer Klasse sollte sich mit Aktivität nach mir.
Aber wenn Sie möchten, beginnen Sie die Aktivität mit einigen threading-Funktion können Sie diese Dinge tun.
Statt extends Thread verwenden, implementiert Runnable. Nach, dass einige Klassen, die eine Aktivität haben rufen Sie einfach die start-thread auf und stellen Sie Ihre Logik und das starten Vorsatz.
Ich denke, das ist eine gute Lösung für Sie.