我正在寻找关于以下内容的建议,我有一个 HttpUtil类(util),其中我有sendGetRequest-和sendPostRequest方法。 我使用它们来执行成功登录我将要获取某些数据的网站。 现在,我在Asynctask中的 MainActivity 中调用这些方法:
protected Boolean doInBackground(Void... params) { try { //1. GET request util.sendGetRequest(loginURL, null); //2. Post request util.sendPostRequest(loginURL, null); //3. Final GET request util.sendGetRequest(resultURL, null); // Read stream String[] response = util.readMultipleLinesRespone(); for (String line : response) { System.out.println(line); } } catch (InterruptedException e) { return false; } catch (Exception e) { e.printStackTrace(); } }
我正在寻找一个解决方案,以便一个等待来完成另一个(第一个获取然后发布,最后获得),如果有可能我想保持这个util.class完整而不是把所有东西放在Asynctask(doInBackground)中。 这是可能的还是我做错了?
您的意见和建议。
提前谢谢。
答案 0 :(得分:1)
我通常使用的方法是:
使用这种方法应该可以让您的生活更轻松 - 特别是帮助您了解某些事情何时完成,以便您可以根据需要继续执行下一项任务。
祝你好运!答案 1 :(得分:0)
您可以拥有两个AsyncTasks。一个用于获取,另一个用于发布。首先执行get请求。然后在第一个AsyncTask的onPostExecute中执行第二个在doInBackground()中发送post请求的AsyncTask;
答案 2 :(得分:0)
您的HttpUtil类应以某种方式表示已收到响应。 例如,将此代码放在HttpUtil中以表示操作结束:
synchronized (this) {
done = true;
notifyAll();
}
并且此代码将等待操作结束:
while(!util.isDone()) {
try {
synchronized(util) { util.wait(); }
} catch(Exception e) { ... }
}