1

我想在单击按钮时通过http发送一些数据,每次用户单击按钮时,应该将一些数据添加到队列中,然后它将通过http发送,在得到响应后我想将其从队列中删除然后对队列中的下一个项目执行相同的操作。

我知道如何将项目添加到队列中,并且我尝试了异步任务来调用 http. 如果用户多次单击按钮的问题,我如何确保在第一个 http 完成之前不会调用队列中的下一个项目。如果应用程序也在后台,我希望操作完成。

这是 doInBackground 方法中的异步代码:

@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;
      }
4

2 回答 2

0

当请求被调用时myButton.setEnabled(false);,当 http 请求完成时你可以做

myButton.setEnabled(true);

myButton调用异步任务的按钮在哪里。这样,您可以确保只要异步任务运行,用户就不能使用此按钮。

编辑:另一种方法是制作boolean free = ture;标志。单击按钮时,只需将标志设置为free = false;并进行检查。如果标志为真,则可以进行 http 调用,否则不能进行。

于 2013-01-01T13:53:11.640 回答
0

1.在 preExecute 功能上,您可以像这样设置可点击属性。
Button.setClickable(false)
2. 调用doInBackground 后调用post execute 方法并将clickable 设置为true。
Button.setClickable(true);

于 2013-01-01T13:55:49.947 回答