Che*_*tah 0 java android abstract-class interface
我创建了一个扩展类Asynctask.从多个活动中调用此类.它从网页获取一些数据.之后,根据url,数据将在onPostExecute方法中处理.现在我使用多个else if语句,但它有点不方便.
有没有办法onPostExecute在创建新的Activity的Activity中定义方法Asynctask.
我认为它可能适用于接口或抽象方法,但我不确定,也不知道如何.
你可以不需要额外的工作就可以做到.
public class MyTask extends AsyncTask<Void, Void, Void>
{
@Override
protected Void doInBackground(Void... params)
{
// do some work
return null;
}
}
Run Code Online (Sandbox Code Playgroud)
并在活动中:
MyTask t = new MyTask()
{
@Override
protected void onPostExecute(Void result)
{
super.onPostExecute(result);
// do some work
}
};
Run Code Online (Sandbox Code Playgroud)
您为onPostExecute运行时将调用的AsyncTask注册一个事件侦听器.
public class Example extends AsyncTask<Void, Void, Void> {
public interface ExampleListener {
public void onStart();
public void onProgress();
public void onFinish();
}
private ExampleListener listener;
public Example(ExampleListener listener) {
mListener = listener;
}
@Override
public void onPreExecute() {
...
mListener.onStart();
...
}
@Override
public void onProgressUpdate(Void... v) {
...
mListener.onProgress();
...
}
@Override
public void onPostExecute(Void result) {
...
mListener.onFinish();
...
}
}
Run Code Online (Sandbox Code Playgroud)
自定义图案以适合您需要的任何设计.在侦听器需要为每个事件提供的接口方法中包含任何参数.如果你有一个实现的类Example.ExampleListener,那么你只需要通过调用来启动它new Example(this).execute().