###環境
Android Studio2.3.3
SDK 7.1
API 25
###前提・実現したいこと
AlarmManagerでService.classを3秒間隔でリピート処理をすることを実現させたいです。
###発生している問題・エラーメッセージ
Service.classが起動後、Service内の処理が終わったら
Stopself();で自身でサービスをとめる
↓
Service内のonDestroy()でA.class内のpublic static void RepeatAlarm()を呼び出す
としてリピート処理をさせていますが実行結果は約5秒間隔となってしまいます。
###該当のソースコード
public static void RepeatAlarm(Context context){ Intent it = new Intent(context, Service.class); int requestCode = 1; PendingIntent pendingIntent = PendingIntent.getService (context, requestCode, it, PendingIntent.FLAG_CANCEL_CURRENT); AlarmManager manager = (AlarmManager) context.getSystemService(Context.ALARM_SERVICE); long Time = System.currentTimeMillis(); manager.setExact(AlarmManager.RTC_WAKEUP,Time+3*1000, pendingIntent); }
###試したこと
setExact()の第二引数の値を1秒や0.5秒などに設定してみましたが
結果は変わらずリピートの間隔は約5秒でした。
###補足
SetRepeating()で行っていたときはリピートの間隔が約1分だったので、
それに比べるとまだマシですが3秒間隔にするというのは諦めるしかないのでしょうか・・。
以前はService.class内にTimerを設けて3秒間隔でリピート処理を行い、
Service内のonStartCommandの戻り値をSTART_STICKYにして落ちても再起動させていました。
ですがバックグラウンドで動くこのServiceが原因で
他のアプリが不安定になってしまったので、
AlarmManagerで3秒間隔でService.classをスタートさせるということで
常に動いていてほしいService内の処理をリピートすることに変更しました。
特別な関数や、いいコーディング、アイディアなどありましたら宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2017/11/14 08:34
2017/11/14 08:44
2017/11/14 10:47
2017/11/14 23:44