我很新的Android开发。我工作在一个应用程序,我需要做大量的异步调用的API。对于每一个API调用,我必须一遍又一遍写的外观相似的AsyncTask类。那么,有没有什么办法让这些异步调用模块?
I am quite new to Android Development. I am working in a app where i need to make a lot of async calls to api. For each and every API call, I have to write the similar looking AsyncTask class over and over again. So, is there any way to make these Async Calls modular?
是有可能使用监听器和AsyncTask的使用参数的构造函数
yes it is possible use Listener and AsyncTask with parameterized constructor
快来看
创建接口
public interface OnTaskCompletListerner {
void oncompleteListerner(String name);
}
创建的AsyncTask类如下:
create an AsyncTask class as follows
public class AsyncTaskModuler extends AsyncTask<Void, Void, String> {
private Context context;
private HashMap<String, String> data;
private String URL;
private OnTaskCompletListerner taskdone;
public AsyncTaskModuler(Context ctx,HashMap<String, String> data,String url,OnTaskCompletListerner taskdone){
this.context=ctx;
this.data=data;
this.URL=url;
this.taskdone=taskdone;
}
@Override
protected String doInBackground(Void... params) {
//Do the task here and return the value if needed
return null;
}
@Override
protected void onPostExecute(String result) {
taskdone.oncompleteListerner(result);
}
和调用它像这样的活动
public class CallAync extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String url="";
HashMap<String, String> data=new HashMap<String, String>();
AsyncTaskModuler moduler=new AsyncTaskModuler(CallAync.this, data, url, completListerner);
moduler.execute();
}
OnTaskCompletListerner completListerner=new OnTaskCompletListerner() {
@Override
public void oncompleteListerner(String name) {
}
};
}