Android Honeycomb通知弹出窗口过于频繁

时间:2012-03-01 16:36:46

标签: android android-3.0-honeycomb android-notifications

我正在为Honeycomb开发,并且我试图解决这个问题。 我有一个没有意图的通知服务(不需要一个),问题是每次调用 displaymessage 后每次都会发出通知,所以我得到100个通知。我希望它只弹出一次,然后只改变百分比的文本。类似于从市场进度条和百分比下载。我已经隔离了该函数并创建了新的测试代码,但没有成功。如果从其他角度看这个,我希望在不创建新通知的情况下更改现有通知上的文本。 你能帮我吗?

以下是整个代码(隔离后):

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 个答案:

答案 0 :(得分:1)

因为NotificationManager使用整数ID唯一标识每个通知,您可以通过使用新值调用setLatestEventInfo()来修改通知,更改通知的某些字段值,然后再次调用notify()。

您可以使用对象成员字段修改每个属性(上下文和通知标题和文本除外)。通过使用contentTitle和contentText的新值调用setLatestEventInfo()来更新通知时,应始终修改文本消息。然后调用notify()来更新通知。 (当然,如果您已创建自定义通知布局,则更新这些标题和文本值无效。)

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