2013-05-05 2 views
2
long when = Calendar.getInstance().getTimeInMillis(); 
    when += 10000; 

    NotificationCompat.Builder notificationBuilder = new NotificationCompat.Builder(
      getApplicationContext()) 
      .setWhen(when) 
      .setContentText(notificationContent) 
      .setContentTitle(notificationTitle) 
      .setSmallIcon(smalIcon) 
      .setAutoCancel(true) 
      .setTicker(notificationTitle) 
      .setLargeIcon(largeIcon) 
      .setDefaults(Notification.DEFAULT_LIGHTS| Notification.DEFAULT_VIBRATE| Notification.DEFAULT_SOUND) 
      .setContentIntent(pendingIntent); 

Это работает в onCreate, однако мое уведомление создается сразу же после запуска приложения, а не через 10 секунд. Что не так?локальное уведомление в андроиде начинается сразу, а в определенное время

Даже

.setWhen(System.currentTimeMillis()+10000) 

не делает его показать через 10 секунд. он показывает напрямую.

ответ

5

Из документации setWhen(...) ...

Добавить метку времени, имеющую отношение к уведомлению (обычно время, когда произошло событие). Он будет отображаться в представлении содержимого уведомления по умолчанию; используйте setShowWhen для управления этим.

Метод setWhen(...) не устанавливает время (задержка) при появлении Notification. Он используется, чтобы показать время, когда произошло какое-то событие.

Например, предположим, что ваше приложение отслеживает получение SMS-сообщений - при поступлении сообщения вы создадите Notification, в котором говорится: «У вас есть новое SMS-сообщение», и вы должны использовать setWhen(...), чтобы показать время получения сообщения.

Если вы хотите установить конкретную задержку или фиксированное время для события и связанного с ним Notification, используйте AlarmManager.

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