2013-02-27 1 views
0

Итак, я создал сервис, и он отлично работает. Все, что он делает, просто подсчитывается. У меня есть пользовательский класс, который обрабатывает проблемы с использованием уведомлений. Этот класс имеет getNotification, который, очевидно, возвращает уведомление, которое он использует. Все отлично поработало, но я должен заставить свою службу работать на переднем плане (она синхронизирует некоторые важные данные с приложением, которые не должны прерываться до тех пор, пока не закончится). Сейчас, когда я добавляю startForeground, я добавляю свое уведомление и идентификатор, который оставляет это так. startForeground (1337, уведомление);При добавлении функции startForeground() к службе создаются два уведомления вместо одного

Проблема У меня есть то, что первое уведомление(), которое я делаю, по какой-то причине не зависит от других уведомлений. Поэтому, когда я запускаю этот запуск, он создает два уведомления. Первый застрял в первом обновлении, которое имеет название под названием «Zilean», и в нем говорится «Подсчет». Другой обновляется отлично. Я заметил, что если startForeground запускается с идентификатором 0 (startForeground (0, уведомление)), то эта проблема исправляется, но если я убью активность, уведомление будет умирать. Не происходит, когда id <> 0.

У меня была эта проблема слишком долго, поэтому я использую фиктивный сервис, который учитывается только. Я хочу знать, что если активность умирает из-за пользователя или просто потому, что андроид решил удалить свои воспоминания, тогда служба будет продолжать работать.

// 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; 
} 

Итак, что мне не хватает?

ответ

4

решаемые, моя ошибка в том, что идентификатор уведомления не был таким же, как startForeground ид я проходил (1337)

Edit: Важно отметить, что идентификатор уведомления и идентификатор службы не должен быть 0, в противном случае он будет смешиваться с основным видом деятельности

Смежные вопросы