基本的Andr​​oid的AsyncTask,在执行doInBackground出现错误() [英] Basic Android AsyncTask, an error occurred while executing doInBackground()

查看:162
本文介绍了基本的Andr​​oid的AsyncTask,在执行doInBackground出现错误()的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

[解决]

我试图创建如图所示为Android的API文档中使用AsyncTask的一个基本线索。不过,我穿过一个错误来尝试执行的最简单的线程时。

 的AsyncTask任务=新的AsyncTask<无效,整型,布尔>(){    @覆盖
    保护布尔doInBackground(虚空......为arg0){
        尝试{
            视频下载(6000);
            的System.out.println(延迟测试测试测试);
        }赶上(例外五){        }        返回true;
    }
    };

logcat的条目:

  E / AndroidRuntime(21215):致命异常:AsyncTask的#1
E / AndroidRuntime(21215):了java.lang.RuntimeException:执行doInBackground发生错误()
E / AndroidRuntime(21215):在android.os.AsyncTask $ 3.done(AsyncTask.java:200)
E / AndroidRuntime(21215):在java.util.concurrent.FutureTask中$ Sync.innerSetException(FutureTask.java:274)
E / AndroidRuntime(21215):在java.util.concurrent.FutureTask.setException(FutureTask.java:125)
E / AndroidRuntime(21215):在java.util.concurrent.FutureTask中$ Sync.innerRun(FutureTask.java:308)
E / AndroidRuntime(21215):在java.util.concurrent.FutureTask.run(FutureTask.java:138)
E / AndroidRuntime(21215):在java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1088)
E / AndroidRuntime(21215):在java.util.concurrent.ThreadPoolExecutor中的$ Worker.run(ThreadPoolExecutor.java:581)
E / AndroidRuntime(21215):在java.lang.Thread.run(Thread.java:1027)
E / AndroidRuntime(21215):java.lang.ClassCastException:致[Ljava.lang.Object;
E / AndroidRuntime(21215):在hlf.scenes.Intro $ 2.doInBackground(Intro.java:1)
E / AndroidRuntime(21215):在android.os.AsyncTask $ 2.call(AsyncTask.java:185)
E / AndroidRuntime(21215):在java.util.concurrent.FutureTask中$ Sync.innerRun(FutureTask.java:306)
E / AndroidRuntime(21215):... 4个

如果有人可以帮助我解决这个我会非常AP preciative!
谢谢

修正:

 的AsyncTask<无效,整型,布尔>任务=新的AsyncTask<无效,整型,布尔>()


解决方案

这<一个href=\"http://beautifuldiscovery.word$p$pss.com/2011/03/17/strange-classcastexception-with-asynctask/\"相对=nofollow>帖子解释了原因。基本上,因为你没有任何类型的,它期待声明引用作为的AsyncTask 对象的一切。给声明类型:

 的AsyncTask&LT;无效,整型,布尔&GT;任务=新...

和它应该知道如何处理它。

[solved]

I'm trying to create a basic thread using AsyncTask as shown in the documentation for the Android API. However, I'm coming across an error when trying to execute the most simplest of threads.

    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 entry:

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

If anyone could help me solve this I'd be really appreciative! Thanks

Fix:

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

解决方案

This post explains why. Basically, since you are declaring the reference as AsyncTask without any types, it is expecting Objects for everything. Give the declaration types:

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

and it should know how to handle it.

这篇关于基本的Andr​​oid的AsyncTask,在执行doInBackground出现错误()的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆