2011-01-11 74 views
4

如果設備內存不足,是否有人知道是否有可能將活動從活動堆棧中移除?我有一個調用web瀏覽器,然後網頁調用的活動B的做一些事情,然後在使用此意圖用標誌返回到行動A.我是一位活性的..如何返回活動堆棧中某個活動?

Intent intent = new Intent(this, acticityToReturnTo.getClass()); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
intent.setFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); 
startActivity(intent); 

..to刪除網頁瀏覽器活動和活動B從活動堆棧返回到活動A但它不起作用。它總是一個活動A的新實例,它被創建,而是恢復到已經存在的活動實例。 我不想在活動A上使用單實例標誌,但這是目前唯一的解決方案..(Im開發Android 1.6)

也許有另一種解決方案來做我想做的?

回答

2

只是嘗試使用

startActivityForResult(intent);

而不是

startActivity(intent);

+0

hm沒有改變任何東西對我來說:/我敢打賭,因爲網頁瀏覽器的活動。 – 2011-01-15 14:22:32

0

如果導航始終是A-> B-> A,你可以只需撥打活動B finish(),它會返回活性的

+0

不,導航是A->外部瀏覽器 - > B-> A,我認爲這個問題是我不能從活動堆棧中刪除extermal webbrowser活動 – 2011-01-15 14:18:33

0

包括網絡瀏覽和活動A在相同的任務?您可以在控制檯中輸入adb shell dumpsys activity進行檢查。

+0

我使用普通的uri intent來啓動非標準web瀏覽器,所以瀏覽器不能在同一個任務中。這是否重要? – 2011-01-15 14:20:42

1

我更願意考慮它的原因是爲什麼它重新啓動活動A的問題,因爲活動A或B可能會在您的操作過程中的任何時候被殺死。

當然,最好讓它可以返回到活動A,無論您是重新啓動它還是從頭開始重新創建它,因爲不能保證這不會發生。

+0

我認爲你是對的這不是一個好的設計,我現在改變它,但它應該與FLAG_ACTIVITY_CLEAR_TOP標誌一起工作,我認爲這將節省資源重用現有的活動(如果它仍然存在) – 2011-01-15 14:25:16