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
}

xxxxinが 600000 (ミリ秒で 10 分) の場合mHandler,postDelayed(updateRunnable, xxxx)は完全に実行されますが、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 に答える