2012-03-01 47 views
1

我正在爲Honeycomb開發,並且我試圖解決這個問題。 我有一個沒有意圖的通知服務(不需要一個),問題是在每次顯示消息的每次調用後,每次都會發送通知提示,所以我得到100個通知。我希望它只彈出一次,之後只改變百分比文本。類似於從市場進度欄和百分比下載。我已經隔離了該功能並創建了新的測試代碼,但沒有成功。如果您從其他角度來看這個問題,我希望在不創建新通知的情況下更改現有通知上的文本。 你能幫我嗎?Android Honeycomb通知彈出窗口太頻繁

這裏是整個代碼(分離之後):

package com.disp; 


import android.app.Activity; 
import android.app.Notification; 
import android.app.NotificationManager; 
import android.content.Context; 
import android.os.Bundle; 
import android.os.SystemClock; 

public class DispalyActivity extends Activity { 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     for (int i = 0; i < 100; i++) { 
      SystemClock.sleep(300); 
      displaymessage(""+i+"%"); 

     } 
    } 

    public void displaymessage(String string) { 
     String ns = Context.NOTIFICATION_SERVICE; 
     NotificationManager mNotificationManager = (NotificationManager) getSystemService(ns); 
     Notification notification = new Notification(R.drawable.ic_launcher, "Notification Service", System.currentTimeMillis()); 
     Context context = getApplicationContext(); 
     notification.setLatestEventInfo(context, "Downloading Content:", string, null); 
     final int HELLO_ID = 2; 
     mNotificationManager.notify(HELLO_ID, notification); 

    } 
} 

回答

1

由於每個通知唯一地由NotificationManager標識與一個整數ID,可以通過調用setLatestEventInfo()用新值修改的通知時,更改通知的某些字段值,然後再次調用notify()。

您可以使用對象成員字段(上下文和通知標題和文本除外)修改每個屬性。您應該在更新通知時通過調用setLatestEventInfo()和contentTitle和contentText的新值來修改文本消息。然後調用notify()來更新通知。 (當然,如果你已經創建了一個自定義通知佈局,然後更新這些標題和文本值沒有任何影響。)

http://developer.android.com/guide/topics/ui/notifiers/notifications.html