2013-07-22 5 views
6

Stworzyłem aplikację przypominającą ludziom, aby na czas opanowali wariactwo. Za każdym razem, po umieszczeniu nowego pliku APK w Google Play, otrzymuję wiele skarg, których alarm nie działa. Zaczyna działać ponownie dopiero po uruchomieniu aplikacji przez użytkownika (lub ponownym uruchomieniu). Pomoc!Android AlarmManager nie uruchamia się po aktualizacji Google Play

+0

Twoja aplikacja zostałby zatrzymany w celu zaktualizuj, włączając wszelkie usługi i alarmy. Będziesz musiał poinformować ich, aby otworzyli aplikację po aktualizacji, co da ci szansę na rozpoczęcie wszelkich usług/alarmów, których potrzebujesz. –

+0

Tak, prawie utknąłeś tutaj. http://stackoverflow.com/questions/8531926/how-to-start-a-service-when-apk-is-installed-for--he-first-time/8535062#8535062 – roostertech

Odpowiedz

8

Zapoznaj się z intencją działania (na plaster miodu i na górę).

Powinieneś być w stanie zarejestrować odbiornik dla niego w manifeście, który może następnie przełożyć alarmy.

+0

W Studio 1.0, gdy używam pomocy kontekstowej Widzę tylko ten android.intent.action.PACKAGE_REPLACED. Nie widzę Androida.intent.action.ACTION_MY_PACKAGE_REPLACED. Czy to w porządku, aby użyć pierwszego? Obsługuję tylko po API 16 – user2731584

+0

Czy twoja minSdkVersion 16 i twoja wartość targetSdkVersion 21? – orip

+0

tak, min SDK wynosi 16, a maksimum to 21. – user2731584

3

Zaplanowane alarmy NIE zostaną anulowane podczas aktualizacji. Zweryfikowałem to dla Androida w wersji 2.2 i 4.3 oraz najnowszego Google Play w chwili pisania.

Należy upewnić się, że nowe wersje obsługują wszystkie oczekujące zamiary dowolnej starszej wersji. Oznacza to, że:

  • sama definicja cel w manifeście (odbiornik transmisji lub usług)
  • sama intencja „umowa”: działania, Dodatki, itp
+1

właściwie nie alarm zostanie anulowany, a ty masz aby ponownie go ustawić – AnasBakez

+2

To jest nieprawidłowe. Alarm nie będzie już więcej anulowany. Chcesz dowód? Spójrz na źródło: http://grepcode.com/file/repo1.maven.org/maven2/org.robolectric/android-all/4.3_r2-robolectric-0/com/android/server/AlarmManagerService.java#AlarmManagerService. UninstallReceiver – sooniln

+2

@sooniln masz rację, ale twój link wskazuje Robolectric kod źródłowy. Oto link do kodu źródłowego Androida - http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.0.2_r1/com/android/server/AlarmManagerService. java/# 1902 – Eliezer