2012-07-05 10 views
7

Mam aktywność o nazwie HomeActivity, która ma SurfaceView i pokazuje obraz z podglądu z kamery. Ta aktywność jest bardzo cicha i wydaje się wolna, jeśli ją uruchamiasz/uruchamiasz ponownie.onCreate jest zawsze wywoływany, jeśli nawigacja wstecz z intencją

Więc zrobiłem kilka badań i okazało się, że w jakiś sposób zawsze metoda onCreate jest nazywany. Moim zdaniem nie powinno to mieć miejsca, jeśli działanie już się rozpoczęło?

Numer documentation mówi: Wywoływany, gdy aktywność jest tworzona po raz pierwszy. W tym miejscu powinieneś wykonać całą normalną konfigurację statyczną: tworzyć widoki, wiązać dane z listami itp. Ta metoda zapewnia również pakiet zawierający wcześniej zamrożony stan działania, o ile taki był. Zawsze następuje po onStart().

Oto metoda, która obsługuje wracając:

protected void gotoHome() { 
    final Intent intent = new Intent(SomeOtherActivity.this, HomeActivity.class); 
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(intent); 
} 

Edit:

Oto jak wyjeżdżam HomeActivity ... nic specjalnego:

final Intent i = new Intent(HomeActivity.this, SomeOtherActivity.class); 
startActivity(i); 
+0

Upewnij się, że nie kończy() HomeActivity podczas uruchamiania innej działalności z nią. – Egor

+0

onCreat() wywołuje, gdy wracają z metodą 'gotoHome()'? –

+0

@ Egor Nie dzwonię zakończyć() – Mark

Odpowiedz

14

Tak, kiedy aby powrócić do HomeActivity, trzeba użyć tych znaczników:

intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_SINGLE_TOP); 

Oto odnośny odcinek od dokumentacji na Intent.FLAG_ACTIVITY_CLEAR_TOP:

aktualnie działającej instancji działalności B w powyższym przykładzie albo otrzymać nową intencję jesteś począwszy tutaj w onNewIntent metoda () lub samemu zakończyć i ponownie uruchomić z nowym intencją . Jeśli jest to deklaruje tryb uruchamiania być „wielu” (domyślnie ) i nie ustawiono FLAG_ACTIVITY_SINGLE_TOP w tym samym intencyjny, a następnie zostanie ona zakończona i ponownie utworzone; dla wszystkich innych trybów uruchamiania lub jeśli FLAG_ACTIVITY_SINGLE_TOP jest ustawiona, ta intencja będzie dostarczona do bieżącej instancji naNewIntent().

+0

Dziękuję bardzo! Facepalm ... mógł sam mieć ten pomysł! – Mark

+0

Czasami zdumiewa mnie, jak szybko można uzyskać użyteczną odpowiedź ;-) Cieszę się, że mogę pomóc. –

+0

Witaj Davidzie, Moja aktywna pomoc jest wywoływana za każdym razem, gdy wracam z aktywności dziecka, Czy możesz mi pomóc? –