2010-01-23 28 views
7

我有一個應用程序與幾個活動。 我的A活動具有Manifest Intent過濾器參數:action.MAIN 和category.LAUNCHER。在它被加載後,我打電話給活動B和 finish()A,因爲我不再使用它了。Android從上次活動運行應用程序

我跑我的應用程序後,從活動A到B和按Home 按鈕,當我重新啓動它的應用程序菜單或 市場應用的例(不通過長按Home鍵),它從一個活動開始 ,不保存其最後一項活動B.

我肯定知道這是可以從它的最後一個活動重新啓動應用程序 (從市場的一些應用程序不支持 吧)我認爲這可以通過清單參數 來確定,但我不知道哪一個。

沒有人知道如何實現它,所以我的應用程序可以從其最後的Activity B重新啓動 ?

感謝 ayanir

+0

你想通了?如果是這樣,請與我們分享...... –

回答

1

已經有一些非常類似的問題最近。首先搜索該網站以確保重複問題不被詢問是一個好主意。

例如,下面鏈接的問題說這種行爲發生了,因爲開發人員正在使用Eclipse調試器啓動他們的應用程序。另一個人遇到這個問題是因爲他們直接從Eclipse啓動應用程序,而不是通過手動按下啓動器圖標來乾淨地啓動。

Android: keep task's activity stack after restart from HOME

+0

請注意,此行爲已在Eclipse的ADT插件的0.9.6版本中修復。 –

0

所以在開發Android應用時要考慮幾件事情。其中一件大事就是應用程序生命週期,如果你還沒有,那麼我會建議這個video。會發生什麼情況是應用程序可能會在任何時間點被終止並重置,您需要保存應用程序的狀態,以便隨時恢復。如果您從啓動器打開您的應用程序,您將始終進入啓動應用程序的活動,如果您想跳到下一個活動,則需要存儲該信息,然後跳轉到代碼中的活動。
也看看這個文件約SavingPersistentState

5

雖然我知道這是一個老問題,我用這個非常艱難的問題並因此無法找到答案。所以,這裏是我的(非常新手)答案:

不,我不認爲這可能通過搞清楚清單來實現 - 您只能從主屏幕爲每個應用啓動一個固定的活動。然而,你可以做的是從這個起點開始你想要的任何活動,並且Android可以快速完成任務,以至於你永遠不會看到第一個。

雖然這種感覺非常像一個黑客,我實現了這個路由在首發活動的onResume()方法,並用sharedPreferences跟蹤其活動的開展:

final Class<? extends Activity> activityClass; 
    SharedPreferences prefs = getSharedPreferences("sharedPrefs", MODE_PRIVATE); 
    int activityID = prefs.getInt("whichActivity", -1); 
    if (activityID == Constants.ACTIVITY_ID_MAINSCREEN) { 
     activityClass = MainScreen.class; 
    } else { 
     activityClass = null; return; 
    } 
    Intent newActivity = new Intent(this, activityClass); 
    this.startActivity(newActivity); 
相關問題