gpt4 book ai didi

java - 使用标志显示一次 AlertDialog

转载 作者:行者123 更新时间:2023-12-01 11:29:50 25 4
gpt4 key购买 nike

我每隔 10 秒就向服务器发送数据路由、经度、纬度、mac。通常路由为 0。在这种情况下,将向服务器询问路由。一旦应用程序获得来自服务器的路由,复选框AlertDialog就会出现以确认用户的结果。然后将路由中的其他数据 Long、lat、mac 作为 JSOn 字符串封装起来,再次传输到服务器。

我面临的问题是,当用户不立即与对话框交互时,警报对话框会堆积起来。我想要实现的是,当服务器为应用程序提供路由时,仅弹出一次对话框窗口,而不是在 10 秒内弹出服务器的响应,因为当用户 react 太晚时,他还必须确认所有这些对话框窗口1 分钟后,他必须确认 6 个对话窗口。因此,我使用 flag 来实现这一点,但当前 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
}
}
}

最佳答案

使用 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
}

关于java - 使用标志显示一次 AlertDialog,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30509326/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com