2013-07-22 34 views
6

Tôi đã tạo một Ứng dụng nhắc nhở mọi người thực hiện các tác động đến thời gian. Mỗi lần, sau khi tôi đặt một APK mới trên Google Play, tôi nhận được nhiều khiếu nại báo thức không hoạt động nữa. Nó bắt đầu hoạt động trở lại chỉ sau khi người dùng khởi động ứng dụng (hoặc khởi động lại). Trợ giúp!Android AlarmManager không kích hoạt sau khi cập nhật Google Play

+0

Ứng dụng của bạn có thể đã bị dừng lại để cập nhật nó, bao gồm mọi dịch vụ và báo thức. Bạn sẽ cần phải nói với họ để mở các ứng dụng sau khi cập nhật, mà sẽ cung cấp cho bạn một cơ hội để bắt đầu bất kỳ dịch vụ/báo động bạn cần. –

+0

Vâng bạn đang khá nhiều bị mắc kẹt ở đây. http://stackoverflow.com/questions/8531926/how-to-start-a-service-when-apk-is-installed-for-the-first-time/8535062#8535062 – roostertech

Trả lời

8

Kiểm tra hành động ý định ACTION_MY_PACKAGE_REPLACED (trên tổ ong và lên).

Bạn sẽ có thể đăng ký bộ thu phát sóng cho nó trong tệp kê khai để có thể lên lịch lại báo thức của bạn.

+0

Trong Studio 1.0 khi tôi sử dụng trợ giúp ngữ cảnh Tôi chỉ thấy android.intent.action.PACKAGE_REPLACED này. Tôi không thấy android.intent.action.ACTION_MY_PACKAGE_REPLACED. Có được sử dụng đầu tiên không? Tôi chỉ hỗ trợ sau API 16 – user2731584

+0

MinSdkVersion 16 của bạn có phải là minSdkVersion 16 và targetSdkVersion 21 của bạn không? – orip

+0

có, min SDK là 16 và tối đa là 21. – user2731584

3

Báo thức được lên lịch sẽ KHÔNG bị hủy khi nâng cấp. Tôi đã xác minh điều này cho các phiên bản Android 2.2 và 4.3 và Google Play mới nhất tại thời điểm viết.

Điều bạn phải đảm bảo là các phiên bản mới của bạn có thể xử lý tất cả các ý định đang chờ xử lý của bất kỳ phiên bản cũ nào. Điều đó có nghĩa:

  • định nghĩa cùng một mục tiêu trong manifest (broadcast receiver hoặc dịch vụ)
  • cùng ý định "hợp đồng": hành động, tính năng bổ sung, vv
+1

không thực sự báo thức sẽ bị hủy và bạn có để cài lại nó – AnasBakez

+2

Điều đó không chính xác. Báo động sẽ không bị hủy nữa. Muốn bằng chứng? Xem nguồn: 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

@ windiln bạn là chính xác, nhưng liên kết của bạn đang trỏ đến mã nguồn Robolectric. Đây là liên kết tới mã nguồn Android - http://grepcode.com/file/repository.grepcode.com/java/ext/com.google.android/android/5.0.2_r1/com/android/server/AlarmManagerService. java/# 1902 – Eliezer

Các vấn đề liên quan