Hatena::ブログ(Diary)

_development, RSSフィード Twitter

2013-11-03

AlarmManagerがKitKatで省エネ動作になった

概要

targetSdkVersionが19以降の場合はAlarmManagerの set() 及び setRepeating() が厳密ではなくなるという話。


Android 4.4 APIs #BehaviorAlarms | Android Developers

When you set your app's targetSdkVersion to "19" or higher, alarms that you create using either set() or setRepeating() will be inexact.


詳細

Android 4.4 APIs #BehaviorAlarms | Android Developersより。


When you set your app's targetSdkVersion to "19" or higher, alarms that you create using either set() or setRepeating() will be inexact.


アプリケーションのtargetSdkVersionが19以降に設定されている場合、set()、またはsetRepeating()でつくったアラームは厳密ではなくなる。


To improve power efficiency, Android now batches together alarms from all apps that occur at reasonably similar times so the system wakes the device once instead of several times to handle each alarm.


電力効率を改善するため、Androidはそれぞれのアラームを毎回発火する代わりに、全てのアプリケーションのアラームを合理的にまとめた時間にだけデバイスを起こし、まとめて発火するようになった。


If your alarm is not associated with an exact clock time, but it's still important that your alarm be invoked during a specific time range (such as between 2pm and 4pm), then you can use the new setWindow() method, which accepts an "earliest" time for the alarm and a "window" of time following the earliest time within which the system should invoke the alarm.


アラームを厳密な時刻に限定してはいないが、特定の時間帯(午後2時から午後4時の間のような)にアラームが発火することが重要な場合、新しいsetWindow()メソッドが使える。メソッドは、時間枠(window)の間で、システムがアラームを発火する必要のある機会の最先にアラームが発火するようにする。


If your alarm must be pinned to an exact clock time (such as for a calendar event reminder), then you can use the new setExact() method.


アラームを厳密な時間に留めておきたい場合(カレンダーの予定のリマインダーなど)、新しいsetExact()メソッドが使える。


This inexact batching behavior applies only to updated apps. If you've set the targetSdkVersion to "18" or lower, your alarms will continue behave as they have on previous versions when running on Android 4.4.


この、厳密ではない時間にまとめて実行する振る舞いは、新しいアプリケーションだけに適用される。targetSdkVersionを18以下に設定しておけば、Android 4.4より前のバージョンでの振る舞いになる。


参考

リンク元