Android:AsyncTask Object[] 不能在 doInBackground 中强制转换

Posted

技术标签:

【中文标题】Android:AsyncTask Object[] 不能在 doInBackground 中强制转换【英文标题】:Android: AsyncTask Object[] cannot be cast in doInBackground 【发布时间】:2021-06-25 08:48:54 【问题描述】:

所以,我正在尝试运行最简单的 AsyncTask:它不接受参数,它只是运行一个函数,获取结果字符串并显示 is。无论我尝试什么,我都会收到此错误:

java.lang.ClassCastException: java.lang.Object[] cannot be cast to java.lang.Void[] at (...)$AsyncTaskRunner.doInBackground

异步任务:

    private class AsyncTaskRunner extends AsyncTask<Void, Void, String> 

        @Override
        protected void onPreExecute() 
            resultText.setText("");
            progressBar.setVisibility(View.VISIBLE);
        

        @Override
        protected String doInBackground(Void... params) 
            return "test";
        

        @Override
        protected void onPostExecute(String result) 
            progressBar.setVisibility(View.GONE);
            resultText.setText(result);
        
    

这就是我所说的:

        buttonCalculate.setOnClickListener(new View.OnClickListener() 
            public void onClick(View v) 
                if (AsyncTaskRunner != null) 
                    AsyncTaskRunner.cancel(true);
                

                AsyncTaskRunner = new AsyncTaskRunner();
                AsyncTaskRunner.execute();
            
        );

我在这里做错了什么?

【问题讨论】:

更改:AsyncTaskRunner AsyncTaskRunner&lt;Void, Void, String&gt; 见这里:***.com/questions/34399979/… 喜欢AsyncTaskRunner = new AsyncTaskRunner&lt;Void, Void, String&gt;();?同样的问题。 这样:AsyncTaskRunner&lt;Void, Void, String&gt; = 【参考方案1】:

好的,奇怪的是,如果我这样称呼它,它会起作用:

AsyncTask<Void, Void, String> asyncTaskRunner = new AsyncTaskRunner();
asyncTaskRunner.execute();

【讨论】:

以上是关于Android:AsyncTask Object[] 不能在 doInBackground 中强制转换的主要内容,如果未能解决你的问题,请参考以下文章

API 级别 11 之前的 AsyncTask.executeOnExecutor()

AsyncTask onCancelled(Object) 从未在 asyncTask.cancel(true) 之后调用;

Android多线程的四种方式:Handler、AsyncTask、ThreadPoolExector、IntentService

AsyncTask没有零参数构造函数

AsyncTask 预期为 BEGIN_OBJECT,但在第 1 行第 2 列路径 $ 处为 BEGIN_ARRAY

如何在AsyncTask doInBackground()中使用同步对象?