2017-05-26 65 views
6

Mam aplikację, która aktualizuje powiadomienie za pośrednictwem usługi.Jak kontrolować częstotliwość aktualizacji powiadomienia na zablokowanym ekranie

To powiadomienie jest aktualizowane co sekundę. Pokazuje zegar.

Obecnie w trybie nougat, z zablokowanym urządzeniem, aktualizacja powiadomienia uruchamia ekran, aby się obudzić, aby wyświetlić zaktualizowane powiadomienie.

Chciałbym to kontrolować, ponieważ moje powiadomienie jest bardzo częste.

Chciałbym również uniknąć zmiany częstotliwości aktualizacji powiadomienia. Wykonanie tego pokazuje mniej dokładne informacje dla użytkownika.

To, czego szukam to programowy sposób kontrolowania częstotliwości budzenia po aktualizacji powiadomień.

dziękuję :)

+0

Nie jestem pewien, czy możesz kontrolować "częstotliwość aktywacji ekranu", ale dlaczego po prostu nie sprawdzasz, czy ekran jest włączony przed aktualizacją powiadomienia? Aktualizacja powiadomienia nie ma żadnego znaczenia, gdy ekran jest wyłączony. Sprawdź [tutaj] (https://stackoverflow.com/questions/2474367/how-can-i-tell-if-the-screen-is-on-in-android), aby sprawdzić, czy ekran jest włączony lub wyłączony. – Swordsman

+0

@Swordsman brzmi jak dobry pomysł, spróbuję i dam ci znać. – unludo

Odpowiedz

3

To poniżej zgłoszenie może być używany do często aktualizować użytkownika, a także ekran nie obudzi się, gdy zamknięty. możesz wypróbować

if(notificationBuilder == null) { 
      notificationBuilder = 
        new NotificationCompat.Builder(MainActivity.this) 
          .setSmallIcon(R.mipmap.ic_launcher) 
          .extend(wearableExtender) 
          .setAutoCancel(true) 
          .setContentTitle("Random Notification") 
          .setContentText("Appears!") 
          .setOnlyAlertOnce(true) 
          .setOngoing(true) 
          .setVisibility(Notification.VISIBILITY_PUBLIC) 
          .setContentIntent(contentIntent); 
     }else{ 
      notificationBuilder.setContentText("change this to current updated text"); 
     } 
      NotificationManagerCompat notificationManager = NotificationManagerCompat.from(MainActivity.this); 

      notificationManager.notify(888, notificationBuilder.build()); 
+0

Dzięki. Próbowałem, ale to nie działa. Powiadomienie pochodzi z usługi pierwszego planu. Więc zaczynam od startForeground. Nie wiem, czy to robi różnicę. Czy przetestowałeś swoje rozwiązanie? – unludo

+0

Ya byłem wysyłanie powiadomień co sekundę z tego samego identyfikatora powiadomienia i przy użyciu tego samego konstruktora powiadomień. Zablokowany telefon się nie obudził. –