1. Hast Du Lust, bei uns mitzuarbeiten und das AH-Team zu verstärken? Alle Details zu dieser aktuellen Herausforderung findest Du hier.
  1. StefMa, 10.05.2012 #1
    StefMa

    StefMa Threadstarter Gewerbliches Mitglied

    Hi,

    eins vorne weg: Habe mich noch nie mit Service's auseinandergesetzt!

    Folgendes: Ich starte einen Servive, der allerdings erst nach einer gewissen Zeit etwas zun soll. (Sagen wir mal nach 18 Stunden eine Benachrichtigung geben).
    Mach ich das easy mit Thread.sleep(18 Stunden)? Oder gibts da iwie ein anderen trick?
    Wird die methode mit sleep nicht auch ressourcen fressen, da sie ja trotzdem noch iwie im hintergrund ist?!
    Oder ist die Lösung wirklich so einfach?! :D

    Gruß

    €dit:
    Okay, in der Doku steht das:
    Code:
      @Override
      protected void onHandleIntent(Intent intent) {
          // Normally we would do some work here, like download a file.
          // For our sample, we just sleep for 5 seconds.
          long endTime = System.currentTimeMillis() + 5*1000;
          while (System.currentTimeMillis() < endTime) {
              synchronized (this) {
                  try {
                      wait(endTime - System.currentTimeMillis());
                  } catch (Exception e) {
                  }
              }
          }
      }
    
    Dann halt wait..?! Aber wirklich für 18 Stunden?!
     
    Zuletzt bearbeitet: 10.05.2012
  2. swordi, 10.05.2012 #2
    swordi

    swordi Gewerbliches Mitglied

    warum erstellst nicht einen "alarm" mit dem alarmmanager in 18 stunden und startest dann deinen service ?

    denk an den akku - sparsamkeit ist trumpf
     
    StefMa gefällt das.
  3. StefMa, 10.05.2012 #3
    StefMa

    StefMa Threadstarter Gewerbliches Mitglied

    Genau die Antwort auf meine Frage :thumbsup:

    Wenn ich die Doku richtig verstehe, meldet sich meine App bei dem Broadcast Reciever von Android an. Dieser startet dann ERST die App/Service, wenn die Zeit rum ist?! Richtig verstanden?
    Daher wird nichts an CPU/Ram blubb verbraucht, weil ja nichts läuft?! ;)

    Bitte um kurze bestätigung :>

    MfG Ice
     
  4. swordi, 10.05.2012 #4
    swordi

    swordi Gewerbliches Mitglied

    ja wird wohl die beste lösung sein :)
     
  5. strider, 10.05.2012 #5
    strider

    strider Erfahrener Benutzer

    Denk auch an den Wakelock wenn du sicher gehen willst das in 18 Stunden etwas passiert. Der Broadcast receiver wird noch garantiert ausgeführt, aber sobald es in den Service reingeht kann jederzeit das Sandmännchen kommen.
     
  6. StefMa, 10.05.2012 #6
    StefMa

    StefMa Threadstarter Gewerbliches Mitglied

    Hi,

    was meinst du damit?
    Was ist Wakelock? Wenn ich das nicht aufrufe(?), dann kann trotz AlarmManager mein Service beendet werden?
    Wäre ja doof :biggrin:

    Also, was ist Wakelock?

    MfG Ice

    P.s. Habe mir davon noch nichts angeschaut, bin noch arbeiten ;)
    P.p.s: Achja, WakeLock setzte ich dann das Handy auf "on". Geht dann damit auch der Display an? :D Muss ich das wirklich machen, damit der Service startet?
     
    Zuletzt bearbeitet: 10.05.2012
  7. strider, 10.05.2012 #7
    strider

    strider Erfahrener Benutzer

    Wenn du keinen Wakelock hälst während der Service läuft kann das Smartphone jederzeit in den Sleep modus gehen. Ja trotz AlarmManager kann dein Service einschlafen. Es wird nur garantiert, dass während der BroadcastReceiver seine onReceive() abarbeitet das Smartphone wachbleibt. Schau dir mal den WakefullIntentService an da ist das Problem elegant gelöst.
    https://github.com/commonsguy/cwac-wakeful

    Wichtig ist wie er den Service aus dem BR aufruft über die statische Methode.

    public static void sendWakefulWork(Context ctxt, Intent i) {
    getLock(ctxt.getApplicationContext()).acquire();
    ctxt.startService(i);
    }

    Damit holt er sich praktisch einen neuen Wakelock während der Wakelock des BroadcastReceivers noch aktiv ist und startet dann erst seinen Service, somit ist immer ein Wakelock aktiv.
     
    Zuletzt bearbeitet: 10.05.2012
Die Seite wird geladen...
Ähnliche Themen Forum Datum
[ERLEDIGT] Probleme mit Service unter Android N Android App Entwicklung 16.07.2017
[ERLEDIGT] Hilfe bei Fehler in Quellcode benötigt Android App Entwicklung 23.06.2017
[OFFEN] Service wird bei manchen Geräten nicht gestartet Android App Entwicklung 09.04.2017
Google Play Services Fehler Android App Entwicklung 19.12.2016
Du betrachtest das Thema "Service Sleep...?" im Forum "Android App Entwicklung",