2011-10-11 84 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 ... 

它应该知道如何处理它。

相关问题