App im Hintergrund laufen lassen

C

chrisi01

Ambitioniertes Mitglied
0
hi

Hab mal eine Frage ist folgendes Möglich:

Ich möchte eine App schreiben (Hab c++/php/mysql Erfahrung und bin dran Java zu lernen) die dauernd läuft und z.b. 1x pro Minute eine Webseite aufruft. Sie soll komplett im Hintergrund laufen.

Das ganze hat folgenden Hintergrund:
Ich möchte auf meinen Webspace eine kleine PHP Seite erstellen wo ich Infos speichern kann (z.b. ein Kommando:
- Handy pips mal wenn ich mal wieder das Handy net finde ruf ich die Seite auf setzt nen Haken Handy pips mal und das Handy pipst vor sich hin wenn es nicht in Wlan Reichweite ist sondern im Auto z.b. liegt Pipst es eben dort damit wenn ich im Auto nachgucke es gleich höre)
- Oder Handy geb mir deine GPS Daten --> Handy sendet die GPS Koordinaten per GET Kommando an den Webserver
- Oder einfach ne SMS vom PC senden.)

Da ich ungern am Handy einen Webserver installiere der auch per GSM erreichbar ist möchte ich dies eben andersrum machen. Das Handy ruft regelmäßig meine Passwortgeschütze Seite auf und guckt dort nach ob ich was von ihm will und wenn ja führt es das aus und ruft das API eben auf zur Bestätigung oder Infos senden wie GPS Daten (am einfachsten wird das wohl per get Kommando ;)).

Aber bevor ich nun richtig Anfang Java zu lernen möchte ich erst mal wissen ob es geht so ein Programm dauerhaft im Hintergrund laufen zu lassen. Weiss nicht wie sich das bei Android verhält da dass OS ja eigentlich für sowas nicht geschrieben ist (Handy ist btw. nicht gerootet falls das wichtig wäre dafür). Zum rest braucht ihr euch erstmal keine Gedanken machen das werd ich schon hinbekommen mir geht es nur darum ob man ein App im Hintergrund laufen lassen kann. Es sollte natürlich auch automatisch gestartet werden wenn ich das Handy anschalte

Vielen dank

mfg

Chris
 
Ja sowas kannst du machen. ;-)
 
programme dürfen im hintergrund laufen, ist ja kein apfel-gerät ;-).
wenn dein handy dann wirklich jede minute die seite aufruft wird der akku aber ziemlich schnell leer sein und dann wirst du das handy eh nicht mehr finden da es nicht piept. außerdem müsstest du im "schlimmsten" fall 59 sek warten bis es piept.
für sowas gibt es glaub ich extra push-dienste die die nachricht sofort auf dein handy schicken.
 
hadez schrieb:
programme dürfen im hintergrund laufen, ist ja kein apfel-gerät ;-).
wenn dein handy dann wirklich jede minute die seite aufruft wird der akku aber ziemlich schnell leer sein und dann wirst du das handy eh nicht mehr finden da es nicht piept. außerdem müsstest du im "schlimmsten" fall 59 sek warten bis es piept.
für sowas gibt es glaub ich extra push-dienste die die nachricht sofort auf dein handy schicken.

Oder man implementiert ein eigenes TCP-Protokoll, bei dem man eine Verbindung offenhält, auf Android-Seite einfach einen Socket aufmacht und wartet und auf Server-Seite bei Bedarf ein Byte als 'Befehl' schickt. Das wäre so ähnlich wie z.B. IMAP IDLE, geht aber natürlich nur, wenn man auf Serverseite beliebige Ports öffnen kann und nicht auf ein reines LAMP-System beschränkt ist.
 
Den Stromverbrauch bei einer Minute idle kann man verschmerzen - man kann das über den Energieverbrauch auswerten. Da sind Display und GSM-Standby immer weit vorne.

Wichtig ist nur, dass du die Zeit nicht mit einer "Schleife totschlägst", sondern mit einem WaitFor.

Wie schon geschrieben. HTTP ist für so ein Vorhaben sicher nicht das optimale Protokoll, da die Verbindung per Defintion ja nicht offen bleibt. Es gibt zwar schon Technologien für HTTP Server Push - aber ein Standard kommt erst mit HTML5. Die Davlik-VM umfasst zwar auch den Apache-http-Client, diese kann das meines Wissens nach noch nicht.

Im Gegensatz zu HTTP kann man bei einer normalen TCP/IP-Verbindung davon ausgehen (bzw. auch angeben), dass diese eine Minute offen bleibt.
Hier kann man von weniger Arbeit (keine neue Verbindung aufbauen..) jede Minute ausgehen.

Auch der Google-Pushdienst ist mit einer haltetenden TCP-Verbindung gelöst. Rückantworten ohne offene Verbindungen sind auch nicht leicht lösbar, da man bei vielen Provider keine eigene IP-Adresse hat - sondern über einen Proxy geschaltet ist.

Der Vollständigkeit: Eine Garantie, dass das Programm im Hintergrund offen bleibt, gibt es bei Android nicht. Wenn das System Speicher braucht, räumt es auf. Diese leidvolle Erfahrung habe ich öfters auf dem G1 machen müssen.

Ich gehe davon aus, dass dieses Problem bei stärkeren Modellen nicht mehr auftritt.
 
Ab Froyo würde sich auch die C2DM api anbieten.
 

Ähnliche Themen

S
Antworten
9
Aufrufe
1.151
swa00
swa00
D
  • Data2006
3 4 5
Antworten
84
Aufrufe
3.473
jogimuc
J
R
  • Robby1950
2
Antworten
23
Aufrufe
954
Robby1950
R
Zurück
Oben Unten