如何使AsyncTask的模块化机器人机器人、AsyncTask

2023-09-13 01:34:26 作者:扮乖

我很新的Andr​​oid开发。我工作在一个应用程序,我需要做大量的异步调用的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) {

        }
    };
}
 
精彩推荐
图片推荐