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 № 1Posł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.