1

從後臺應用程序的回來時,我已經創建了一個個人通訊錄,大約有10活性中爲每個組,聯繫人,編輯,查看,刪除,多業務需求等趕上android系統

如果應用程序是通過主頁按鈕或其他應用程序移動到後臺,我需要在應用程序每次從後臺返回時顯示登錄屏幕時捕獲事件。

此外,請注意,是否應該顯示同一聯繫簿應用程序的其他活動,登錄屏幕。

我試着用onResumeonStart,並通過覆蓋各種activites登錄的功能onStop事件的每個活動,但這並不滿足,猶如該項申請是在前臺,只是一個活動發生變化,那麼也這些也被稱爲。

請建議,謝謝!

回答

0

最後,我自己找到了。

我在所有設置和獲取變量的Intent分別完成的活動中編寫了一個基類。 因此,如果應用程序移動到後臺並稍後到達前臺,則找不到意向變量,其中我顯示登錄屏幕,而不是輸入到應用程序。

謝謝,大家誰提出了方法,讓我知道如果在任何地方以錯誤的方式或錯誤的方式走了。感謝@midoalageb太.. ..!

感謝

0

我想你可以在onPause()onStop()上加上一個布爾變量爲true,並在onResume()上檢查這個變量來顯示登錄對話框。如果您需要更持久的方式,您可以將其保存在共享首選項onPause()onStop中,並將其從onDestroy()中的共享首選項中刪除。但請注意,如果其他應用程序需要內存,Android垃圾收集器將從內存中移除您的應用程序。

+0

正如我在應用程序中使用10個活動,我從一個活動移動到另一個,每次的onPause和的onResume被稱爲,其中登錄不應該問,對不對?應用程序到達前臺時,應該每次詢問登錄。 – HarsH1610 2011-12-27 13:49:13

+1

您可以將一個變量從Activity傳遞給另一個(在Intent中),並將其從被調用的Activity的onResume中移除。如果變量未包含在意圖中,這意味着該呼叫不是來自另一個活動,因此您可以顯示登錄信息。 – 2011-12-27 14:50:12

0

嘗試覆蓋活動類的onRestart()。

描述爲onRestart()

我希望它有助於..

+0

onRestart被調用,每當活動進入前臺,雖然應用程序正在運行,我只需要檢查應用程序是否來自後臺或不。 – HarsH1610 2011-12-27 13:54:01

+0

該文件說..'當前活動正在被重新顯示給用戶(用戶已經導航回它)「。這意味着當活動第一次開始時它不會被調用。 Isn,這是你想要的嗎? – 2011-12-27 14:18:12

1

大概有這樣功能的最佳地點將是onCreate方法。這只是在應用程序從頭開始創建時調用的。相反的方法是onDestroy,僅當系統爲了釋放某些內存(這很少發生)而殺死您的應用程序時才被調用,或者您的應用程序被某種Task Killer明確殺死。這意味着,當你的活動進入後臺,然後回到前臺 - onCreate將不會被調用,你應該假設這一點。希望這可以幫助。

+0

我想你已經錯過了我想說的話,每次應用程序到達前臺時我都想要求登錄。 – HarsH1610 2011-12-27 13:46:43

0

我做了類似的事情,我的解決方案無疑是hacky,但它適用於我。

我的所有活動總是從我的所有應用程序中的公共基類中派生。我把它稱爲ActivityBase,以供參考(它當然延伸了Activity)。在ActivityBase.onPause中,我保存當前時間毫秒,您可以選擇保存派生類的名稱,以確切知道哪個活動最後暫停。如果您需要在應用程序位於後臺並返回前臺時運行代碼,則可以檢查當前時間與應用程序中最後一次活動的暫停時間的差異。如果應用程序仍處於前臺,則差異應不大於暫停一個活動並恢復下一個活動所需的最長時間。如果它大於一秒或兩秒(這是一個駭人聽聞的部分,你選擇了一個任意的時間測量,意思是「太長時間無法進行應用內導航」),那麼你可以調用應用程序在應用時運行的任何代碼正在回到前臺。