2013-03-24 29 views
0

我獲取數據異步並將此數據繪製出來, 得到了邏輯,現在我當然需要運行這個平滑的 ,所以我在使用AsyncTask時得到更多的數據,它被消化到一個位圖,並相應地繪製 當然在沒有AsyncTask工作的環路上運行,但在較慢/較舊的設備上它是長途跋涉,與ASyncTask似乎有某種溢出作爲位圖/ ImageView閃爍Android AsyncTask如何檢查它是否與特定的參數一起啓動

的項目進來5種不同的口味,所以我正確設置我的PARMS當我做出的AsyncTask的一個新的實例,並調用執行運行它的一個新實例

現在如果一個特定的特定任務已經運行已經如何檢查 那???這樣我可以跳過它,直到完成處理該類型的數據爲止。我需要讓我用對象的列表來傳遞不同的數據類型和工作

我知道KISS是使的AsyncTask的5種不同的情況下,檢查 taskInstance_n.getStatus()!= AsyncTask.Status.RUNNING 但我認爲可能有一個更清潔/更酷的通用方法來做到這一點?

ArrayList<Object>parms = new ArrayList<Object> 
    ... 
    do 
    { 
     ..grab the data ... 
     switch(id) 
     { 
     case 0: 
       parms.clear(); 
       parms.add(arg1); 
       parms.add((type1)arg2) 
       parms.add((type2)arg3) 
       if(! task is running with arg1) ---->how do I do this 
        new myAsyncTask().execute(parms,null,null); 

       break; 
     case 1: 
     ... other 4 choices simar way to call it 
     } // end of switch 

     ... 

    }while(i_get_data) 

回答

0

相反到普遍的信仰,AsyncTasks不併行運行,它們形成一個隊列,等待對方(除蜂巢,但你不應該針對API9-10反正)。所以你不應該擔心兩個AsyncTasks工作在相同類型的數據上,當你得到新的東西,準備好參數並開始工作時,它會耐心等待,直到所有以前的AsyncTasks都完成了。

+0

並行或不是我的問題是,它出現時,第一個任務仍在運行,我試圖抓住它跳過它。位圖的閃爍/消隱告訴我有一些超限在那裏發生。 – becker 2013-03-25 02:27:41

+0

您可以在'AsyncTasks'中添加':pg()'調用,以確保沒有溢出,並且在任何給定的時刻只有一個正在運行。爲什麼你的位圖閃爍,很可能是一個完全不同的問題。 – lenik 2013-03-25 03:39:06

+0

我沒有仔細檢查,但如果我在一個循環運行是好的只是慢我試圖運行一些這些任務不只是一個,因爲對於不同的數據我不同只是試圖避免一個仍然runnig如果是的話。 – becker 2013-03-25 12:57:28

相關問題