簡體   English   中英

在Android中維護標准應用程序活動后備堆棧狀態(使用singleTask啟動模式)

[英]Maintaining standard application Activity back stack state in Android (using singleTask launch mode)

我無法找到如何在開發中維護我的Android應用程序的狀態。

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

比方說,我的應用程序有兩個活動AB 當我啟動我的應用程序時,它需要我進行活動A ,按下它上面的按鈕將我帶到活動B 此時,我按下手機上的主頁按鈕返回主Android UI並退出我的應用程序。 但是,如果我選擇再次運行我的應用程序,它應該帶我去活動B ,這是我在按下主頁按鈕之前離開的地方,但它轉而帶我去活動A

有誰知道我怎么能糾正這個?

(如果你需要知道,我正在使用三星Vibrant)

“但是,如果我選擇再次運行我的應用程序,它應該帶我去活動B,這是我在按下主頁按鈕之前離開的地方,但是它將我帶到活動A.”

是的,它應該。 如果不是,您已在應用中做了一些事情來告訴平台修改其行為。 (以ApiDemos為例,它使用標准行為,這聽起來就像你所描述的那樣。)

需要注意的事項:

  • 啟動活動時不要使用FLAG_ACTIVITY_NEW_TASK。
  • 不要使用singleTask或singleInstance啟動模式。
  • 看不到clearTaskOnReset標志。

你在想象有一種叫做“應用程序”的東西,但那是一種錯覺。 您的應用程序只是活動,服務,接收器等的集合。

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

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

您可以在兩個活動上放置相同的XML塊,並且您將在主屏幕中獲得兩個圖標,一個始終啟動活動A,另一個始終啟動活動B.

您可能想要做的是創建一個主活動,該活動根據共享狀態啟動其他活動之一。

至於實際存儲共享狀態的位置,這取決於您的狀態有多復雜。 這是一個很好的起點: http//developer.android.com/guide/topics/data/data-storage.html

據我所知,您想要啟動應用程序的問題,每次都會發生不同的事情,具體取決於您上次離開的位置。 http://developer.android.com/reference/android/app/Application.ActivityLifecycleCallbacks.html活動生命周期在鏈接中。 你的onActivityDestroyed方法需要以某種方式持久保存當前狀態,而oncreate需要將其恢復。 持久性可以通過共享首選項實現,存儲在文件,數據庫或網絡上http://developer.android.com/guide/topics/data/data-storage.html這種不可預測的行為可能會導致最終用戶混淆執行不力,所以要善意判斷。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM