2011-03-10 40 views
2

當涉及到小工具時,我們可以從服務中調用異步任務嗎?Android小工具:服務與異步任務

我目前有一個小應用程序查找實時體育比分並顯示相同。主類調用異步任務。異步任務調用2個過程。第一個解析XML文件並獲得html鏈接。第二個閱讀該HTML文件。 現在我想將這個應用程序轉換爲主屏幕小部件。

我可以從服務中調用我的異步任務嗎? 任何指向例子的指針?

請幫忙。

問候, 山姆

+0

哥們接受提高您的評級的答案... – JPM 2011-08-24 15:50:34

回答

0

如果原來的活動和服務都在同一個包,或一個是適當地依賴於對方,那麼你可以調用沒有問題同異步任務。只要異步任務採用通用格式,因此它將數據提供給它(通過回調或處理程序)的任何調用,而不是始終將結果發佈到應用程序的UI,因此不存在重大問題。

+0

嗯我怎麼可以使用處理程序或回調。我認爲這可能是我在我的問題在這裏失蹤:http://stackoverflow.com/questions/20792944/appwidgetprovider-public-void-onenabled-context-context-does-not-effect-widget – Mike 2013-12-27 02:45:39

4

您不需要在服務中創建AsyncTask。該服務已經在後臺線程上運行,因此您可以在服務中的doInBackground中執行任何密集型任務。你應該仍然可以在服務中調用AsyncTask,但是你不需要在這一點上使用AsyncTask。

Here是一個帶有服務的小部件示例。

0

這裏的基本區別在於:

線程或異步任務在後臺線程執行他們的任務因此它們不會阻塞主線程,而服務執行它在主線程工作。所以如果某個服務正在執行諸如調用Web服務之類的密集型任務,它可能會阻塞主線程,直到完成。因此,對於密集型任務,服務應該在後臺線程中運行它。

總結,線程(異步任務)在後臺執行任務(不阻塞主線程),服務可以阻塞主線程直到完成。