2010-08-15 15 views
7

Ich habe eine Aktivität. In dieser Aktivität möchte ich mit startActivityForResult() eine andere Aktivität starten. Ich verstehe, dass meine grundlegende Aktivität in einem Prozess mit einem Haupt-GUI-Thread gestartet wird. Aber soweit ich verstehe, ist startActivityForResult() asynchron, was bedeutet, dass meine neue Aktivität in einem anderen Thread ausgeführt wird. Ich kann keine Informationen zu den Threads finden. Wenn es nur einen GUI-Thread gibt, wie funktionieren diese Funktionen asynchron?Was ist der Mechanismus hinter startActivityForResult() in Android?

Antwort

5

Aber soweit ich es verstehe, startActivityForResult() ist asynchronious was bedeutet, dass meine neue Aktivität wird in einem anderen Thread ausgeführt werden.

startActivityForResult() ist asynchron. Das bedeutet nicht, dass Ihre neue Aktivität in einem anderen Thread ausgeführt wird. Wenn die neue Aktivität Teil Ihrer eigenen Anwendung ist, wird sie wie alle Ihre anderen Aktivitäten im Hauptanwendungs-Thread ausgeführt.

Wenn es nur einen GUI-Thread gibt, wie funktionieren diese Funktionen asynchron?

startActivityForResult(), wie startActivity(), tut nichts sofort. Stattdessen wird eine Nachricht in eine Nachrichtenwarteschlange gestellt und dann zurückgegeben. Wenn Sie die Steuerung wieder an Android zurückgeben (z. B. endet Ihre onClick()-Methode), geht Android zur Verarbeitung von Nachrichten aus dieser Warteschlange zurück. Wenn es zu Ihrer Startaktivitätsnachricht kommt, startet es die neue Aktivität.

0

übergeben Sie alle gewünschten Informationen in Form von Extras in Ihrer Absicht.

Intent i = new Intent(getApplicationContext(), YourClass.class); 
i.putExtra("EXTRA_INFO", <your info here>); 
startActivityForResult(i); 

Und in Ihrer neuen Tätigkeit

protected void onCreate(Bundle savedInstanceState) { 
     if(getIntent().hasExtra("EXTRA_INFO"){ 
     mString = getIntent().getStringExtra("EXTRA_INFO"); 
     } 
} 
Verwandte Themen