如何使AsyncTask的模块化机器人
问题描述:
我很新的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) {
}
};
}