Android 'AsyncTask'不接受void类型的'doInBackground()'?
从中我们可以看出 Params,执行时发送到任务的参数类型 进度,后台计算期间发布的进度单位的类型 结果,背景计算结果的类型 还提到了极好的回答 但是,为什么使用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
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
传递空值,谢谢!