KillActivity?

  • Hallöchen,


    Ich würde echt gerne Wissen ob es so eine Funktion gibt. Ich starte nämlich mit startActivityForResult den zxing scanner und wenn der user nichts macht möchte ich nicht, dass die Kamera stundenlang weiterläuft. Das verbraucht dann einfach zu viel Akku. Deswegen hätte ich halt gerne einen Timer der nach gewisser Zeit einfach die zxing Activity tötet. Gibt es solche Funktionalität?


    MfG Sh4kE

  • nach meinem Wissen:


    Mit Berechtigungen
    int pid = android.os.Process.myPid();
    android.os.Process.killProcess(pid);


    Ohne Berechtigungen
    System.exit();


    WICHTIG
    Die Methode ohne Berechtigungen ist absoluter Müll und führt oft zu Fehlern, da wenn die App sich selbst schliest, es sein kann, dass Android es nicht richtig erkennt und wiederherstellen versucht => viele viele Fehler... Viel eleganter ist der Weg über das Betriebssystem selbst, also mit Berechtigungen...


    Sollte ich falsch liegen, bitte korrigieren ;)

  • Ich glaub es ging um das töten aus einer anderen Anwendung heraus? Ansonsten wäre in der Activity "this.finish()" der korrekte Befehl zum beenden (ja, Android beendet es dann nicht richtig, schon klar. aber so is nunmal das OS Design)

  • Eine weitere Idee die mir noch kam war, das ganze über PendingIntents zu starten. Da gibt es ja eine Methode cancel(). Hab das auch ausprobiert hat nur keine Auswwirkungen gehabt. Und außerdem versteh ich dann nciht wie ich den Result bekomme. Kann mir das jemand erklären? :(


    Und zu der Sache mit den Berechtigungen:

    Zitat

    public static final void killProcess (int pid)
    Since: API Level 1
    Kill the process with the given PID. Note that, though this API allows us to request to kill any process based on its PID, the kernel will still impose standard restrictions on which PIDs you are actually able to kill. Typically this means only the process running the caller's packages/application and any additional processes created by that app; packages sharing a common UID will also be able to kill each other's processes.

    Also anscheinend dürfte ich das dann schon killen, ich habs ja auch gestartet. Nur wie komme ich an die PID davon? Beim starten bekommt man ja keine zugewiesen leider.


    MfG Sh4kE

  • Nicht, wenn dus über nen Intent startest...beim PendingIntent heißt das cancel() nur, dass der nicht mehr gestartet werden brauch, falls er noch nicht gestartet wurde. Damit kannste auch nix abbrechen.

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!