2011-10-10 103 views
1

我有一個服務[IntentService]運行一個'計時器任務',計劃每5分鐘運行一次。我在安裝應用程序時啓動服務。如何停止服務?

現在我想停止我的服務[服務運行'計時器任務'],但是當我使用stopService()方法時,我無法停止我的服務。我嘗試在我的服務的onDestroy()方法中記錄日誌,但stopService()沒有到達那裏。

此外,由於stopService()返回布爾值,我記錄了它的輸出,它返回false。

我該如何阻止它?

+0

你見過[this](http://stackoverflow.com/questions/2176375/android-service-wont-stop),它可以幫助你。 –

+0

................................ – alchemist

+0

@YaqubAhmad我不在任何地方綁定我的服務。 – alchemist

回答

0

我有一個服務[IntentService]運行'計時器任務',計劃每5分鐘後運行一次。

請不要這樣做。用戶討厭這樣做的開發人員,並會使用任務殺手或「設置」應用程序強制停止您的應用程序。請使用AlarmManager,這樣可以佔用更少的RAM並且對用戶更友好。

我在安裝應用程序時啓動服務。

這不支持。特別是,從Android 3.1開始,這是不可能的,甚至可能會使用無證的黑客攻擊。

現在我想停止我的服務[服務運行'計時器任務'],但是當我使用stopService()方法時,我無法停止我的服務。

很有可能您的服務已停止。 IntentService只要onHandleIntent()返回就停止。 TimerTask分叉一個線程來維護它的計時器 - 如果你在onHandleIntent()中創建了這個TimerTask,你正在泄漏這個線程。你無法停止這個線程。一旦Android選擇終止您的流程,它會隨機消失。

如果,另一方面,你擺脫TimerTask和使用AlarmManager,你可以在IntentServiceonHandleIntent()方法的實際週期性工作。