我试图弄清楚如何创建一个AsyncTask,该AsyncTask在后台运行我的php API代码,然后在MainActivity完成时提醒我。我已经阅读教程并尝试了几个小时,而现在我很沮丧,因为找不到任何能回答我问题的地方。
我创建了AsyncTask并成功运行,并且可以在onPostExecute中记录来自API的返回信息,但是我无法弄清楚如何向MainActivity通知任务已完成。我不知道将什么传递给APICall的创建。我阅读的每个教程都表明AsyncTask构造函数将接口作为参数,如下面的代码所示,但是如何传递接口作为参数呢?
MainActivity.java(实现OnTaskCompleted)
myButton4.setOnClickListener(new OnClickListener(){
public void onClick(View v){
APICall api = new APICall( ???What do I put here?? );
api.execute("users");
}});
....
@Override
public void onTaskCompleted() {
Log.v("Play","Main Activity ON Task completed!");
OnTaskCompleted.java
public interface OnTaskCompleted {
public void onTaskCompleted();
}
APICall.java(扩展了AsyncTask)
public APICall(OnTaskCompleted listener){
this.listener = listener;
}
....
protected void onPostExecute(JSONObject j)
{
listener.onTaskCompleted();
}
最佳答案
您应该将侦听器的引用传递给APICall类:
APICall api = new APICall(MainActivity.this);