将startForeground()添加到服务时,会创建两个通知而不是一个通知

时间:2013-02-27 11:56:56

标签: android service notifications

所以我创建了一项服务并且效果很好。它所做的一切只是数数。我有一个自定义类来处理使用通知的麻烦。这个类有一个getNotification,显然会返回它使用的通知。一切都很好,但我必须让我的服务在前台运行(它将一些重要的数据同步到应用程序,直到它完成时不得中断)现在当我添加startForeground时,我添加了我的通知和一个id像这样离开它。 startForeground(1337,通知);

我遇到的问题是,我所做的第一个notify()由于某种原因独立于其他通知。因此,当我进行此运行时,它会创建两个通知。第一个更新是第一个更新,其标题为“Zilean”,其内容为“Counting”。另一个更新完美。我注意到如果使用id为0(startForeground(0,notification))运行startForeground,则此问题会得到修复,但如果我终止该活动,则通知会终止。当id<>时不会发生0.

我有这个问题太久了所以我正在使用虚拟服务,这只是重要的。我想知道如果活动因用户而死,或者因为android决定删除它的记忆,那么该服务将继续运行。

// onStartCommand
@Override
public int onStartCommand(Intent intent, int flags, int startId) {

    // NOTIFICATION SECTION
    NotificationManager mNotifyManager = (NotificationManager) getSystemService(Context.NOTIFICATION_SERVICE);

    NotificationCompat.Builder mBuilder = new NotificationCompat.Builder(
            this);

    notificationManagerClass = new SBNNotification(mNotifyManager,
            mBuilder, true, 1, false, "Zilean",
            "Initiating Counter", false);
    notificationManagerClass.notificate();



        final Notification notification = notificationManagerClass.getNotification();
    notification.flags = flags;
    notification.defaults = Notification.DEFAULT_LIGHTS;

    startForeground(1337, notification);


    new Timer().scheduleAtFixedRate(new TimerTask () {
        int i=0;
        @Override
        public void run() {

            notificationManagerClass.setContentTitle("Contando");
            notificationManagerClass.setContentText(String.valueOf(i));
            notificationManagerClass.notificate();
            i++;
            Log.e("HOLAAA", String.valueOf(i));
        }}, 0, 1000);

    return START_REDELIVER_INTENT;
}

那么......我缺少什么?

1 个答案:

答案 0 :(得分:4)

解决了,我的错误是通知ID与我传递的startForeground id相同(1337)

编辑:重要的是要注意通知ID和服务ID不能为0,否则它将与主活动线程混合