2010-12-27 30 views
6

Tôi đang làm việc trên một dự án Đồng hồ báo thức và tôi muốn chỉnh sửa Báo thức đã đặt của mình. khi tôi chỉnh sửa báo thức thì thời gian báo thức được cập nhật nhưng các giá trị mà tôi gửi bằng cách sử dụng putExtra() sẽ không thay đổi. Tôi đang sử dụng cờ PendingIntent.FLAG_ONE_SHOT.cập nhật báo thức từ mục đích đang chờ xử lý trong android

Nhưng khi tôi đặt cờ PendingIntent.FLAG_UPDATE_CURRENT tất cả các giá trị putExtra() cũng thay đổi nhưng bây giờ vấn đề là, khi tôi nhấp vào nút dừng và finish() hoạt động hiện tại, nó gọi lại.

có nghĩa là khi tôi kết thúc hoạt động, nó gọi lại khi nhấp vào nút trong khi tôi hoàn tất hoạt động hiện tại. hãy giúp tôi. Cảm ơn trước.

Trả lời

6

cách ưa thích của tôi để cập nhật một PendingIntent trong AlarmManager là để Hủy bỏ nó và tái thiết lập nó
đừng quên để hủy bỏ:

1) AlarmManager.cancel(pendingIntent) với một pendingIntent phù hợp với cấp phát ý định (cùng lớp học của bạn, tương tự hành động ... nhưng không quan tâm đến phụ thấy IntentFilter)
2) pendingIntent.cancel();
3) pendingIntent = new PendingIntent() ... và làm các thiết lập khác
4) AlarmManager.set(... để cung cấp mới PendingIntent

+0

Trong trường hợp của các sự kiện lịch thiết lập báo thức, Nếu chúng tôi sử dụng một biến địa phương và không phải là tĩnh, chúng ta có thể gán thời gian khác nhau cho các sự kiện khác nhau. Nhưng có vẻ như bạn đã hiển thị ví dụ tĩnh pendingIntent –

+0

Có thực sự đây là cách duy nhất để cập nhật báo thức? ĐÃ LÀM CHO TÔI. –

0

Mỗi báo thức có mã định danh duy nhất, nếu bạn muốn cập nhật báo thức, bạn có thể tạo một báo thức mới có cùng UNIQUE_ID.

PendingIntent pi = PendingIntent.getBroadcast(this, PENDING_INTENT_ID, intent, 0); 

Check this answer

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