似乎有兩種方法可以執行後臺任務。我的用例是讓我的應用程序每隔x分鐘讀取一次數據饋送,而不管我的gui是否正在運行,而不管手機是否正在睡眠。如何安排後臺任務
我使用alarmmanager安排意圖相匹配的廣播接收器。在onRecieve方法中,我啓動一個服務(startService),該服務產生一個AsyncTask。任務提取數據並存儲它,然後stopSelf()服務。
在onRecieve方法我AQUIRE一個PARTIAL_WAKE_LOCK,啓動服務之前,只是在服務調用stopSelf()之前,我再次釋放。
這真的是最好的方法嗎?我甚至需要在這種情況下的服務?
我遇到這種設置,其中設置適用於小時,然後突然停止,這使得它很難調試奇怪的行爲。
有沒有人有一個簡單的萬無一失的方法,才達到同樣的目的?
aha!所以我無法在播放器中啓動我的asynctask?即使我在onrecieve中獲得了wakelock,並在asynctask完成時釋放它? 感謝您提供的信息,我想我需要爲我的鬧鐘提供更多的幫助 – Wilken 2010-01-14 15:23:29
「所以我無法在播放器中啓動我的asynctask?」我不這麼認爲,但我還沒有嘗試過。AsyncTask擁有自己的線程池,它可能*可以安全地從BroadcastReceiver運行AsyncTask。 – CommonsWare 2010-01-14 16:01:34
感謝使用IntentService的想法,不知道這一點。現在我已經放棄了我的服務和AsyncTask。更優雅。 – Wilken 2010-01-14 18:15:57