2011-10-11 58 views
2

[解決]基本的Android的AsyncTask,在執行doInBackground發生錯誤()

我試圖創建如圖所示爲Android的API文檔中使用的AsyncTask基本線程。然而,當我嘗試執行最簡單的線程時遇到錯誤。

AsyncTask task = new AsyncTask<Void, Integer, Boolean>() { 

    @Override 
    protected Boolean doInBackground(Void... arg0) { 
     try { 
      Thread.sleep(6000); 
      System.out.println("DELAYED TEST TEST TEST"); 
     }catch(Exception e) { 

     } 

     return true; 
    } 
    }; 

logcat的條目:

E/AndroidRuntime(21215): FATAL EXCEPTION: AsyncTask #1 
E/AndroidRuntime(21215): java.lang.RuntimeException: An error occured while executing doInBackground() 
E/AndroidRuntime(21215):  at android.os.AsyncTask$3.done(AsyncTask.java:200) 
E/AndroidRuntime(21215):  at java.util.concurrent.FutureTask$Sync.innerSetException(FutureTask.java:274) 
E/AndroidRuntime(21215):  at java.util.concurrent.FutureTask.setException(FutureTask.java:125) 
E/AndroidRuntime(21215):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:308) 
E/AndroidRuntime(21215):  at java.util.concurrent.FutureTask.run(FutureTask.java:138) 
E/AndroidRuntime(21215):  at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088) 
E/AndroidRuntime(21215):  at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:581) 
E/AndroidRuntime(21215):  at java.lang.Thread.run(Thread.java:1027) 
E/AndroidRuntime(21215): Caused by: java.lang.ClassCastException: [Ljava.lang.Object; 
E/AndroidRuntime(21215):  at hlf.scenes.Intro$2.doInBackground(Intro.java:1) 
E/AndroidRuntime(21215):  at android.os.AsyncTask$2.call(AsyncTask.java:185) 
E/AndroidRuntime(21215):  at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:306) 
E/AndroidRuntime(21215):  ... 4 more 

如果有人可以幫助我解決這個我會非常感激! 感謝

修復:

AsyncTask<Void, Integer, Boolean> task = new AsyncTask<Void, Integer, Boolean>() 
+4

試試這個..... AsyncTask task = new AsyncTask () –

+0

是否在UI線程上創建任務實例? – Ally

+0

@kumar:我不這麼認爲。泛型類型不被編譯。 – njzk2

回答

0

我不認爲你所說的任何參數的execute方法,你呢?

3

post解釋了爲什麼。基本上,因爲你沒有任何類型的,它期待的聲明作爲參考對象AsyncTask一切。給報關類型:

AsyncTask<Void, Integer, Boolean> task = new ... 

它應該知道如何處理它。

相關問題