Я использую BroadcastReceiver с действием TIMEZONE_CHANGED, чтобы сбросить аварийные сигналы с помощью AlarmManager, чтобы убедиться, что будильник срабатывает точно в установленное время, а не на несколько часов раньше или позже, в зависимости от изменения часового пояса ,TIMEZONE_CHANGED намерение принимается каждые несколько секунд
Однако в последнем журнале, отправленном пользователем, я видел информацию о намерении с действием TIMEZONE_CHANGED, которое принимается каждые несколько секунд, при этом пользователь жалуется на то, что приложение является глючным.
Вот OnReceive код моего BroadcastReceiver в
@Override
public void onReceive(Context context, Intent intent) {
Utils.log("OnTimeChange");
String action = intent.getAction();
if (action.equals(Intent.ACTION_TIME_CHANGED)) {
Utils.log("TimeChange");
} else if (action.equals(Intent.ACTION_TIMEZONE_CHANGED)) {
Utils.log("TimeZoneChanged");
}
BroadcastsManager.updateBroadcastsFromAlarms(context,
AlarmsDbAdapter.getInstance(context));
}
Намерения фильтр манифеста в:
<intent-filter>
<action android:name="android.intent.action.TIMEZONE_CHANGED" />
<action android:name="android.intent.action.TIME_SET" />
</intent-filter>
И часть журнала (он идет, как, что в течение часа - полная длина бревна)
1. 19/4 7:41:54 - posting alarm 3 for 8:15 (in 0h)
2. 19/4 7:44:29 - OnTimeChange
3. 19/4 7:44:29 - TimeZoneChanged
4. 19/4 7:44:29 - posting alarm 3 for 8:15 (in 0h)
5. 19/4 7:44:54 - OnTimeChange
6. 19/4 7:44:54 - TimeChange
7. 19/4 7:44:54 - posting alarm 3 for 8:15 (in 0h)
Это Samsung Galaxy S III (Android v 4.1.2). Странная вещь, что не происходит на моем S III. Возможно ли, что пользователь установил на своем устройстве опцию «автоматическое изменение часового пояса поставщиком», и такая информация отправляется каждые несколько секунд?
Кто-нибудь продлил это? Я предполагаю, что я просто добавить опцию, чтобы проверить, если часовой пояс фактически изменился перед обновлением передач, но по-прежнему получать приемник называется каждые несколько секунд ...
Вы пытались включить автоматическое изменение времени на своем SIII и посмотреть, произойдет ли одно и то же? – romo
@romo Да - я не писал это в вопросе, но я проверял его на своем S III, когда эта опция включена и отключена. – Koger
Это старый вопрос, но просто чтобы добавить что-то: я тоже это заметил, и мне кажется, что это происходит, когда у пользователя есть автоматическое изменение времени при + низком уровне подключения. Я предполагаю, что при постоянном переходе с Wi-Fi, сети и ни при каких обстоятельствах каждый раз при каждом подключении вы будете сброшены.Как вы писали в ответ - основная задержка исходит от воссоздания объектов формата даты и т. П., Поэтому очевидным решением было бы сравнить зоны перед тем, как что-либо сделать. – vladimir123