2012-09-02 90 views
0

我有3活動:活動A,B和C 活動A是我登錄的活動,其中用戶登錄到他的帳戶, 活動B是儀表板 和活動C有ListView重新啓動應用程序時無法保留當前活動

在Android手機上: 當我在活動C我按下我的手機上的主頁按鈕,它需要我的手機主屏幕,當我嘗試再次啓動應用程序,它需要我到活動而不是最初離開的活動C。

在仿真器: 當活動çIM我按我的手機,比Home鍵時,我嘗試再次啓動該應用程序需要我到活動C.

此外,我對每個活動設置的onResume剛在活動恢復時檢查手機是否可以訪問互聯網。 現在的問題是,我不明白爲什麼我沒有在手機上獲得相同的行爲,因爲我在模擬器上獲取。

我想讓應用程序從活動C開始,在那裏我離開它。我想要獲得與模擬器上相同的行爲。

仿真器上也沒有發生錯誤或崩潰,所以我很難找出問題所在。

請指導我該做什麼或請告訴我可能是什麼問題。

謝謝!

+1

如果您保存的登錄信息,並與[數據存儲指南]中描述的任何方法(http://developer.android最後的位置(可能。 com/guide/topics/data/data-storage.html)),那麼您可以跳過活動A,並在用戶關閉設備後重新開始。 – Sam

+0

@Sam謝謝你的回覆。我在內部數據庫上保存了登錄信息。但它沒有多大幫助。 – Viking

+0

太棒了,但它怎麼沒有多大幫助?在Activity A的onCreate()中,你應該檢查一個登錄是否存在。如果是這樣,請立即啓動B或恢復上次使用的活動(如果您還保存此信息)。 – Sam

回答

1

關於你沒有使用Eclipse來啓動應用程序 - 我想介紹另一種解決方案。

請看看活動代碼清單中的以下項:android:alwaysRetainTaskState http://developer.android.com/guide/topics/manifest/activity-element.html#always

根據文件,它的默認值是假的。如果在任務根活動(在你的情況下是Launcher,我認爲)中設置爲true,它會告訴系統始終保持任務的狀態並且不重置它。因此,即使進程將被終止 - 在重新啓動之後,您應該出現在最新的任務狀態中。

但是,要小心,因爲這種做法將被毀掉,如果

  1. 你不會指定它爲任務的根源。
  2. 如果您在應用程序內使用任務操作標誌作爲您的意圖。例如FLAG_ACTIVITY_CLEAR_TASK/FLAG_ACTIVITY_CLEAR_TOP /等

好運

+0

感謝您的回覆。我無法做到這一點,因爲我正在使用FLAG_ACTIVITY_CLEAR_TOP:S – Viking

+1

對不起Clear_Top,我認爲它仍然不會改變爲任務的根目錄 - 如果是這樣的話 - 仍然可以使用該方法。如果有效,你可以試試。 – AlexN

+0

感謝它工作:) – Viking

0

根據您使用的是什麼Eclipse ADT插件,手機上的行爲可能是錯誤的,因爲您正在從eclipse啓動應用程序。 你可以嘗試「adb install your_app.apk」並從屏幕手動啓動它,它可以解決問題。

一般來說,你描述的行爲是一個設計的行爲,所以如果不打斷(通過意圖標誌和清單語句) - 系統應該按照你的意願行事,恢復最後的活動和它的狀態。

祝你好運

+0

感謝你的response.i手動安裝了我的手機上的應用程序,並直接從那裏運行它。我沒有通過Eclipse運行應用程序。請你詳細說明more.I沒有得到你想說的第四和第五行。 – Viking

+0

感謝您的詳細信息,請查看我有關保留狀態的新答案。 – AlexN

1

那麼,這兩種行爲都是正常的。這裏是發生了什麼: 當你從「Activity C」按下主頁按鈕時,OS將你帶到android主屏幕,然後由操作系統決定是否銷燬Activity或保留它(這取決於資源操作系統需求)。

那麼在模擬器上可能沒有或很少有其他活動在運行,因此操作系統不會銷燬「活動C」,當您重新啓動應用程序時,它會將您帶到仍然存在的「活動C」。

與模擬器相比,您的設備必須運行大量其他應用程序和服務,並且需要資源使其順利運行,因此,當您退出活動操作系統會破壞該活動並聲明爲該應用程序提供的資源。 因此,當您啓動應用程序時,它會重新啓動或重新啓動應用程序,在您的情況下爲「活動A」。

因此,它的非常正常的行爲,你應該擔心它。

有關更多詳細信息,請閱讀this

+0

感謝您的回覆。請給我建議任何可能解決此問題的解決方案? – Viking

+1

首先,我不認爲它是一個問題,其次我真的懷疑是否有什麼可以實現的。不過你可以看看這個:https://groups.google.com/forum/?fromgroups=#!topic/android-developers/OMWPwVYt2aI。 – Sayyam

+0

「活動A」和「活動B」是做什麼的? – Sayyam

相關問題