Oto mój problem.

Moja aktywność A jako normalna aktywność, teraz Aktywność A zadzwoń do Aktywności B z normalnym zamiarem teraz Aktywność B Zadzwoń Aktywność C. Teraz mam jedno działanie D, które deklaruję jako SingleInstance

  android:launchMode="singleInstance"

Teraz, kiedy zaczynam moją aktywność D z działania C przez intencję, teraz zobaczmy jeden przypadek, w którym użytkownik jest na mojej aktywności D, teraz użytkownik naciska klawisz home, a teraz dociera do ekranu głównego mojego telefonu komórkowego z Androidem. Teraz użytkownik długie naciśnięcie klawisza Home i jest lista ostatnich aplikacji, w których użytkownik naciska moją aplikację, a moja aplikacja pokazuje Aktywność D, która jest aktualna, ale prawdziwy problem zaczyna się, gdy użytkownik naciśnie przycisk Wstecz, zostanie wysłany do ekranu głównego, którego nie spodziewałem się, powinien pokazać mi Aktywność C, która jest Dzwoniący do działania D.

Czy ktoś może pomóc w rozwiązaniu problemu z uruchomieniem aplikacji z listy ostatnich aplikacji.

1
Herry 15 luty 2012, 14:06

3 odpowiedzi

Najlepsza odpowiedź

Teraz, aby wyjść z tego problemu, robię następujące rzeczy.

Jak powiedziałem, aktywność D to pojedyncza instancja zadeklarowana w manifeście Androida, teraz aktywność D ma

onNewIntent(Intent intent)  @Override

Teraz dodaję następujący kod w tej metodzie.

if ((intent.getFlags() & Intent.FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY) != 0) {
        Intent intent=new Intent(Activity D.this, Activity C.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);
        startActivity(intentStart);
        return;
    }
0
Herry 16 luty 2012, 09:33

Czytałeś to? http://developer.android.com/guide/topics/manifest /activity-element.html#lmode ???

  • pojedyncze zadanie
    System tworzy aktywność u źródła nowego zadania i kieruje do niego intencję. Jeśli jednak instancja działania już istnieje, system kieruje intencję do istniejącej instancji poprzez wywołanie metody onNewIntent() zamiast tworzenia nowej.
  • pojedyncza instancja
    To samo co "singleTask", z tą różnicą, że system nie uruchamia żadnych innych działań w zadaniu przechowującym instancję. Czynność jest zawsze jedynym i jedynym członkiem swojego zadania.
0
Sergey Benner 15 luty 2012, 14:13

To samo co "singleTask", z tą różnicą, że system nie uruchamia żadnych innych działań w zadaniu przechowującym instancję. Czynność jest zawsze jedynym i jedynym członkiem swojego zadania

Z dokumentacji

Więc musisz usunąć android:launchMode="singleInstance" z pliku manifestu lub zmienić przycisk zastępowania Wstecz działający w Aktywności D.

0
Natali 15 luty 2012, 14:22