我将数据路由,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
}
}
}
答案 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
}