Aktywność zostanie zabita po naciśnięciu przycisku HOME tylko w trybie zwolnienia
Po pierwsze, mam dwie czynności: Splash i MainActivity (tylko portret wsparcia). W MainActivity mam wiele fragmentów użyj menu Slide. Chcę zachować bieżący fragment, gdy użytkownik opuszcza MainActivity. Oto moja próba:
int currentFragment = 0;
public void onCreate(Bundle savedInstanceState) {
if (savedInstanceState != null) {
currentFragment = savedInstanceState.getInt(CURRENT_FRAGMENT_KEY, 0);
switchContent(currentFragment);
} else {
// change fragment by index
switchContent(0);
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putInt(CURRENT_FRAGMENT_KEY, currentFragment);
Log.d("onSaveInstanceState" ," current fragment" + currentFragment);
super.onSaveInstanceState(outState);
}
Mójmanifest
:
<activity
android:name="com.appiphany.auskills.activity.SplashActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".activity.MainActivity"
android:screenOrientation="portrait" />
Wszystko jest w porządku, gdy tworzę aplikację z kluczem debugowania: naciśnij przycisk Home, a następnie z powrotem do aplikacji, otworzy poprzedni fragment. Ale kiedy buduję w trybie zwolnienia (użyj mojego klucza prywatnego, nie używamproguard
), naciśnij przycisk HOME w MainActivity, a następnie ponownie otwórz aplikację,zaczyna się od SplashActivity. Nie mam pojęcia z tym dziwnym problemem. Wydarzenie to wypróbowuję, ale to nie pomaga:
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
currentFragment = savedInstanceState.getInt(CURRENT_FRAGMENT_KEY, 0);
switchContent(currentFragment);
}
Czy są jakieś pomysły?
Aktualizacja: Znalazłem inną dziwną: problemy te pojawiły się tylko wtedy, gdy zainstalowałem ją z pliku apk. Po instalacji telefon wyświetli 2 opcje:Done
lubOpen
. Jeśli nacisnęopen
, to się stało. Gdy zabijam aplikację za pomocą menedżera zadań, a następnie ponownie otwieram, działa poprawnie.