2011-08-02 26 views
0

我有一個TabScreen作爲我的主屏幕的小型Android應用程序。我遇到了一個小問題,那就是我的應用程序目前失去了關注用戶所在的最後一個活動。Android - 活動行爲?

這是情景:

  1. 用戶啓動應用
  2. 應用程序顯示登錄界面
  3. 用戶輸入登錄信息,並去標籤屏幕
  4. 用戶通過Home鍵
  5. 用戶離開應用程序按應用程序圖標返回到應用程序,登錄屏幕再次顯示

我希望應用程序返回到這種情況下最後一次顯示的活動。

我現在在做什麼是啓動登錄屏幕作爲主/啓動器動作,然後當輸入正確的憑據啓動選項卡屏幕活動並完成登錄活動。

是否有啓動模式或我應該用來實現這一目標?

編輯:更多信息

標籤屏幕啓動只是這樣的:

Intent intentTabActivity = new Intent(getApplicationContext(), TabScreenActivity.class); 
startActivity(intentTabActivity); 

離開過家按鈕的應用程序。

我打算堅持登錄狀態並繞過登錄,但在較小的應用程序上我創建應用程序自動返回到上次顯示的活動,並且每次都不會返回到初始啓動器屏幕,我想知道爲什麼這不是在這個應用程序中的相同行爲。

也根據我的其他問題HERE這種行爲似乎是不同的調試和簽名版本。

這一直在真實設備上進行測試。

+2

需要更多信息。你究竟如何啓動標籤頁?他們是否通過後退按鈕或主頁按鈕離開?爲什麼你不堅持登錄狀態並在登錄時繞過登錄屏幕? – Paddy

+0

你在哪裏檢查這個..?在設備或模擬器..? – ngesh

+0

查看我的編輯上面的問題的答案 –

回答

3

這是正確的行爲。基本上,發生的事情是活動一進入後臺,它就受到Android DVM的支配。如果DVM覺得它需要空間,它將基本上繼續並殺死你的應用程序。所以一旦你嘗試從圖標啓動應用程序,它實際上會從頭開始重新啓動它。

但是,要解決您的問題,您應該在登錄屏幕上有一個類似於「自動登錄」或「記住密碼」的複選框,並且當用戶每次打開應用程序時都會檢查它,它會自動登錄並進入下一個屏幕。這種行爲需要使用某種持久性存儲來實現。

+0

我知道,DVM可能會在任何時候殺死應用程序,但它不應該被立即殺死或至少這是我的經驗與我的其他應用程序,我確實有一個記住我函數,但這隻會返回到主選項卡,而不是用戶打開的最後一個,所以不是我想要的行爲。在調試版本中,我的應用按需運行,它返回到上次查看的活動,但是在簽名版本中,它始終打開登錄活動。 –

+0

這真的取決於設備及其內存資源。因此,如果您的設備是全新的,幾乎爲零運行的應用程序/服務,那麼您的應用程序將不會受到傷害。另一個因素也是您檢索應用程序的時間。 – PravinCG

+0

因此,當我按下應用程序圖標時,簡歷會在LoginActivity上調用,所以我認爲這意味着我的應用程序不會重新啓動,而是正在重新獲取其獲取登錄屏幕而不是最後打開的屏幕 –

1

可能是因爲您正在使用onPause(),以便您的選項卡在選項卡通過時執行一些操作。 因此,最終當home鍵被按下onPause()將被調用,這可能會導致你這個問題。也許你必須檢查你的onPause()這個例子。

+0

我已經檢查並刪除了onPause()方法中的所有代碼,但行爲仍然沒有改進。 –

1

僅在home按鈕上onStop被調用,您是否在onStop上完成活動?如果不是,它保留什麼是堆棧頂部的活動。

+0

不,我沒有在我的應用程序的任何地方實現onStop()。 –

+1

重寫選項卡屏幕的onDestroy()並放置一些日誌以查看按下活動是否被破壞。 – Naresh

+0

它將不得不通過onPause()首先不會呢? –