如何编写可重用的类以发出HTTP异步请求?

时间:2018-07-25 06:06:25

标签: java android android-asynctask

我有一个项目,我想编写一些使用Internet服务从MySQL服务器获取数据的函数。这些功能在某些非活动类中。我打算从不同的活动中调用这些功能。我使用AsyncTask发出 HTTP 请求。以下是我设计的框架。

public class MyLibrary{
    String myData;

    protected String getMyData(String param){
        HashMap<String, String> params = new HashMap<>();
        params.put("param1", apicall);
        params.put("param2", param);
        MyAsyncClass myAsyncClass = new MyAsyncClass(params);
        myAsyncClass.execute();

        /* Here after finishing the task I want to return the data to the caller */
        return myData;
    }

    private class MyAsyncClass extends AsyncTask<String, Integer, String> {
        MyAsyncClass(HashMap<String, String> params) {
            this.postData = params;
        }

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        @Override
        protected String doInBackground(String... params) {
            RequestHandler requestHandler = new RequestHandler();
            return requestHandler.sendPostRequest(GlobalConstants.myurl, postData);
        }

        @Override
        protected void onPostExecute(String result) {
            super.onPostExecute(result);
            /* parse code here ... */
        }
    }
}

此类活动将通过我的如下活动进行访问。

public class SampleActivity extends AppCompatActivity{ 
    String returnedData;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        MyLibrary myLibraryObject = new MyLibrary();
        returnedData = myLibraryObject.getMyData("cih");

        /* do something with returnedData */
    }      

}

任何建议对我都会有很大帮助。由于我是新手,这可能是一个愚蠢的问题,但是我的概念是重用代码

2 个答案:

答案 0 :(得分:0)

我认为翻新可以解决您的问题。您可以搜索retrofit interceptor

答案 1 :(得分:0)

如果您打算以这种异步方式进行操作,则应使用接口作为回调,否则您可以通过在AsyncTask中调用get方法来获得结果

falsey