android - 基本Android AsyncTask,执行doInBackground()时发生错误

标签 android multithreading android-asynctask

[已解决]

我正在尝试使用 AsyncTask 创建一个基本线程,如 Android API 文档中所示。但是,当我尝试执行最简单的线程时遇到错误。

    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>() 

最佳答案

这个post解释了原因。基本上,由于您将引用声明为不带任何类型的 AsyncTask,因此它期望所有内容都是对象。给出声明类型:

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

它应该知道如何处理它。

关于android - 基本Android AsyncTask,执行doInBackground()时发生错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7724341/

相关文章:

java - 如何禁用连接到 ArrayAdapter 的 ListView 行中的按钮?

android - 使用异步任务在 gridview 中加载图像,加载不正确

javascript - 如何让二维码阅读器识别我生成的二维码?

ruby 线程 block ?

android - 应用程序中的图像看起来很模糊

multithreading - 如何控制 Rust 中 2 个不同线程的打印顺序

java - java中的多线程一些有关执行的查询

java - 使用 AsyncTask 从 url 获取文本。代码由于某种原因无法工作

android - 将触摸事件转发到动态附加 View ,无需抬起手指

android - 如何在我的 android 登录应用程序中使用记住我功能