updateAppWidget - verweigert den Dienst

N

Neeldarax

Fortgeschrittenes Mitglied
32
Hi,

ich schreibe ein Widget. Um das manuelle Aktualiseren/Veränder der Daten zu bewerkstelligen, nutze ich Buttons.

Die Events und so läuft alles richtig durch, aber beim updateAppWidget passiert nichts.

Im Debug und nach paar Installationen hat es schon mal geklappt.
Aber spätestens, wenn ich das Widget neu auf den Home-Screen hinzufüge, ist wieder tote Hose.

Das ist mein Ausschnitt aus dem Service, der das Widget updatet:
Code:
@Override
public void onStart(Intent intent, int startId) {
    int[] allWidgetIds = intent
            .getIntArrayExtra(AppWidgetManager.EXTRA_APPWIDGET_IDS);

    AppWidgetManager appWidgetManager = AppWidgetManager
            .getInstance(this.getApplicationContext());

    if (allWidgetIds != null) {
        //Das Layout, was auf geladen wird.
        RemoteViews remoteViews = new RemoteViews(this
                .getBaseContext().getPackageName(),
                R.layout.widget_view_sites);

        //...

        if (dataObject != null) {
            //Hier werden die Texte gesetzt. Kein NPE, kein leer String...
            String header = dataObject.getHeader();
            String body = dataObject.getBody();
            String footer = dataObject.getFooter();

            //IDs sind vorhanden, richtiges Layout geladen
            remoteViews.setTextViewText(R.id.textHeader, header);
            remoteViews.setTextViewText(R.id.textBody, body);
            remoteViews.setTextViewText(R.id.textFooter, footer);

        } else {
            //...
        }
        
        //auch mit jeder einzelnen WidgetID oder mit ComponentName versucht - gleiches verhalten
        appWidgetManager.updateAppWidget(allWidgetIds, remoteViews);
    }

    stopSelf(); //auch schon ma rausgenommen oder eine Zeile tiefer verschoben
    super.onStart(intent, startId);
}

//... ist nur auskommentierter Code, belanglos für das Geschehen.

Übliches Verhalten ist, dass er Einmal Läuft und die Daten aktualisert.
Danach, ob per Button oder Updateinterval, werden die Texte nicht in den TextViews aktualisiert.

Hat jemand damit Erfahrung oder kann mir Anhaltspunkte nennen, wo ich suchen/verändern kann.

regards
 
Bau vor und hinter jede if anweisung eine Log Ausgabe ein dann siehst schon wie weit er kommt und ob da überhaupt was aufgrufen wird.
 
Hi strider,

da ich das schon im Debugmodus verfolgt habe, war die Ausgabe weniger aufschlussreich.

Im Log kann ich verfolgen, wie die Daten wechseln und auch beim updateAppWidget(..) mit dem RemoteView ankommen.

Den wechsel der Texte kann ich aber auf meinem Widgets nicht verfolgen :(


Ein weiterer Punkt, der mir auf gefallen ist, ist, dass die PendingIntents für das onClick zwar durchlaufen, aber offensichtlich nicht immer sofort ausgeführt werden.
Eine reinstallation aus Eclipse behebt das Problem... nur, wenn ich das Widget entferne und wieder auf den Home-Screen hinzufüge.. alte Laie -.-

Mein Konzept muss ich wohl überarbeiten.

Ich suche weiter Tutorials für Widget mit multiple onClicks.
Beispiele aus developer.android...., Vogella, stackoverflow(einige) sind mir bereits geläufig.

regards
 
Note that the RemoteViews parameter will be cached by the AppWidgetService, and hence should contain a complete representation of the widget.
QUELLE

knocked out by API :blink:

Also der Bestfall (APP installieren, Widget hinzufügen, Buttons drücken) funktioniert.

Der DAU-Fall scheitert. zB APP installieren, Widget hinzufügen, merken falscher Screen, Widget entfernen, noch ma Widget hinzufügen...
PendingIntens, die für die Click-Events verantwortlich sind, reagieren nicht, da der RemoteView gecached ist und die ID des neuen Widget nicht kennt. (Wenn ich es so richtig verstanden habe)

Das Thema eilt für mich nicht, daher stampfe ich es ein. Wollt euch nur über das Resultat informieren :)

regards
 

Ähnliche Themen

J
Antworten
5
Aufrufe
926
swa00
swa00
Jansenwilson
Antworten
1
Aufrufe
748
swa00
swa00
OnkelLon
Antworten
7
Aufrufe
1.201
thomaspan
thomaspan
Zurück
Oben Unten