在android的同步任务中多次调用HTTP



我想通过http发送一些数据在一个按钮点击,每次用户点击按钮一些数据应该添加到队列中,然后它将通过http发送,得到响应后,我想从队列中删除它,然后在队列中做同样的下一个项目。

我知道如何将项目添加到队列中,我尝试了异步任务调用http。问题是,如果用户多次点击按钮,我怎么能确保队列中的下一个项目不会被调用,直到第一个http完成。如果应用程序也在后台,我希望操作能够完成。

这是doInBackground方法中的Async代码:
@Override
protected Boolean doInBackground(Void... params) {
 try {
 msgResponseIS = getInputStream(generatedLink);
 } catch (IOException e) {
  // TODO Auto-generated catch block
 e.printStackTrace();
 }
 if (msgResponseIS != null){

      BufferedReader r = new BufferedReader(new InputStreamReader(
       msgResponseIS));
      StringBuilder total = new StringBuilder();
      String line;
      try {
          while ((line = r.readLine()) != null) {
       total.append(line);
          }
          setResponseValue(total.toString());
      } catch (IOException e) {
          // TODO Auto-generated catch block
          e.printStackTrace();
      }

     return true;}
     else
     return false;
      }

1。在预执行函数中,您可以像这样设置可点击属性。
Button.setClickable(假)
2. 在调用doInBackground之后,调用post execute方法并将clickable设置为true。
Button.setClickable(真正的);

当请求被称为do myButton.setEnabled(false);时,当http请求完成时,您可以执行

myButton.setEnabled(true);

其中myButton是调用异步任务的按钮。这样就可以保证只要异步任务在运行,用户就不能使用这个按钮。

EDIT:另一种方法是制作boolean free = ture;标志。当按钮被点击,然后只需设置标志为free = false;,并做一个检查。

相关内容

  • 没有找到相关文章

最新更新