u-sukeです。
AlarmManager の挙動に関しまして質問をさせて頂きます。
AlarmManager.setRepeating の第一引数に AlarmManager.RTC を定義した場合の挙動なのですが、
Sleep中に周期実行で指定された時間を経過した段階では実行されず、次回Sleepからの復帰時に
実行されるという認識でいます。
しかし、実際にRTCでsetRepeatingにて、1時間毎に外部メモリに保存したtxtに追記していくという
サンプルアプリを作成し、インストールして起動後にホーム画面に戻り、電源短押しでディスプレイが
消えたのを確認し、充電等行わない状態で数時間放置して挙動を確認したところ、試した全てのデバイス
(5台程度、全て異なるメーカ)で、ログが出力されていたという結果になりました。
WakeLockの可能性もなさそうでしたし、起動時間が違うにも関わらずほぼ一時間毎に出力されている事から
他アプリ要因(RTC_WAKEUP)に引きづられての動作でも無いようです。
この動作では、RTC_WAKEUPとなんら変わらない物となり、一体なぜこのような事象となるかがわかりません。
ご存知の方がいらっしゃいましたらご教示頂きたく。
また余談ではありますが、2.x系ではsetInexactRepeatingに不具合があり、15分刻みの時間に寄ってしまうと
いう事象があると聞いています。
setRepeatingではそういった事象はないのでしょうか?
原因はわからないのですが、時折よっているような動きをしているように見えたので、こちらも合わせて
ご存知の方がいらっしゃいましたらと思います。