2014-01-29 62 views
0

我正在將iOS應用程序移植到Android,並且在終端方面有點困難。 我希望應用程序在開始/到達前臺時(即用戶選擇應用程序)以及應用程序轉到後臺時(例如,當進入主屏幕並開始使用其他應用程序時)同步。關閉Android應用程序時的消息

有一個簡單的方法來做到這一點在Android? 我將onResume()和onPause()添加到我的活動中,但是當活動恢復或暫停時會觸發,而不是整個應用程序暫停時(並且每次用戶執行某些操作時會導致大量同步)。

更新: 同步操作是一種服務,當應用程序需要從服務器獲得新的/更新的信息時調用。因此,這需要在應用程序由suer啓動/恢復(在一段時間不活動之後)時完成,並且當用戶主動停止使用應用程序時需要執行此操作。

當一個活動進入背景
+2

恕我直言,你不是問正確的問題。你應該解釋你的「同步」過程是什麼,然後詢問這種操作的正確時機。 – CommonsWare

+0

我只想第二個CommonsWare在這上面 - Sync是什麼意思?另外,如果由於長時間運行的操作(這是我在問題的第二部分中所聽到的內容)導致UI凍結,您可能需要澄清一下,以便我們可以解決它。 –

+0

增加的更新使它更清晰? –

回答

0

onPause() -> onStop()

方法將在序列)來執行,如果活動是部分可見的,僅在onPause(如果活動是完全不可見的由另一活動,的onStop()方法將在onPause()之後執行。

onDestroy() 

如果您調用finish()或系統中沒有足夠的內存並且系統銷燬它時,方法將被執行。除非調用finish()方法,否則不能依賴於Destroy()方法。

最好使用onStop()方法保存您的數據。

+0

但是,在「整個應用程序」級別上有什麼作用,所以我只在應用程序完全被解僱時觸發事件,而不是在從一個活動導航到另一個時觸發事件。 –

+0

您有2個選項,可以爲每個活動重寫onStop()或創建一個基本Activity類,其他活動將擴展它。最後,你會確定你的方法將被執行。 –

0

nr4bt有一個有效的點,並根據您所需的功能,一個很好的選擇。

全局方法是在應用程序啓動時啓動Service

  • 將此Service RESPONSABLE與合適的回調您的同步操作,您的活動Activity

  • 使此Service知道您的活/暫停/停止Activity的。當最後一個完成 - >做你的最後同步並殺死Service