1. Nimm jetzt an unserem Uhans - 3. ADVENT - Gewinnspiel teil - Alle Informationen findest Du hier!

background service

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von swordi, 01.10.2009.

  1. swordi, 01.10.2009 #1
    swordi

    swordi Threadstarter Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    hallo

    ich möchte einen service implementieren, der einmal täglich etwas in die datenbank speichert.

    solange meine app läuft, funktioniert alles wunderbar, jedoch wenn die app weg ist, dann kann ich die datenbank nicht mehr benutzen.

    übergebe sogar das db objekt dem service, aber es funktioniert einfach nichts mehr.
    fehlermeldungen gibt es keine. der service gibt wohl gar nichts her.

    irgendwelche ideen, wie ich das lösen kann?
     
  2. Shinigami, 01.10.2009 #2
    Shinigami

    Shinigami Fortgeschrittenes Mitglied

    Beiträge:
    436
    Erhaltene Danke:
    69
    Registriert seit:
    08.04.2009
    Hi.

    Auch auf die Gefahr hin, dass es Dir eh nix hilft: Schon mit nem ContentProvider getestet? Glaube anders kommst Du an Applikationsdaten nicht ran, wenn die App selbst nicht läuft.

    Gruß,
    Shini
     
  3. swordi, 01.10.2009 #3
    swordi

    swordi Threadstarter Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    danke für die hilfe

    zum einen muss ich daten abfragen, zum anderen muss ich daten in die db schreiben.

    das geht also nicht?
     
  4. Shinigami, 01.10.2009 #4
    Shinigami

    Shinigami Fortgeschrittenes Mitglied

    Beiträge:
    436
    Erhaltene Danke:
    69
    Registriert seit:
    08.04.2009
    Das mit dem ContentProvider war einfach mal (vllt unüberlegt) in den Raum geworfen - ist halt die flexibelste Methode auf Daten zugreifen zu können.

    Ich kann adhoc nicht sagen ob's nicht auch anders funktioniert. Interessiere würde es mich aber auch. Hab leider wenig Zeit ein wenig rumzuspielen :(

    Gruß,
    Shini
     
  5. j2eejava, 07.10.2009 #5
    j2eejava

    j2eejava Neuer Benutzer

    Beiträge:
    13
    Erhaltene Danke:
    0
    Registriert seit:
    25.08.2009
    Vielleicht ist das Problem bei Dir ja schon gelöst worden, aber grundsätzlich, wenn Du einen Service schreibst, der unter der gleichen PID wie Deine App läuft steht dieser Dir nicht mehr zur Verfügung, wenn die Applikation stirbt. Ein Weg wäre, einen Remote Service zu schreiben, der eine eigene PID aufweist, und mit Deiner Applikation auf diesen zugreifen.

    Ein Problem in diesem Zusammenhang sollte erwähnt werden: Wenn der Remote Service einmal z.B. durch Deine App gestartet wurde, bleibt dieser am Leben, bis er expliziert von Dir beendet wird und, auch dieser Fall kann eintreten, durch das OS, wenn Resourcen knapp werden. Also sollte Deine Application, bevor sie über diesen Service auf die DB zugreifen will, feststellen, ob der Service noch am Leben ist.

    Vielleicht war das auch am Thema vorbei und dann einfach ignorieren ;)
     
  6. swordi, 07.10.2009 #6
    swordi

    swordi Threadstarter Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    danke für deine info

    ich hab das jetzt ohne einen service gelöst. is sicher auch noch resourcenschonender, aber elleganter wärs so gewesen,
     
  7. TheFlatz|Veit, 07.10.2009 #7
    TheFlatz|Veit

    TheFlatz|Veit Android-Hilfe.de Mitglied

    Beiträge:
    54
    Erhaltene Danke:
    3
    Registriert seit:
    29.09.2009
    Ne ganz dumme Frage: Eignet sich dafür nicht die AlarmManager-Klasse?
     
  8. swordi, 07.10.2009 #8
    swordi

    swordi Threadstarter Gewerbliches Mitglied

    Beiträge:
    3,389
    Erhaltene Danke:
    441
    Registriert seit:
    09.05.2009
    cool diese klasse kannte ich noch nicht, kann ich vielleicht mal brauchen ;)

    aber ich denke, das würde die benutzer nerven, wenn sich meine app dauernd öffnet.

    aber trotzdem danke für den hinweis
     
  9. j2eejava, 07.10.2009 #9
    j2eejava

    j2eejava Neuer Benutzer

    Beiträge:
    13
    Erhaltene Danke:
    0
    Registriert seit:
    25.08.2009
    Nur ein Kommentar zum AlarmManager:

    Der kann natürlich startService() aufrufen, ohne dass der werte Anwender davon etwas mitbekommt. Allerding müssen der entsprechende BrodcastReceiver und der Service unterschiedlichen WAKE_UP policies folgen, sonst geht das in die Hose.

    Zum anderen denke ich, dass dieser Manager hauptsächlich dafür zur Verfügung gestellt wurde um Code zu bestimmten, festgelegten Zeiten zu starten.

    Ist der Zeitpunkt einer Aktion die ich starten will willkürlich, z.B. nach einem Ereignis, dessen Zeitpunkt ich nicht kenne, ist der Einsatz des AlarmManagers für die gestellte Aufgabe meiner bescheidenen Meinung nach nur zweite Wahl.

    Ein praktisches Einsatzgebiet für den AlarmManager wäre zum Beispiel eine ANDROID App 'Pillenalarm' für die Mädels:)

    Aber das ist nur ein Joke, oder nicht?
     
  10. TheFlatz|Veit, 07.10.2009 #10
    TheFlatz|Veit

    TheFlatz|Veit Android-Hilfe.de Mitglied

    Beiträge:
    54
    Erhaltene Danke:
    3
    Registriert seit:
    29.09.2009
    Das dachte ich nämlich auch. Benutz ihn Momentan auch für eine Backup-App und lass den Alarm den Service aufrufen. Hätte ja sein können dass ich da grundsätzlich was mache das so nicht sein sollte :D.
    Pillenalarm klingt doch gut...verlangt dann allerdings doch Interaktion ;).
     
  11. lindijones, 22.04.2010 #11
    lindijones

    lindijones Neuer Benutzer

    Beiträge:
    6
    Erhaltene Danke:
    0
    Registriert seit:
    22.04.2010
    Hallo!

    Ich habe in meiner Applikation auch einen Remote Service am Laufen und was ich feststellte ist, dass sobald das Licht ausgeht die App in einen PowerSafe Zustand fällt.
    Der Prozessor wird schlafen gelegt etc.
    Man kann dies mit Hilfe des PowerManagers unterbinden, sodass bei mir nun alles auch mit dunklem Bildschirm weiterfunktioniert.
    Vielleicht hilft dir das weiter.

    Gruß
     
  12. dereulenspiegel, 23.04.2010 #12
    dereulenspiegel

    dereulenspiegel Android-Hilfe.de Mitglied

    Beiträge:
    105
    Erhaltene Danke:
    4
    Registriert seit:
    16.08.2009
    Du holst dir wahrscheinlich einen WakeLock. Das ist gerade bei RemoteServices eine unschöne Sache, da so der Akku des Users schnell leergesaugt wird. Würde ich um ehrlich zu sein lassen. Wenn du etwas periodisch tun musst, dann höre doch auf das TIME_TICK event, dass einmal die Minute kommt und eh das ganze System für kurze Zeit aufweckt.
     

Diese Seite empfehlen