为什么AsyncTask不能实现doInBackground以外的方法?
Why AsyncTask can't implement methods except doInBackground?
在 Android Studio 中,我尝试实现 AsyncTask
的 methods 接口,但它只显示方法 doInBackgound()
。我试图将光标放在 AsyncTask 上,然后按 Alt+Enter,但它只提供方法 doInBackgound()
。
import android.os.AsyncTask;
import java.net.URL;
public class MyTask extends AsyncTask<URL, Integer, Long> {
@Override
protected Long doInBackground(URL... urls) {
return null;
}
}
尝试按 Ctrl + O 来覆盖方法。查看是否可以从那里实施 OnPostExecute()。
重要:
OnPostExecute() 需要来自 doInBackground() 的参数 return。如果未提供参数且方法签名不匹配,则重写注释可能无法识别该方法。
您只看到 AsyncTask::doInBackground(URL...)
的原因是因为该方法未在 抽象 class AsyncTask
中实现。
但是,其他的有默认实现,因此您只能覆盖它们。如果您需要 IntelliJ 或 Android Studio 来建议其他人,您需要执行 CTRL + O。这将建议您可以从父 classes.
覆盖的其他方法
public class MyTask extends AsyncTask<URL, Integer, Long> {
@Override
protected Long doInBackground(URL... urls) {
return null;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(Long aLong) {
super.onPostExecute(aLong);
}
}
在 Android Studio 中,我尝试实现 AsyncTask
的 methods 接口,但它只显示方法 doInBackgound()
。我试图将光标放在 AsyncTask 上,然后按 Alt+Enter,但它只提供方法 doInBackgound()
。
import android.os.AsyncTask;
import java.net.URL;
public class MyTask extends AsyncTask<URL, Integer, Long> {
@Override
protected Long doInBackground(URL... urls) {
return null;
}
}
尝试按 Ctrl + O 来覆盖方法。查看是否可以从那里实施 OnPostExecute()。
重要: OnPostExecute() 需要来自 doInBackground() 的参数 return。如果未提供参数且方法签名不匹配,则重写注释可能无法识别该方法。
您只看到 AsyncTask::doInBackground(URL...)
的原因是因为该方法未在 抽象 class AsyncTask
中实现。
但是,其他的有默认实现,因此您只能覆盖它们。如果您需要 IntelliJ 或 Android Studio 来建议其他人,您需要执行 CTRL + O。这将建议您可以从父 classes.
覆盖的其他方法 public class MyTask extends AsyncTask<URL, Integer, Long> {
@Override
protected Long doInBackground(URL... urls) {
return null;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onPostExecute(Long aLong) {
super.onPostExecute(aLong);
}
}