Базовая Android AsyncTask, произошла ошибка при выполнении doInBackground () - PullRequest
2 голосов
/ 11 октября 2011

[решено]

Я пытаюсь создать основной поток, используя AsyncTask, как показано в документации по API Android. Однако я сталкиваюсь с ошибкой при попытке выполнить самый простой из потоков.

    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

Если бы кто-нибудь мог помочь мне решить это, я был бы очень благодарен! Спасибо

Fix:

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

Ответы [ 2 ]

3 голосов
/ 20 ноября 2012

Этот пост объясняет почему.По сути, поскольку вы объявляете ссылку как AsyncTask без каких-либо типов, она ожидает Объекты для всего.Укажите типы объявлений:

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

, и он должен знать, как с этим обращаться.

0 голосов
/ 11 октября 2011

Полагаю, вы не вызываете метод execute с каким-либо аргументом?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...