Java 延迟投递的最长时间
我有这个方法:Java 延迟投递的最长时间,java,android,timer,runnable,android-handler,Java,Android,Timer,Runnable,Android Handler,我有这个方法: public static Runnable runAtDate(Date date, final TimerCallback callback) { Date now = new Date(); long timeTo = date.getTime() - now.getTime(); if (timeTo <= 0) { if (callback != null) callback.onRun()
public static Runnable runAtDate(Date date, final TimerCallback callback)
{
Date now = new Date();
long timeTo = date.getTime() - now.getTime();
if (timeTo <= 0)
{
if (callback != null)
callback.onRun();
}
else
{
final Runnable runnable = new Runnable()
{
@Override
public void run()
{
if (callback != null)
callback.onRun();
}
};
handler.postDelayed(runnable, timeTo);
return runnable;
}
return null;
}
public static Runnable runAtDate(日期日期、最终TimerCallback回调)
{
现在日期=新日期();
long-timeTo=date.getTime()-now.getTime();
如果(使用postaTime
的时间相反,请注意,当应用程序进程被操作系统终止时,已发布的Runnables
会被遗忘,为什么不想使用AlarmManager
?应用程序不会在最长时间后终止,但不会以其他方式执行。我将查看postTime,甚至没有想过它。但是,既然应用程序没有被杀死-似乎有某种时间限制,这仍然很高兴知道。没有这样的限制,请参阅,为什么不使用AlarmManager
?@pskink检查Looper的来源,似乎postDelayed最终调用sendMessageAtTime,这正是postAtTime所做的,因此没有区别e、 @GregEnnis在什么方面没有区别?