我想让我的应用程序在将来的某个时刻执行代码。
我想做:
Date now = new Date();
for (Date beep : scheduledBeeps) {
if (beep.after(now))
{
Logger.i("adding beep");
m_beepTimer.postAtTime(beepNow, beep.getTime());
}
}
在日志中我可以看到添加了 4 声蜂鸣声,但它们从未触发。我假设它与uptimeMillis有关,但我不知道该怎么做。
最佳答案
您必须获得 now 和 beep.gettime() 之间的差异并将其传递给 postattime 函数。由于正常运行时间是作为基准,因此如果手机进入深度 sleep ,则可能不准确。
beep.gettime - now + SystemCLock.uptimeMillis()
应传递给 postattime 函数
您当前正在传递一个非常大的数字,相当于 1970 年 1 月 1 日以来的当前毫秒数。
关于java - 如何使用 Android 的 Handler.PostDelayed 使事件在指定时间发生?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8764588/