2012-03-29 49 views
6

Service.startForeground() vs NotificationManager.notify(), cung cấp các hành vi khác nhau.Android Service.startForeground KHÔNG tôn trọng id thông báo duy nhất

Khi sử dụng thông báo với hai id thông báo khác nhau, 2 thông báo được tạo - Tốt.

Khi thực hiện tương tự với startForground, một thông báo sẽ ghi đè khác - Xấu.

Thiết bị được thử nghiệm: Nexus S (2.3.6) và Asus Transformer (4.0.3).

Bất kỳ ý tưởng nào về cách tôi có thể chạy dịch vụ Quan trọng (tiền cảnh) có thể có một số thông báo (số động)?

+0

Xảy ra trên máy biến áp Asus (Android 4.0.3). –

+0

Đã mở một vấn đề: http://code.google.com/p/android/issues/detail?id=28011 –

Trả lời

0

Vâng, đó không phải là giải pháp tốt nhất, nhưng bạn luôn có thể "chỉ định lại" thông báo cho ID thông báo bị loại bỏ. Ví dụ, giả sử bạn bắt đầu Process 1 (foreground) và sau đó là Process 2 (sử dụng NotificationManager). Khi quá trình 1 kết thúc, hãy loại bỏ thông báo cho Quy trình 2 và cập nhật thông báo trước cho Quy trình 1 để thực sự hiển thị tiến trình cho Quy trình 2.

Bằng cách đó bạn không phải gọi stopForeground()startForeground(). dịch vụ bị giết ở giữa (chưa thực sự kiểm tra đó là sự thật, mặc dù).

+0

Vaskevich, điều gì sẽ xảy ra nếu chỉ có một quy trình đơn lẻ có liên quan đến ngữ cảnh này? Và bạn có thể chỉ cần xây dựng trên phân công lại thông báo để bác bỏ ...? – nmxprime

+0

Hiểu của tôi là không quan trọng, vì khi bạn gọi 'stopForeground()', Android giờ đây có thể giết dịch vụ của bạn. Tôi cảm thấy như tôi đã xây dựng đủ; xin vui lòng chỉ đọc lại câu thứ hai một vài lần! –

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