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在什么方面没有区别?