2012-03-31 105 views
0

我在我的程序中使用Intent Service。在意向服務中,我有一個計時器任務線程,每15分鐘運行一次。由於它運行在一個新的線程中,除了線程本身之外,沒有辦法阻止它,這在我的情況下是不可能的。所以,我希望能夠將計時器對象的引用從初始活動傳遞給Intent Service。並且使用那個引用,我可以開始或停止時間任務嗎?
如何做到這一點?我可以在android中將一個對象的引用從一個活動傳遞給另一個活動嗎?

回答

2

在意向服務中,我有一個計時器任務線程,每15分鐘運行一次。

這是一個非常糟糕的主意。

首先,它不起作用。一旦onHandleIntent()返回,IntentService就會關閉。你真的在做什麼是泄漏一個線程。

其次,它需要這個Service一直保留在內存中,這是Android中的一種反模式。

請使用AlarmManager每15分鐘向您的IntentService發送命令,並擺脫您的計時器任務。

而且,通過這樣做,您不再需要擔心在活動和服務之間傳遞這類對象。

+0

即使應用程序本身關閉,AlarmManager也能工作。如果應用程序本身關閉,警報管理器每15分鐘將能夠調用後臺服務。 – Ashwin 2012-04-01 04:40:50

+0

@Ashwin:「即使應用程序本身已關閉,AlarmManager是否仍能正常工作。」 - 對於大多數傳統的「封閉」定義,是的。 「如果應用程序本身已關閉,警報管理器每隔15分鐘將能夠調用後臺服務。」 - 這似乎是同一個問題。 – CommonsWare 2012-04-01 10:42:36

相關問題