Activity aus Service heraus starten

  • Antworten:3
shirocko
  • Forum-Beiträge: 5

01.08.2011, 15:25:04 via Website

Hey Leute,

ich habe ein Problem, für welches ich selbst aktuell keine Lösung finde.
Hintergrund ist der folgenden:

Es gibt einen Service im Hintergrund, welcher Daten von einem Server im XML Format abruft, aus den Daten werden PendingIntents erstellt, welche im dem Alarm Manager übergeben werden um sie zu einer bestimmten Uhrzeit zu starten.
Auf diese PendingIntents horcht eine BroadcastReceiver namens "AlarmReceiver".
Dieser erstellt einen neuen Intent und packt in die Extras eine URL rein.
Dieser Intent richtet sich an eine eigene Activity von mir in der einfach nur eine WebView instanziiert wird und darin eine Seite aufgerufen werden soll.
Genau die, welche per URL in den Extras übergeben wird.
Das funktioniert auch soweit ganz gut. Wenn ich jetzt aber 2 Intent im Abstand von 2 Minuten los sende mit jeweils unterschiedlichen URLs lädt er trotzdem immer nur die erste Seite und nicht die zweite. Auch wenn ich die Activity nach dem beenden wieder in den Vordergrund hole.
Es ist so als würd er den Intent zwar empfangen aber nur Inhalte aus dem Cache anzeigen.
Was kurios ist ist dass es ohne Probleme funktioniert wenn ich den ganzen Prozess direkt aus einer anderen Activity anstoße und nicht allein durch einen nach dem Boot gestarteten Service.
Hat jemand eine Idee wie ich es hinbekomme, dass er die neue URL lädt und den alten Inhalt verwirft?
Gibt es vllt irgend ne Möglichkeit eine Activity zu killen um sie dann neu aufzurufen oder so?
Ich hoffe ihr habt ein paar ideen für mich.

gruß shirocko

Antworten
Markus Gu
  • Forum-Beiträge: 2.644

01.08.2011, 15:51:39 via Website

du kannst der webview sagen, dass sie nichts cached

webview.getSettings().setCacheMode(xx),

swordiApps Blog - Website

Antworten
shirocko
  • Forum-Beiträge: 5

01.08.2011, 16:00:36 via Website

Markus Gursch
du kannst der webview sagen, dass sie nichts cached

webview.getSettings().setCacheMode(xx),

Das habe ich schon probiert, ich habe folgendes gesetzt:

myWebView.getSettings().setCacheMode(WebSettings.LOAD_NO_CACHE);

aber komsicherweise zeigt er dann gar keinen inhalt mehr an sondern nur noch eine weiße seite.
und was mich mehr wundert ist, dass wenn ich den service aus einer activity raus start und nicht nach dem boot dass er dann funktioniert wie er soll.

edit: habs grad ma damit probiert für ne normale website, da lädt er zwar die seiten richtig aber er behält trotzdem die alten drin.

— geändert am 01.08.2011, 16:05:20

Antworten
shirocko
  • Forum-Beiträge: 5

02.08.2011, 10:05:50 via Website

hey leute

also der aktuelle stand ist so, dass ich herausgefunden habe, dass die browser anwendung die "onResume()" Methode NICHT ein zweites mal aufruft, wenn ich die intents jeweils über den hintergrundservice nach dem bootvorgang starte.
wenn ich aber wie bereits erklärt den service aus der activity heraus starte, dann ruft er im browser bei jedem neuen intent die onResume() Methode auf.
Und in dieser hab ich die Verarbeitung der Intents stehen, von daher wird die URL nicht geändert.
Habt ihr eine Idee wie ich es hinbekomme, dass die Anwendung jedes mal reagiert wenn ein neuer Intent rein kommt? Bzw dass er immer dann die onResume Methode aufruft?

Ich hoffe ihr könnt mir hier noch helfen.

gruß shirocko

Antworten