2013-06-04 194 views
0

我在我的應用程序中使用計時器進行重複任務。默認情況下,timer應該延遲一秒重複任務。我在啓動應用程序時啓動計時器。所有這些都是完美的。另外,當我離開我的應用程序並打開其他應用程序時,定時器繼續運行。計時器在後臺停止:Android

當我打開Goog​​le地圖應用程序時,我的計時器停止運行。我不知道爲什麼會發生這種情況。我從Google搜索結果中發現,如果其他應用程序需要內存,所有進程都將被終止。我想這就是我的情況。

我不想讓我的計時器停下來。它必須一直運行,直到用戶卸載我的應用程序。

  1. 爲什麼會出現上述問題?
  2. 如何達到我的要求?
  3. 使用services會解決問題嗎?如果是這樣,有沒有辦法保持timer始終開啓而不使用services
  4. Alarm Manager會有幫助嗎?即使用戶重新啓動手機,計時器也應該正常工作。

回答

0

是的,一項服務將解決您的問題。活動的持久性受其生命週期的支配,所以最終你無法控制它的執行。服務是持久的,因爲它不會被系統關閉。但是,如果您正在進行大量計算,請注意操作系統對於資源分配的慷慨程度與屏幕上的活動不同。

總之:
1)那麼,根據你提供的信息,我想你得出了正確的結論。
2)通過服務。
3)是的,它會解決你的問題,不,我不認爲有另一種方式來做到這一點,至少不是從一個活動內。
4)如果您實際上並未詢問Java.util.Timer的持久性,而是爲了在特定時間執行一段代碼,這可能是更好(更容易)的解決方案。儘管如此,我不知道它是否適合相當頻繁的計時。服務可以在系統重啓時恢復,所以不用擔心電話關機。您可以訂閱啓動事件。