是一個良好的做法,有一個像這樣的循環內的Asynk任務?Android Asynk任務
while (true) {
check queue and request API
因爲我需要等待我的活動和服務需求與APi交流。
感謝
是一個良好的做法,有一個像這樣的循環內的Asynk任務?Android Asynk任務
while (true) {
check queue and request API
因爲我需要等待我的活動和服務需求與APi交流。
感謝
我假設的 「隊列」 是一個Java排隊,也許是LinkedBlockingQueue
。如果是這樣,那麼該隊列是不必要的,因爲AsyncTask
有一個隊列與其線程池一起運行。
所以,問題是:是什麼觸發事物進入隊列?
如果觸發器是用戶事件(例如,菜單選項,按鈕推送),只需啓動AsyncTask
,或讓它的Service
啓動AsyncTask
即可。該工作將由AsyncTask
系統排隊。
如果觸發的時間(例如,我們要檢查外部服務器每10分鐘)的推移,我會用AlarmManager
,並考慮從AsyncTask
開關和Service
使用的IntentService
。
我有一個優先級隊列,以便首先選擇對API的重要調用。
我的程序有兩種服務:
一個調用當消息被添加到隊列中的API。對API的調用由Asinc任務這樣做:
messages.add(request);
new DownloadApiTask().execute();
的其他服務正在更新本地數據庫。爲此,我有一個循環,我稱之爲從API獲取數據的第一個服務。的基本結構是:
while i
有數據要updload
mFirstService.putMessage(請求)。
很好,問題是我有一個拒絕執行異常每X調用,我想這可能是因爲每次我帶個口信時間調用asinc任務。
爲此,我在考慮強制執行asinck任務來檢查隊列,而不是執行它。
我希望你能理解我的問題。
謝謝