Android Handler和postDelayed不';如果毫秒数太高,则无法工作

Android Handler和postDelayed不';如果毫秒数太高,则无法工作,android,Android,我正在尝试在后台执行服务。此服务在引导时启动,其功能是每8小时执行一次。在本例中,它使用JavaMail API和gmail帐户通过邮件发送文件。这是我的代码: private Handler mHandler; private Runnable updateRunnable = new Runnable() { @Override public void run() { new MailSenderActivity.MailSender().execute();

我正在尝试在后台执行服务。此服务在引导时启动,其功能是每8小时执行一次。在本例中,它使用JavaMail API和gmail帐户通过邮件发送文件。这是我的代码:

private Handler mHandler;
private Runnable updateRunnable = new Runnable() {
    @Override public void run() {
        new MailSenderActivity.MailSender().execute();


        queueRunnable();
    }
};

private void queueRunnable() {


    mHandler.postDelayed(updateRunnable, 28800000); 
}

@Override
public IBinder onBind(Intent intent) {
    return null;
}

@Override
public void onCreate() {

    mHandler = new Handler();
    queueRunnable();       
}

@Override
public void onDestroy() {
    //code to execute when the service is shutting down
}
@Override
public void onStart (Intent intent, int startid) {
    //code to execute when the service is starting up
}
如果
mHandler中的
xxxx
,postDelayed(updateRunnable,xxxx)
为600000(10分钟毫秒),则运行正常,但如果为28800000(8小时毫秒),则运行不正常

有什么建议吗

提前谢谢

我正在尝试在后台执行服务。此服务在引导时启动,其功能是每8小时执行一次

请不要那样做。请使用
AlarmManager
每8小时启动一次
IntentService
。这样,您的服务就不必一直留在内存中

如果“mHandler,postDelayed(updateRunnable,xxxx)”中的“xxxx”是600000(10分钟,以毫秒为单位),那么它运行得很好,但如果是28800000(8小时,以毫秒为单位),则不会

很可能是Android终止了你的进程。同样,如果使用
AlarmManager
IntentService
,这也不是问题

我正在尝试在后台执行服务。此服务在引导时启动,其功能是每8小时执行一次

请不要那样做。请使用
AlarmManager
每8小时启动一次
IntentService
。这样,您的服务就不必一直留在内存中

如果“mHandler,postDelayed(updateRunnable,xxxx)”中的“xxxx”是600000(10分钟,以毫秒为单位),那么它运行得很好,但如果是28800000(8小时,以毫秒为单位),则不会

很可能是Android终止了你的进程。同样,如果您使用
AlarmManager
IntentService

仅当您想延迟代码时才使用postDelayed()和AsyncTasks,这也不是问题。如果需要大于15分钟的延迟,请使用AlarmManager。如果要延迟代码,请使用postDelayed()和AsyncTasks。如果您需要大于15分钟的延迟,请使用AlarmManager