Java 使用开始时间和经过的时间计算时间差
我将应用程序的超时值设置为60000,并设置了系统时间。现在我怎么知道Java 使用开始时间和经过的时间计算时间差,java,android,Java,Android,我将应用程序的超时值设置为60000,并设置了系统时间。现在我怎么知道50秒已经过去了,我需要向最终用户显示一条消息 public static final long TIMEOUT = 60000; public static final long SYSTEM_TIME = System.currentTimeMillis(); if(TIMEOUT-SYSTEM\u TIME如果您不需要在该线程中执行其他操作,您可以使用sleep(50000)如果您不需要在该线程中执行其他操作,您可以使
50秒
已经过去了,我需要向最终用户显示一条消息
public static final long TIMEOUT = 60000;
public static final long SYSTEM_TIME = System.currentTimeMillis();
if(TIMEOUT-SYSTEM\u TIME如果您不需要在该线程中执行其他操作,您可以使用sleep(50000)
如果您不需要在该线程中执行其他操作,您可以使用sleep(50000)
这是一次运行特定任务的方法:
if (TIMEOUT - SYSTEM_TIME <= 10000) {
Toast.makeText(getApplicationContext(), "10 Seconds Left", Toast.LENGTH_LONG).show();
disconnectHandler.postDelayed(disconnectCallback, DISCONNECT_TIMEOUT);
}
文档是(由jimpanzer报告)这是如何一次性运行特定任务:
if (TIMEOUT - SYSTEM_TIME <= 10000) {
Toast.makeText(getApplicationContext(), "10 Seconds Left", Toast.LENGTH_LONG).show();
disconnectHandler.postDelayed(disconnectCallback, DISCONNECT_TIMEOUT);
}
文件是(jimpanzer报道的)也许你可以使用这样的东西:
new Timer().schedule(new TimerTask() {
@Override
public void run() {
// TODO
...
}
}, TIMEOUT);
也许你可以用这样的方式:
new Timer().schedule(new TimerTask() {
@Override
public void run() {
// TODO
...
}
}, TIMEOUT);
也许我错了,或者只是没有喝足够的咖啡,但是超时是60000,你的系统值要大得多——所有的毫秒都是从1970年开始的(如果我没有弄错的话)。这意味着您的超时结果-SYSTEM_TIME为负数,因此为负数,因此小于10000。因此,您的if语句始终运行。可能我错了,或者只是没有喝足够的咖啡,但超时为60000,您的系统值要大得多-从1970年开始的所有毫秒数(如果我在这里没有弄错的话)。这意味着您的超时结果-SYSTEM_TIME为负数,因此为负数,因此小于10000。因此您的if语句始终运行。使用您也可以使用日历为什么不使用nanoTime()进行持续时间测量?在处理程序上使用postDelayed。使用您也可以使用日历为什么不使用nanoTime()对于持续时间测量?处理程序上的postDelayed。