2010-02-26 47 views
1

是一個良好的做法,有一個像這樣的循環內的Asynk任務?Android Asynk任務

while (true) { 
check queue and request API 

因爲我需要等待我的活動​​和服務需求與APi交流。

感謝

回答

0

我假設的 「隊列」 是一個Java排隊,也許是LinkedBlockingQueue。如果是這樣,那麼該隊列是不必要的,因爲AsyncTask有一個隊列與其線程池一起運行。

所以,問題是:是什麼觸發事物進入隊列?

如果觸發器是用戶事件(例如,菜單選項,按鈕推送),只需啓動AsyncTask,或讓它的Service啓動AsyncTask即可。該工作將由AsyncTask系統排隊。

如果觸發的時間(例如,我們要檢查外部服務器每10分鐘)的推移,我會用AlarmManager,並考慮從AsyncTask開關和Service使用的IntentService

0

我有一個優先級隊列,以便首先選擇對API的重要調用。

我的程序有兩種服務:

  • 一個調用當消息被添加到隊列中的API。對API的調用由Asinc任務這樣做:

    messages.add(request); 
    new DownloadApiTask().execute(); 
    
  • 的其他服務正在更新本地數據庫。爲此,我有一個循環,我稱之爲從API獲取數據的第一個服務。的基本結構是:

    while i有數據要updload

    mFirstService.putMessage(請求)。

很好,問題是我有一個拒絕執行異常每X調用,我想這可能是因爲每次我帶個口信時間調用asinc任務。

爲此,我在考慮強制執行asinck任務來檢查隊列,而不是執行它。

我希望你能理解我的問題。

謝謝