2013-05-10 164 views
0

我遇到過一個問題 - 清除活動記錄。我有以下結果我的問題出現的地方:Android:清除活動歷史記錄

A(SplashScreen)->B(GuestScreen)->C(Screen for signed users)->Press Home Button->A->B->Press Back Button->C->Press Back BUtton->B->Press Back Button->exit from the app. 

我嘗試不同的方法來解決這個問題,發現整個設置爲singleInstance和setting all intent flags to CLEAR_TOP and NEW_TASK幾乎所有的活動,只有一個很奇怪的解決方案,但所有的活動都呈現一些奇怪的(不作爲通常,我的意思是,首先,出現帶有actionBar的空白黑屏,並且在〜1秒後出現我的真實佈局),並且如我已經說過的那樣稍微延遲。儘管所有事情都是正確的,並且結果正確,但我並不喜歡這個解決方案。現在,我試圖在沒有延遲和奇怪的黑屏的情況下正常工作。我試圖玩意圖標誌,如CLEAR_TASK, CLEAR_TOP。試圖在需要的地方使用clearTaskOnLaunh for root activity and finishOnLaunch in manifest file,並沒有幫助。如何解決它?

編輯:

試圖重新設置clearTaskOnLaunch至A。我看到,當啓動應用程序第一次(A已經稱爲B不帶任何標誌)下一個日誌:

Main stack: 
    TaskRecord{42610648 #869 A } 
    Intent { flg=0x10000000 cmp=/.activities.SplashActivity } 
     Hist #4: ActivityRecord{413cf8f8 /.activities.GuestActivity} 
     Intent { cmp=/.activities.GuestActivity } 
     ProcessRecord{414fdf60 15651:/10103} 

//遊客的活動(B)調用UserActivity(C):

Intent { flg=0x10000000 cmp=/.activities.SplashActivity } 
    Hist #3: ActivityRecord{415c86f0 /.activities.UserActivity} 
    Intent { cmp=/.activities.UserActivity } 
    ProcessRecord{414fdf60 15651:/10103} 

//新聞主頁按鈕並再次啓動應用程序(A稱爲B):

TaskRecord{42610648 #869 A cashongo.app.peachy} 
Intent { flg=0x10000000 cmp=c/.activities.SplashActivity } 
    Hist #5: ActivityRecord{42127398/.activities.GuestActivity} 
    Intent { cmp=/.activities.GuestActivity } 
    ProcessRecord{414fdf60 15651:/10103} 
    Hist #4: ActivityRecord{415c86f0 /.activities.UserActivity} 
    Intent { cmp=/.activities.UserActivity } 
    ProcessRecord{414fdf60 15651:/10103} 

再次出現同樣的問題,歷史上的最後一次活動。如果我按回按鈕,我會得到UserActivity。

+0

不清楚。當您按主頁按鈕當前活動暫停並導航到主屏幕http://developer.android.com/guide/components/tasks-and-back-stack.html – Raghunandan 2013-05-10 09:08:59

+0

我只需要清除應用程序啓動時的所有歷史記錄或任務再次表明堆棧中不會有任何先前保存的活動。 – user1376885 2013-05-10 09:19:13

+0

當你有clearTaskOnLaunh用於根活動時,你在哪裏啓動你的應用程序?是根源活動嗎? – 2013-05-10 09:21:21

回答

0

我不明白你的問題100%

我認爲你正面臨着活動堆棧和CLEAR_TOP問題

所以使用startActivityForResult,而不是startActivity

0

我們固定的方式它走的是一條靜態布爾變量在不久的第一個活動.Say你的第一個活動是A,在一個聲明變量如下

在所有活動的其餘
public static boolean closeAllActivities=false; 

然後將其放置在的onResume()

protected void onResume() { 
super.onResume(); 
if(A.closeAllActivities) 
{  
    finish(); 
} 
else 
{ 
    // TODO your requirement inside onResume 
} 
     } 

下面的代碼哪裏ü想退出應用程序設置爲

A.closeAllActivities=true;//It exits all the activities one after other. 
0

看來我已經成功地修復它,但它仍然有點奇怪。我已經將launchMode = singleInstance設置爲A和B活動。並調用任何沒有任何標誌的活動。活動召喚之間沒有黑屏,延遲1秒。有點奇怪的解決方案,因爲谷歌不建議在一般情況下使用singleInstance或singleTask,我認爲這是一般性的。如果有人會找到更好的解決方案,歡迎您。

更新: 通過IDE構建和啓動apk時,還有一件非常重要的事情。某種IDE啓動應用程序錯誤地看到this post。由於它的堆棧行爲可以改變。

相關問題