Android Honeycomb уведомления всплывают слишком часто - PullRequest
1 голос
/ 01 марта 2012

Я занимаюсь разработкой для 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 Ответ

1 голос
/ 01 марта 2012

Поскольку каждое уведомление уникальным образом идентифицируется с помощью NotificationManager с целочисленным идентификатором, вы можете изменить уведомление, вызвав setLatestEventInfo () с новыми значениями, изменить некоторые значения полей уведомления и затем снова вызвать notify ().

Вы можете изменить каждое свойство с помощью полей элемента объекта (за исключением контекста, заголовка и текста уведомления). Вы всегда должны пересматривать текстовое сообщение при обновлении уведомления, вызывая setLatestEventInfo () с новыми значениями для contentTitle и contentText. Затем вызовите notify (), чтобы обновить уведомление. (Конечно, если вы создали собственный макет уведомления, то обновление этих заголовков и текстовых значений не имеет никакого эффекта.)

от

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

...