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

App im Hintergrund laufen lassen

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von chrisi01, 12.02.2011.

  1. chrisi01, 12.02.2011 #1
    chrisi01

    chrisi01 Threadstarter Android-Hilfe.de Mitglied

    Beiträge:
    49
    Erhaltene Danke:
    0
    Registriert seit:
    16.02.2010
    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
     
  2. ts-apps, 13.02.2011 #2
    ts-apps

    ts-apps Erfahrener Benutzer

    Beiträge:
    194
    Erhaltene Danke:
    39
    Registriert seit:
    27.03.2010
    Ja sowas kannst du machen. ;-)
     
  3. hadez, 13.02.2011 #3
    hadez

    hadez Android-Experte

    Beiträge:
    650
    Erhaltene Danke:
    92
    Registriert seit:
    18.07.2010
    Phone:
    Motorola Razr i
    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.
     
  4. maniac103, 14.02.2011 #4
    maniac103

    maniac103 Android-Lexikon

    Beiträge:
    1,237
    Erhaltene Danke:
    1,157
    Registriert seit:
    24.01.2011
    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.
     
  5. robertpic71, 14.02.2011 #5
    robertpic71

    robertpic71 Android-Hilfe.de Mitglied

    Beiträge:
    143
    Erhaltene Danke:
    24
    Registriert seit:
    28.06.2009
    Phone:
    Samsung Galaxy Note 4
    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.
     
  6. Kranki, 15.02.2011 #6
    Kranki

    Kranki Ehrenmitglied

    Beiträge:
    3,831
    Erhaltene Danke:
    814
    Registriert seit:
    19.07.2009
    Tablet:
    Samsung Galaxy Tab 3 7.0 Lite
    Ab Froyo würde sich auch die C2DM api anbieten.
     

Diese Seite empfehlen