2011-02-23 36 views
4

我無法找到如何在開發過程中維護Android應用程序的狀態。維護標準應用程序Android中的活動備份堆棧狀態(使用singleTask啓動模式)

爲了澄清,我不是在討論維護活動狀態(即跟蹤特定活動的文本框值,複選框等)。

比方說,我的應用程序有兩個活動AB。當我啓動我的應用程序時,它需要我進行活動A,然後按下按鈕將我帶到活動B。此時,我按下手機上的主頁按鈕,返回到主Android UI並退出我的應用程序。但是,如果我選擇再次運行我的應用程序,它應該帶我進入活動B,這是我按下主頁按鈕之前停止的地方,但它將帶我參加活動A

有誰知道我該如何糾正這個問題?

(我的情況下,使用三星活力,如果你需要知道的)

回答

4

「但是,如果我選擇再次運行我的應用程序,它應該帶我到活動B,這是我按下主頁按鈕之前停止的活動,但它正在我參加活動A.「

是的,它應該。如果不是這樣,你已經在你的應用程序中做了一些事情來告訴平臺修改它的行爲。 (看看ApiDemos爲例,它採用標準的行爲,這是它聽起來像你描述你所期望的。)

事情看出來:

  • 不要使用FLAG_ACTIVITY_NEW_TASK當啓動活動時。
  • 請勿使用singleTask或singleInstance啓動模式。
  • 看不到clearTaskOnReset標誌。
+0

啊,這是因爲singleTask啓動模式。我的應用按預期工作。謝謝! – Dan 2011-02-24 03:42:39

1

你想象有一種叫做「應用程序」,但是這是一個錯覺。您的應用程序只是一個活動,服務,接收器等的集合。

如果您查看清單中的intent-filter標記,您會看到主屏幕中的每個圖標均與以下過濾器關聯:

 <intent-filter> 
     <action android:name="android.intent.action.MAIN" /> 
     <category android:name="android.intent.category.LAUNCHER" /> 
    </intent-filter> 

你可以把XML的是同一塊雙方你的活動,你會得到在主屏幕兩個圖標,一個總是啓動活動A,和一個總是啓動活動B.

您可能想要做的是創建一個主活動,該活動基於sh啓動其他活動之一ared狀態。

至於在哪裏實際存儲共享狀態,這取決於你的狀態有多複雜。這是一個好地方開始:http://developer.android.com/guide/topics/data/data-storage.html

0

正如我所理解的問題,你想啓動你的應用程序,並有不同的事情發生每次取決於你最後一次離開的地方。 http://developer.android.com/reference/android/app/Application.ActivityLifecycleCallbacks.html活動生命週期在鏈接中。你的onActivityDestroyed方法需要堅持當前的狀態,並且oncreate需要選擇它。持久性可以通過共享偏好,存儲在文件,數據庫或通過網絡實現http://developer.android.com/guide/topics/data/data-storage.html如果執行不力,使用良好的判斷力,這種不可預知的行爲可能會導致最終用戶感到困惑。

相關問題