2010-12-09 24 views
4

Es gibt eine Aktivität in meinem Programm "A1".Beenden der untergeordneten Aktivität, wenn die übergeordnete Aktivität beendet wird

Intent contactPickerIntent = new Intent(Intent.ACTION_PICK, 
       ContactsContract.CommonDataKinds.Phone.CONTENT_URI); 

     startActivityForResult(contactPickerIntent, 1010); 

, wenn der Benutzer wählt einen Kontakt i Kontakt zu verwenden, die in A1 Informationen wünschen: In A1 onCreate i Absicht verwenden android-Aktivität ("A2") zu nennen. Alles ist in Ordnung, aber ...

Wenn ich "home button" in A2, A1 und A2 stil im speicher, und wenn OS kill A1 (oder ich kann es von Task-Manager tun), A2 läuft immer noch und wenn ich mein Programm starte, sehe ich ein OLD A2, und wenn ich einen Kontakt wähle, kann ich das Ergebnis in A1 nicht sehen, weil NEW A1 gestartet wird und NEW A2 aufgerufen wird.

Die Frage ist: Wie kann ich A2 töten, wenn jemand A1 aus dem Gedächtnis tötet.

Antwort

4

Sie können finishActivity (CHILD_ACTIVITY_REQUEST_CALL) in der onStop() - Methode Ihrer übergeordneten Aktivität aufrufen.

In Ihrem Fall:

public void onStop(){ 
    finishActivity(1010); 
} 
+0

fast, was ich will, danke – dilix

+0

Fast? Sie können versuchen, es auf onPause() oder onDestroy() anzuwenden, je nachdem, an welchem ​​Punkt im Leben der Eltern Sie Ihre untergeordnete Aktivität töten möchten – nbarraille

+0

das ist genau das, was ich will, aber es funktioniert nicht wie die Dokumente sagen, in der Tat es scheint überhaupt nichts zu tun ... – schwiz

0

Ich glaube nicht, was Sie fragen, ist möglich.
Meine schlechte, wie von Nbarraille darauf hingewiesen, ist dies möglich. Was ich unten aber sage, wie man mit dem Android arbeiten soll, geht noch.

Noch wichtiger ist, dass dies nicht so ist, wie Sie Dinge tun sollten, wenn Sie mit dem Android-System arbeiten. Wenn Sie etwas über Aktivitäten lesen, und insbesondere, wie die Activity Lifecycle funktioniert, sollten Sie ein wenig Verständnis für die Grundlagen erhalten. Kurz gesagt, Android übernimmt die gesamte Verantwortung dafür, Aktivitäten zu "töten", wenn sie nicht mehr benötigt werden (und andere laufende Aktivitäten benötigen die Ressourcen, die sie besitzen).

Aus was Sie in Ihrer Frage sagen, ist es nicht einfach zu sagen, was das Problem verursacht, wenn Sie A2 beim zweiten Start von A1 aufrufen, aber ich bin ziemlich sicher, dass es nichts zu tun hat du selbst hast A2 nicht getötet.

Verwandte Themen