0

我正在尝试在后台执行服务。该服务在启动时启动,其功能是每 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
}

如果xxxxinmHandler,postDelayed(updateRunnable, xxxx)是 600000(10 分钟,以毫秒为单位),它运行完美,但如果它是 28800000(8 小时,以毫秒为单位),则不会

有什么建议么?

提前致谢

4

1 回答 1

3

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

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

如果 "mHandler,postDelayed(updateRunnable, xxxx)" 中的 "xxxx" 为 600000(10 分钟,以毫秒为单位),则运行完美,但如果为 28800000(8 小时,以毫秒为单位),则不会

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

于 2013-01-13T17:52:04.810 回答