gpt4 book ai didi

java - 与 TimerTask、Android 中的延迟参数相关的奇怪 IllegalArgumentException

转载 作者:行者123 更新时间:2023-11-29 05:39:49 25 4
gpt4 key购买 nike

myTimer.scheduleAtFixedRate(timerTaskForListChecker, 0L, timerInterval*1000);

上面一行“有时”会以某种方式抛出以下异常:

Caused by: java.lang.IllegalArgumentException: Illegal delay to start the TimerTask: -1543808998843
at java.util.Timer.scheduleImpl(Timer.java:567)
at java.util.Timer.scheduleAtFixedRate(Timer.java:528)
...

如您所见,我的延迟参数中有“0”(稍后我尝试将其更改为 0L,但它也不起作用)

它如何将值“0”视为“-1543808998843”?

更新 1:

我有以下行,我从不更改 timeInterval 变量。

private int timerInterval = 3 * 60;

更新 2:我发现,生成此异常的系统也为以下行返回一个负数(溢出?):

(int)((double)System.currentTimeMillis()/1000L)

会不会跟定制的Android os有关? (按公司 - 设备特定 - 出厂默认值)

最佳答案

问题很可能是period参数错误。在这种情况下,出现意外负数的最可能原因是整数溢出。

我的猜测是您已将 timerInterval 声明为 int 并且“有时”您尝试延迟几百万秒......


你说这在某些平台上返回负数:

    (int)((double)System.currentTimeMillis()/1000L)

这很奇怪!它要么是 Android 到该平台的端口中的错误,要么是系统时钟以某种方式设置为不正确的值。

currentTimeMillis应该是自 1970 年 1 月 1 日以来的毫秒数 ... 作为 64 位有符号值。我看不出如何从上面的表达式中得到负数,除非 currentTimeMillis() 返回一个虚假的负值。

可能相关:

关于java - 与 TimerTask、Android 中的延迟参数相关的奇怪 IllegalArgumentException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18040227/

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