我知道這個問題已經在SO上被問過很多次了,所以在你投票之前花點時間。我已經通過How to remove application from recent application list?Android:關閉應用程序並從最近的列表中打開它
Quitting an application - is that frowned upon?
Close application and remove from recent apps
和許多其他問題上了SO。
在我的應用程序中,我將用戶登錄詳細信息存儲在SharedPreferences中。基本上,當我的應用程序啓動 - 活動A - 啓動屏幕將顯示從3秒。然後它將轉到活動B - 用戶登錄頁面,登錄時憑證存儲在SharedPreference中。然後它將轉到活動C - 主頁。 我不希望用戶每次輸入登錄詳細信息,因此我將它們存儲在SharedPreference中,如果該值存在,則直接重定向到活動C - 主頁。
所以流動是這樣的,
如果SharedPreference是空
A->B->C
如果值出現在SharedPreference
A->B->C, I'm checking in Activity B and when the values are present redirect it to C without making the B to come to front.
,如果我打開所有工作正常應用程序從發射器。但是如果我從最近的列表中打開它,即使這些值存在於SharedPreference中,它也將進入活動B.當我從啓動器或最近列表中打開它時,活動A(啓動畫面)不顯示。只有當我註銷並打開它顯示的應用程序。會有什麼問題?
我累了把<activity android:excludeFromRecents="true">
所以迫使它不會出現在最近的名單。即使在此之後,如果我從啓動器打開它,它去到登錄頁面,即活動B.
我重寫這樣的後退按鈕上的活動ç
public void onBackPressed() {
if (backPressedOnce) {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
super.onBackPressed();
return;
}
this.backPressedOnce = true;
Toast.makeText(this, "Please press back again to exit.", Toast.LENGTH_SHORT).show();
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
backPressedOnce = false;
}
}, 3000);
}
public void onResume()
{
super.onResume();
this.backPressedOnce = false ;
}
所以我有兩個問題
Q1)如何讓用戶每次啓動啓動畫面? Q2)如果從最近的列表中啓動,即使SharedPreference具有值,爲什麼它不會重定向到Activity C?
對不起,要問很長的問題,我知道這是不恰當的。 謝謝
我可以看到一個活動,只有當我運行它的第一次,我退出。如果值存在於SharedPreferences中,它不會啓動。 – Aniruddha
請參閱本答案的第2個答案。您可以關閉C並從那裏啓動A.如果屏幕方向改變,這可能會成爲一個問題 - 您無法知道OnResume是由此調用的還是從最近發佈的。哦,順便說一下:從最近發佈的「發佈」實際上只是將應用程序重新放在前面,它從來沒有被首先殺死。如果你想殺死它,你可以在OnPause中使用#3。 – velis