Androidモニタアップロード小demoの第2ステップ設定定期実行

3131 ワード

前のブログでは、プログラムを起動するとすぐに実行する方法について説明しています.
では、前回の考え方「起動してタイマーを実行し、あるサービスをタイミングよく実行する」に基づいて、定期的にアップロードタスクを実行します.
必要なのはAlarmManagerです
 
Alarmmanagerの役割はタイマーに似ています.androidは将来のある時点でプログラムを実行することができます.彼のメリットは、activityが現在inactive状態にあるとしても、デバイスを再起動しない限り、正確に実行することができます.
AlarmManagerでは、多くの中トリガ形式をサポートできます.単一、ループ、カスタムループの3つのモード(アラームの3つのモードを考えてみてください)があり、APIでこれらの情報を見ることができます.
set (int type, long triggerAtTime, PendingIntent operation)
Schedule an alarm. setInexactRepeating (int type, long triggerAtTime, long interval, PendingIntent operation)
Schedule a repeating alarm that has inexact trigger time requirements; for example, an alarm that repeats every hour, but not necessarily at the top of every hour. setRepeating (int type, long triggerAtTime, long interval, PendingIntent operation)
Schedule a repeating alarm.
 
ここではループつまりsetRepeatingを使用しています
このパラメータについてお話しします
まずtypeはタイマーを表すいくつかの異なる計時方式であり、ELApSED_を含む.REALTIME、ELAPSED_REALTIME_WAKEUP、RTC、およびRTC_WAKEUP
Elapseシリーズは、起動時からスタートし、マシンのスリープ時間を含めてrtcとは、現在の時間を指し、その後wakeupのパラメータ修飾を加えていないことは、到着時間後にデバイス処理(wakeupがある)を起動するか、ユーザーwakeupマシンの後に実行する(walkupがない)を待つかを意味する.
 
後ろの2つのtriggerAtTimeとintervalは開始時間とステップ長を表し、最後の1つはoperation起動する必要があるintentですここで注意してください.ここでpendingintentは予備使用のintentです.
OK、コードを置く
 
        PendingIntent mAlarmSender = PendingIntent.getService(context, 0, new Intent(

                context, UploadImgService.class), 0);



        long firstTime = SystemClock.elapsedRealtime();

        AlarmManager am = (AlarmManager) context

                .getSystemService(context.ALARM_SERVICE);

        am.setRepeating(AlarmManager.ELAPSED_REALTIME_WAKEUP, firstTime,

                10 * 6000, mAlarmSender);

 
注意してください.このintentは私たちが実行するサービスです.
この意味は1 minごとにuploadImgServiceを実行するこのサービスです
 
次回はuploadImgServiceの実現についてお話しします