Używam funkcji BroadcastReceiver z działaniem TIMEZONE_CHANGED do resetowania alarmów za pomocą programu AlarmManager, aby upewnić się, że alarm działa dokładnie o ustalonej godzinie, nie kilka godzin wcześniej lub później, w zależności od zmiany strefy czasowej .Intencja TIMEZONE_CHANGED jest odbierana co kilka sekund.
Jednak w najnowszym dzienniku wysłanym przez użytkownika widziałem informację o zamiarach z TIMEZONE_CHANGED działaniem odbieranym co kilka sekund, gdy użytkownik skarżył się, że aplikacja jest niestabilna.
Oto kod onReceive mojego BroadcastReceiver za
@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));
}
manifestu filtr intencji:
<intent-filter>
<action android:name="android.intent.action.TIMEZONE_CHANGED" />
<action android:name="android.intent.action.TIME_SET" />
</intent-filter>
I część dziennika (to idzie tak przez ponad godzinę - pełna długość dzienniku)
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)
To Samsung Galaxy S III (Android w wersji 4.1.2). Dziwne jest to, że nie dzieje się to na moim S III. Czy to możliwe, że użytkownik ustawił opcję "automatycznej zmiany strefy czasowej według dostawcy" na swoim urządzeniu i informacje takie jak te są wysyłane co kilka sekund?
Czy ktoś to odrodził? Chyba będę po prostu dodać opcję, aby sprawdzić, czy strefa czasowa rzeczywiście zmienił przed aktualizacją transmisje, ale wciąż jest coraz odbiornik nazywa się co kilka sekund ...
Czy próbowałeś włączyć automatyczną zmianę czasu na swoim SIII i sprawdzić, czy to samo się dzieje? – romo
@romo Tak - nie napisałem tego w pytaniu, ale sprawdziłem to na moim S III zarówno z włączoną i wyłączoną opcją. – Koger
To jest stare pytanie, ale po prostu coś dodać: Zauważyłem to również i wydaje mi się, że dzieje się tak, gdy użytkownik ma automatyczną zmianę czasu na + niską łączność. Sądzę, że przy ciągłym przełączaniu z sieci Wi-Fi, sieci i braku czasu, czas jest resetowany za każdym razem, gdy uzyskujesz połączenie.Jak napisałeś w odpowiedzi - główne opóźnienie pochodzi od odtworzenia obiektów formatu daty i tym podobnych, więc oczywistym rozwiązaniem byłoby porównanie stref przed zrobieniem czegokolwiek. – vladimir123