[英]Android: Closing the application and opening it from recent list
我知道這個問題在SO上已經問了很多遍了,所以花點時間在您否決它之前。 我已經經歷過如何從最近的應用程序列表中刪除應用程序?
以及關於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。
我覆蓋了活動C上的后退按鈕
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具有值,它也不會重定向到活動C?
很抱歉問一個很長的問題,我知道這是不合適的。 謝謝
我會把我的想法...
為什么要檢查B中的sharedpreference呢? 如果您已存儲在sharedprefernce中,則將用戶從A直接重定向到C。
if(sharedPreference)-> C
否則B-> C
當您從最近的afaik啟動時,它將調用onresume而不是oncreate,而且我相信您正在簽入oncreate,因此從最近啟動時它不會執行,請使用日志了解周期,也請參閱活動生命周期。
如果您不需要該活動存在,則可以調用finish()並在清單中放入noHistory ='true'。
請看這些要點,如果我在任何地方錯了,請糾正我...
謝謝,希望對您有幫助...
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.