Widget- und App-Absturz

  • Hallo Zusammen,


    ich habe eine Frage bzgl. meines privaten Projektes, bei der ich nicht wirklich weiterkomme. Ich bin neu hier, deshalb werde ich bei diesem Beitrag wahrscheinlich nicht gleich alle nötigen Informationen offen legen. Ehrlich gesagt, möchte ich mich für den Anfang recht kurz halten. Falls also weiterführende Informationen benötigt werden, bitte einfach fragen.


    Also, ich habe eine App geschrieben. Dort sind einige Buttons, und die machen etwas. Dann habe ich ein Widget entworfen, auf dem ich einige dieser Buttons platzieren kann. Da ich wenig Erfahrung mit Android programmieren habe, bin ich recht pragmatisch an die Sache rangegangen. Im Grunde habe ich nun eine MainActivity- und eine WidgetProvider-Datei, in denen einige öffentliche Variablen und Funktionen definiert und aus der jeweils anderen Datei aufgerufen werden (nicht sehr sauber, zugegeben).


    Wenn ich die Haupt-App starte, funktionieren die Buttons einwandfrei. Wenn ich auf das Häuschen-Symbol drücke, funktionieren auch die Buttons im Widget einwandfrei. Nach einiger Zeit, ohne dass die App benutz wird, kommt die Fehlermeldung "XXX wurde beendet". Ich denke, das ist ganz normal: Android killt den Prozess, da er ja nicht gebraucht wird, aber durch das Widget wird doch irgendwie irgendwo automatisch eine Funktion aufgerufen, die diese Fehlermeldung hervorruft. Danach funktioniert auf dem Widget kein einziger Button mehr. Nach einem starten der Haupt-App und wieder drücken auf das Häuschen ist alles wieder gut.


    Nun meine Frage: Was fehlt bei mir im Programm? Mache ich etwas falsch bei der Widget-Programmierung? Brauche ich einen Service oder Thread (evtl. einen Hintergrundprozess)? Oder ist es ein komplett anderer Grund?


    Ich bedanke mich bei Euren Antworten.


    Viele Grüße,
    Greg

  • Danke für deine schnelle Antwort ChampS. Ich habe es mit einem Service probiert, aber leider mit dem gleichen Ergebnis.


    Letztendlich habe ich mich aber letzte halbe Nacht drangesetzt - und das Problem gefunden! Ich möchte erklären, was es war.


    Als Ausgangspunkt habe ich eher durch Zufall den Befehl android.os.Debug.waitForDebugger() gefunden. Denn das war eines der Probleme: Solange die Haupt-App läuft, kann ich debuggen. Wenn ich die Haupt-App beende - eben damit das Problem auftritt - ist es mit dem Debuggen vorbei. Mit dem oben genannten Befehl geht es aber. Und da habe ich folgendes festgestellt: mein WindgetProvider nutzt eine statische Variable aus der MainActivity. Sobald die MainActivity beendet wird, ist diese Variable auch weg. Das Widget stürzt ab. Tja, Programmierfehler. Ich hoffe, ihr lacht mich nicht aus. :P


    Aber das war nur der offensichtlichste Fehler. Ich habe noch weitere Variablen gefunden, die Probleme verursachen, sobald die Haupt-App beendet wird. Die Lösung war dann folgende.
    1) Wo es wirklich nötig ist, werden die gleichen Operationen in der onUpdate-Funktion ausgeführt, wie in der MainActivity.
    2) Die Variablen, die explizit von dem gedrückten Button auf dem Widget abhängen, habe ich über intent.putExtra direckt in den Button reingeschrieben und lese sie dann über intent.getIntExtra bzw. intent.getStringExtra wieder aus.


    Ich hoffe, meine Ausführungen helfen jemandem weiter und freue mich auf Eure Anregungen. Ansonsten kann dieser Beitrag als geschlossen markiert werden.


    Viele Grüße,
    Greg

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!