/ / Aplikacja na Androida ponownie wywołuje MAIN / LAUNCHER zamiast onResume () - Android, manifest z Androidem, cykl życia

Aplikacja na Androida ponownie wywołuje MAIN / LAUNCHER zamiast onResume () - Android, manifest z Androidem, cykl życia

kiedy moja aplikacja na Androida - Aktywność B - zostaje przeniesiona na tło (przez naciśnięcie przycisku Android home), wciąż żyje, funkcja onStop () została wywołana zgodnie z oczekiwaniami.

Aktywność B nie została tutaj zniszczona, ale kiedyużytkownik ponownie kliknie ikonę aplikacji, ponownie wywołuje filtr MAIN i LAUNCHER zamiaru, rozpoczynając działanie A, zamiast wywoływania onResume () w działaniu B.

więc pokazana jest aktywność uruchamiania - Aktywność A -, ale jeśli użytkownik naciśnie przycisk Wstecz Androida, a następnie uruchomi się aktywność (), a stara aktywność - Aktywność B - jest pokazana!

co powinno się stać, gdy zostanie przeniesione działanie Btło jest takie, że Aktywność B jest wstrzymana i zatrzymana. Gdy aplikacja zostanie wznowiona przez naciśnięcie ikony aplikacji, aktywność B powinna zostać wznowiona. (chyba że został zabity i zniszczony, czego nie było)

Jak to naprawić? Aktywność B jest początkowo otwierana przez działanie A przy użyciu

Intent next = new Intent(ActivityA.this, ActivityB.class);
startActivity(next);
finish();

Oto manifest dla działalności B

<activity android:name=".ActivityB"
android:screenOrientation="portrait"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden">
</activity>

Oto manifest do działania A

<activity android:name=".Activity A"
android:screenOrientation="portrait"
android:label="@string/app_name"
android:configChanges="orientation|keyboardHidden">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

dlaczego tak się dzieje i jak to naprawić?

Odpowiedzi:

5 dla odpowiedzi № 1

Posługiwać się android:launchMode="singleTask" w twoim pliku manifeast, w którym deklarujesz aktywność b. Następnie aktywność b nie będzie wyświetlana w tle.