0
我在我的程序中使用Intent Service。在意向服務中,我有一個計時器任務線程,每15分鐘運行一次。由於它運行在一個新的線程中,除了線程本身之外,沒有辦法阻止它,這在我的情況下是不可能的。所以,我希望能夠將計時器對象的引用從初始活動傳遞給Intent Service。並且使用那個引用,我可以開始或停止時間任務嗎?
如何做到這一點?我可以在android中將一個對象的引用從一個活動傳遞給另一個活動嗎?
我在我的程序中使用Intent Service。在意向服務中,我有一個計時器任務線程,每15分鐘運行一次。由於它運行在一個新的線程中,除了線程本身之外,沒有辦法阻止它,這在我的情況下是不可能的。所以,我希望能夠將計時器對象的引用從初始活動傳遞給Intent Service。並且使用那個引用,我可以開始或停止時間任務嗎?
如何做到這一點?我可以在android中將一個對象的引用從一個活動傳遞給另一個活動嗎?
在意向服務中,我有一個計時器任務線程,每15分鐘運行一次。
這是一個非常糟糕的主意。
首先,它不起作用。一旦onHandleIntent()
返回,IntentService
就會關閉。你真的在做什麼是泄漏一個線程。
其次,它需要這個Service
一直保留在內存中,這是Android中的一種反模式。
請使用AlarmManager
每15分鐘向您的IntentService
發送命令,並擺脫您的計時器任務。
而且,通過這樣做,您不再需要擔心在活動和服務之間傳遞這類對象。
即使應用程序本身關閉,AlarmManager也能工作。如果應用程序本身關閉,警報管理器每15分鐘將能夠調用後臺服務。 – Ashwin 2012-04-01 04:40:50
@Ashwin:「即使應用程序本身已關閉,AlarmManager是否仍能正常工作。」 - 對於大多數傳統的「封閉」定義,是的。 「如果應用程序本身已關閉,警報管理器每隔15分鐘將能夠調用後臺服務。」 - 這似乎是同一個問題。 – CommonsWare 2012-04-01 10:42:36