2012-03-01 18 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