使用标记

时间:2015-05-28 14:21:56

标签: java android

我将数据路由,long,lat,mac发送到服务器非常10秒。通常路由为0.在这种情况下,将要求服务器提供路由。只要应用程序具有来自服务器的路径,就会出现Checkbox AlertDialog以确认用户的结果。然后路由将使用其他数据Long,lat,mac作为JSOn字符串进行环境并再次传输到服务器。

我遇到问题,当用户不立即与Dialog交互时,警报Dialogs会堆积起来。我想要实现的是当服务器为应用程序提供路由时只弹出一次Dialog窗口,而不是10秒钟来自服务器的响应,因为当用户反应太晚他必须确认所有这些Dialog Windows时也是如此1分钟后,他必须确认6 Dialog Windows。因此,我使用flag来达到目标​​,但目前带有标记的问题是当它设置为false时,无法再次输入stop_popup方法,直到应用程序重新启动增益。

有没有在10分钟后将flag变量设置为true,而不会中断将数据发送到服务器?

public class TrackingService extends Service implements AsyncTaskCallback  {

    boolean flag = true;
      ......
        @Override
    public void onAsyncTaskFinished(ArrayList<Integer> routeList, double distance) {
        if (distance <= 15 && speed <= 4 && flag== true) {
            popup_dialog(routeList);

        } else {
            route_number = routeList.get(0);
            System.out.println("The route number is: " + route_number);
        }

    }


    private void popup_dialog(final ArrayList<Integer> routeList) {


        int routeListSize = routeList.size();
        flag = false;

        if (routeListSize > 0) {
      //AlertDialog.Build code
   }
  }
}

1 个答案:

答案 0 :(得分:1)

使用postDelayed Handler,在10分钟后转为flag = true

private void popup_dialog(final ArrayList<Integer> routeList) {
    int routeListSize = routeList.size();

    flag = false;

    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            flag =true;                       
        }
    }, 10 * 1000 * 60);  // 10 minutes (60 sec * 1000 milliseconds)

    if (routeListSize > 0) {
        //AlertDialog.Build code
}