2015-05-02 21 views
16

我正在關注Udacity上的google android教程,但是在指定的代碼中,我得到以下警告:Unchecked調用'執行(參數...)'作爲原始類型的成員'android.os.AsyncTask'

未檢查到電話 '執行(參數...)' 爲原料類型的成員 'android.os.AsyncTask' 這個代碼

DoSomethingTask myTask = new DoSomethingTask(); 
myTask.execute(); // Warning here 

DoSomethingTask:

public class DoSomethingTask extends AsyncTask { 

    protected Object doInBackground(Object[] params) { 
     ... 
    } 
} 

任何人都可以解釋此警告以及如何解決它嗎?看來它應該按照指示工作...

+0

通過 「錯誤」 你的意思是「警告「? – immibis

+0

@immibis是的:) – doovers

+1

我認爲這是任務的參數的原因,嘗試擴展AsyncTask 並刪除任務中的Object []參數。或者嘗試擴展AsyncTask 並在execute中添加一個對象(someObject) – Surely

回答

23

該警告是由該任務的參數引起的。嘗試使用:

extends AsyncTask<Void, Void, Void>{ 
    protected Object doInBackground() { 
    } 
} 

或使用:

extends AsyncTask<Object, Void, Void>{ 
    protected Object doInBackground(Object[] params) { 
    } 
} 
myTask.execute(anyObject); 

說明:

This文件解釋了三種類型的AsyncTask的意義。

  1. PARAMS,發送到在執行時任務的參數的類型。

  2. 進度,在後臺計算期間發佈的進度單位的類型。

  3. 結果,背景計算結果的類型。
+0

第二種方法適用於我。謝謝:) – anhtuannd

+0

這個警告是什麼意思? @zp_x –

+0

@ChintanShah嗨,我已經添加了一個解釋。基本上使用它,只要確保類型匹配正確。 – Surely

0

變化

AsyncTask asyncTask = new AsyncTask<Object, Void, String>() { 

     @Override 
     protected String doInBackground(Object... params) { 
      return ""; 
     } 
    }; 

    asyncTask.execute(); 

AsyncTask<Object, Void, String> asyncTask = new AsyncTask<Object, Void, String>() { 

     @Override 
     protected String doInBackground(Object... params) { 
      return ""; 
     } 
    }; 

    asyncTask.execute(); 

的AsyncTask參考需要一樣的AsyncTask類,而IDE不會報警。

相關問題