我试图了解AsyncTask回调是如何工作的。这就是我的MainActivity到目前为止的样子:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
MyAsyncTask AsyncTask = new MyAsyncTask(arg1,arg2,arg3).execute();
}
这是我的AsyncTask类:
public class MyAsyncTask extends AsyncTask<String, Void, Result> {
private AsyncListener listener;
public MyAsyncTask(AsyncListener listener) {
this.listener = listener;
}
public MyAsyncTask() {
}
@Override
protected Result doInBackground(String... strings) {
return null;
}
@Override
public void onPostExecute(Result result) {
listener.onTaskCompleted();
}
public interface AsyncListener{
void onTaskCompleted();
}
}
这只是我提出的骨架结构。我想实现我在AsyncTask中调用多个函数,比如使用SharedPreference设置应用启动计数器或初始化AdMob广告。实现这一目标的最佳方式是什么?
答案 0 :(得分:2)
您的结构不完全正确,因为您在Activity使用中有3个参数,但您的AsyncTask应该是&#34;回调&#34;有一些结果的接口监听器。
例如
@Override
public void onPostExecute(Result result) {
if (listener != null) {
listener.onTaskCompleted(result);
}
}
因此,您需要更新接口方法以接受参数。
然后你需要传递一个接口的实现&amp;方法(或匿名类)到AsyncTask,然后你有一个回调。
关于调用多个方法,您可以对不同的任务使用多个回调,但这实际上取决于您的最终目标。