0
public static final long TIMEOUT = 60000;
public static final long SYSTEM_TIME = System.currentTimeMillis();

我将我的应用程序的 TIMEOUT 值设置为 60000,并且我有我的系统时间。现在我怎么知道50 seconds已经过去了,我需要向最终用户显示一条消息。

if (TIMEOUT  - SYSTEM_TIME <= 10000) {
    Toast.makeText(getApplicationContext(), "10 Seconds Left", Toast.LENGTH_LONG).show();
    disconnectHandler.postDelayed(disconnectCallback, DISCONNECT_TIMEOUT);
}
4

4 回答 4

1

如果您不需要在该线程中执行其他操作,则可以使用sleep(50000).

于 2013-04-12T09:57:20.383 回答
1

这是一次性运行特定任务的方法:

new Timer().schedule(new TimerTask() {              
            @Override
            public void run() {
                // TODO
                ...
            }
        }, TIMEOUT);

文档在这里(由 jimpanzer 报告)

于 2013-04-12T10:00:08.710 回答
1

也许你可以使用这样的东西:

long startTime = SystemClock.elapsedRealtime();
// do what you want
long endTime = SystemClock.elapsedRealtime();
long ellapsedTime = endTime - startTime;
if (ellapsedTime>TIME_OUT) {
    // do stuff
}
于 2013-04-12T10:02:49.777 回答
1

也许我错了,或者只是还没有喝足够的咖啡,但是 Timeout 是 60000,您的 System 值要高得多 - 从 1970 年开始的所有毫秒(如果我在这里也没有弄错的话)。这意味着 TIMEOUT - SYSTEM_TIME 的结果为负数,因此为负数,因此小于 10000。因此,您的 if 语句始终运行。

于 2013-04-12T10:05:01.960 回答