Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/209.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用开始时间和经过的时间计算时间差_Java_Android - Fatal编程技术网

Java 使用开始时间和经过的时间计算时间差

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)如果您不需要在该线程中执行其他操作,您可以使

我将应用程序的超时值设置为60000,并设置了系统时间。现在我怎么知道
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。