Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/212.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 'AsyncTask'不接受void类型的'doInBackground()'?_Android_Android Asynctask - Fatal编程技术网

Android 'AsyncTask'不接受void类型的'doInBackground()'?

Android 'AsyncTask'不接受void类型的'doInBackground()'?,android,android-asynctask,Android,Android Asynctask,从中我们可以看出 Params,执行时发送到任务的参数类型 进度,后台计算期间发布的进度单位的类型 结果,背景计算结果的类型 还提到了极好的回答 但是,为什么使用Void作为结果类型会导致Android Studio在doInBackground行发出以下警告: doInBackground(String...)' in '(..)MainActivity.myTask' clashes with 'doInBackground(Params...)' in 'android.os.AsyncT

从中我们可以看出

Params,执行时发送到任务的参数类型

进度,后台计算期间发布的进度单位的类型

结果,背景计算结果的类型

还提到了极好的回答

但是,为什么使用
Void
作为结果类型会导致Android Studio在
doInBackground
行发出以下警告:

doInBackground(String...)' in '(..)MainActivity.myTask' clashes with 'doInBackground(Params...)' in 'android.os.AsyncTask'; attempting to use incompatible return type
以下是
AsyncTask
的声明方式:

private class myTask extends AsyncTask<String,Void,Void> {
    @Override
    protected void doInBackground(String... url) {
        //do stuff with url[0]
    }

    @Override
    protected void onPostExecute() {
        //more stuff
    }
}
私有类myTask扩展了AsyncTask{
@凌驾
受保护的void doInBackground(字符串…url){
//使用url[0]执行操作
}
@凌驾
受保护的void onPostExecute(){
//更多的东西
}
}
相比之下,这似乎效果不错:

private class myTask extends AsyncTask<String,Void,String> {
    @Override
    protected String doInBackground(String... url) {
        //do stuff with url[0]
        return "hi";
    }

    @Override
    protected void onPostExecute(String result) {
        //more stuff
    }
}
私有类myTask扩展了AsyncTask{
@凌驾
受保护的字符串doInBackground(字符串…url){
//使用url[0]执行操作
返回“hi”;
}
@凌驾
受保护的void onPostExecute(字符串结果){
//更多的东西
}
}
请注意,关于这个主题有各种各样的问题,但大多数问题只是把
AsyncTask
参数或类中的参数和返回值搞乱了。

试试这段代码

 private class myTask extends AsyncTask<String,Void,Void> {
    @Override
    protected Void doInBackground(String... url) {
          //do stuff with url[0]
        return null;

    }

    @Override
    protected void onPostExecute(Void result) {
        super.onPostExecute(result);
        //more stuff
    }
}
私有类myTask扩展了AsyncTask{
@凌驾
受保护的Void doInBackground(字符串…url){
//使用url[0]执行操作
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
super.onPostExecute(结果);
//更多的东西
}
}
试试这段代码

 private class myTask extends AsyncTask<String,Void,Void> {
    @Override
    protected Void doInBackground(String... url) {
          //do stuff with url[0]
        return null;

    }

    @Override
    protected void onPostExecute(Void result) {
        super.onPostExecute(result);
        //more stuff
    }
}
私有类myTask扩展了AsyncTask{
@凌驾
受保护的Void doInBackground(字符串…url){
//使用url[0]执行操作
返回null;
}
@凌驾
受保护的void onPostExecute(void结果){
super.onPostExecute(结果);
//更多的东西
}
}

噢,我不知道使用
Void
传递空值,谢谢!哦,我不知道使用
Void
传递空值,谢谢!