[英]Handler.postDelayed function doesn't create time delays ? - Android
[英]How do I use Android's Handler.PostDelayed to make an event happen at a specified time?
我想让我的应用程序在将来的某个时刻执行代码。
我想要做:
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函数。 由于正常运行时间是基础,因此如果手机进入深度睡眠状态,则可能不准确。
beep.gettime-现在+ SystemCLock.uptimeMillis()
应该传递给postattime函数
您当前传递的数字非常大,等于1970年1月1日的当前毫秒数。
您可以使用Calendar类设置某个时间点。
Calendar beepTime = Calendar.getInstance();
beepTime.set(Calendar.DAY_OF_MONTH, 2);
beepTIme.set(Calendar.HOUR_OF_DAY, 01);
beepTime.set(Calendar.MINUTE, 55);
beepTime.set(Calendar.SECOND, 00);
getInstance会将其设置为当前时间,您可以更改任何喜欢的变量,例如上面的那些。 例如,这将在当月2号的1:55创建一个时间。 然后,您可以将其设置为可以开始的时间
beepTime.getTimeInMillis()
只是将其弹出到您的postAtTime方法中
编辑:另外,我对您的问题还不足够肯定地说,但是使用AlarmManager可能更好。 我知道即使程序未运行,它仍然可以工作,而我不认为PostDelayed可以。 如果我错了,请随时纠正我!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.