Wie die update-Benachrichtigung mit RemoteViews?

Ich erstelle eine Benachrichtigung mit RemoteViews aus einer benutzerdefinierten Service, die ausgeführt wird mit der Meldung im Vordergrund-Modus (wird, wird der Dienst bleibt aktiv, solange diese Meldung sichtbar ist, Benutzer). Benachrichtigung eingestellt ist als die Laufende, so dass Benutzer kann nicht wischen Sie es ab.

Möchte ich ändern, zum Beispiel bitmap angezeigt, in ImageView enthaltenen remote-Ansicht das layout oder ändern von text-Wert in einen TextView. Layout in der remote-Ansicht mit XML-layout-Datei.

Mein problem ist, dass, sobald die Benachrichtigung wird erstellt und sichtbar für Benutzer, wenn ich anrufen RemoteViews's Funktionen wie setImageViewResource() zu ändern Bitmap zeigt sich in einer ImageView, die änderung ist nicht sichtbar, es sei denn, ich tun rufen Sie setImageViewResource() rufe ich hinterher:

NotificationManager.notify( id, notification );

oder

Service.startForeground(id,notification);

Dies klingt nicht richtig für mich, obwohl. Ich kann nicht glauben, dass Sie zu aktualisieren RemoteViews UI in eine Benachrichtigung, die Sie bereits erstellt, ich habe zu re-initialisieren Benachrichtigung. Wenn ich Button Kontrolle in einer Mitteilung, es aktualisiert sich selbst auf berühren und loslassen. Also es muss ein Weg gefunden werden, dies richtig tun, aber ich weiß nicht, wie.

Hier ist mein code, die erstellt Benachrichtigung in meinem Service Beispiel:

this.notiRemoteViews = new MyRemoteViews(this,this.getApplicationContext().getPackageName(),R.layout.activity_noti1);

Notification.Builder notibuilder = new Notification.Builder(this.getApplicationContext());
notibuilder.setContentTitle("Test");
notibuilder.setContentText("test");
notibuilder.setSmallIcon(R.drawable.icon2);
notibuilder.setOngoing(true);

this.manager = (NotificationManager)this.getSystemService(Context.NOTIFICATION_SERVICE);
this.noti = notibuilder.build();
this.noti.contentView = this.notiRemoteViews;
this.noti.bigContentView = this.notiRemoteViews;
this.startForeground(NOTIFICATION_ID, this.noti);

Und Funktion, die 'Kräfte' UI-änderungen-Benachrichtigung:

public void updateNotiUI(){
    this.startForeground(NOTIFICATION_ID, this.noti);
}

Innerhalb MyRemoteViews Klasse, wenn erforderlich, ich mache das, um änderungen an UI:

this.setImageViewResource(R.id.iconOFF, R.drawable.icon_off2);
this.ptMyService.updateNotiUI();

Kann mir jemand sagen, was ist die richtige Art der Aktualisierung UI-Komponenten einer RemoteViews in der Meldung?

jeder Erfolg?...

InformationsquelleAutor Sinisa | 2014-04-01

Schreibe einen Kommentar