Ich verwende einen BroadcastReceiver mit TIMEZONE_CHANGED Aktion, um Alarme mithilfe von AlarmManager zurückzusetzen, um sicherzustellen, dass der Alarm genau zur eingestellten Zeit läuft, nicht einige Stunden früher oder später, abhängig von der Zeitzonenänderung .TIMEZONE_CHANGED Intent wird alle paar Sekunden empfangen
Jedoch in der neuesten Protokoll vom Benutzer gesendet, sah ich Informationen über die Absicht mit TIMEZONE_CHANGED Aktion alle paar Sekunden mit dem Benutzer applaudiert über app ist glitchy erhalten empfangen.
Hier OnReceive Code meines 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));
}
Die Intent-Filter Manifest:
<intent-filter>
<action android:name="android.intent.action.TIMEZONE_CHANGED" />
<action android:name="android.intent.action.TIME_SET" />
</intent-filter>
Und ein Teil des log (es so, dass für mehr als eine Stunde geht - in voller Länge des log)
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)
Es ist ein Samsung Galaxy S III (Android v 4.1.2). Das Seltsame ist, dass das bei meinem S III nicht passiert. Könnte es sein, dass der Benutzer die Option "automatische Zeitzonenänderung nach Anbieter" auf seinem Gerät aktiviert hat und Informationen wie diese alle paar Sekunden gesendet werden?
Hat es jemand erleuchtet? Ich denke, ich werde nur eine Option hinzufügen, um zu überprüfen, ob Zeitzone vor der Aktualisierung Sendungen tatsächlich geändert hat, aber es ist immer noch immer der Empfänger alle paar Sekunden genannt ...
Haben Sie versucht, die automatische Zeitänderung an Ihrem SIII einzuschalten und zu sehen, ob das Gleiche passiert? – romo
@romo Ja - Ich habe es nicht in der Frage geschrieben, aber ich habe es auf meiner S III sowohl mit dieser Option aktiviert und deaktiviert. – Koger
Dies ist eine alte Frage, aber nur um etwas hinzuzufügen: Mir ist das auch aufgefallen und es scheint mir, dass es passiert, wenn der Benutzer eine automatische Zeitänderung bei geringer Konnektivität hat. Ich schätze, wenn man ständig von Wi-Fi, Netzwerk und nie die Zeit wechselt jedes Mal zurückgesetzt wird, wenn Sie eine Verbindung bekommen.Wie Sie in der Antwort geschrieben haben - die Hauptverzögerung kommt von der Neuerstellung von Datumsformatobjekten und dergleichen, also wäre die naheliegende Lösung, die Zonen zu vergleichen, bevor Sie etwas tun. – vladimir123