Android Handler和postDelayed不';如果毫秒数太高,则无法工作
我正在尝试在后台执行服务。此服务在引导时启动,其功能是每8小时执行一次。在本例中,它使用JavaMail API和gmail帐户通过邮件发送文件。这是我的代码: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();
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