Android App im Hintergrund aktiv lassen

  • Antworten:17
Rudi Eberl
  • Forum-Beiträge: 17

16.03.2017, 22:25:52 via Website

Hallo zusammen,

Ich hoffe mir kann jemand von euch bei meinem kleinen Problem helfen.
Ich habe in meiner Wand ein 18" Tablet mit Android 4.2 für meine Haussteuerung verbaut.

Auf dem Tablet wird standardmäßig das UI der Haussteuerung im Browser angezeigt.
Wenn es nun an der Türe klingelt sendet die Klingel einen UDP-Befehl an eine App (Woli2) im Tablet welche bewirkt dass das Tablet für 60 Sekunden vom Browser in die App DS-CAM wechselt, welche dann die ip-Kamera an der Haustüre anzeigt.

Folgendes Problem:

Nachdem die App zur Anzeige der Kamera eigentlich immer im Hintergrund ist wird diese wohl aus Energiespargründen deaktiviert.
Nun bin Ich schon ewig am suchen... Ich finde einfach nichts womit ich die App im Hintergrund aktiv halten kann. Bei Android 4.2 gibt es leider auch noch kein App-Standby.

Das Tablet hat auch von Werk aus keinen Akku. Somit kann Systemweit auf Energieerhaltende Maßnahmen verzichtet werden.

Vielen Dank im Voraus

Antworten
Gelöschter Account
  • Forum-Beiträge: 21.034

16.03.2017, 22:41:29 via Website

Die App lässt sich doch offenbar entsprechend konfigurieren:

image

Wenn die ROM von deinem Tablet zu aggressiv ist und die Konfiguration übersteuert, sollte das in den Energiesparoptionen der ROM abstellbar sein.

— geändert am 16.03.2017, 22:41:50

Antworten
Rudi Eberl
  • Forum-Beiträge: 17

17.03.2017, 08:40:38 via Website

Vielen Dank für die schnelle Antwort.

Die Woli App kann einen Standby der Apps nicht verhindern. Falls du "WakeLock" meinst, dass dient zum Display An bzw. abschalten. Wo gibt es denn Energiespareinstellungen in der ROM ???

Antworten
swa00
  • Forum-Beiträge: 3.704

17.03.2017, 09:00:08 via Website

Hallo Rudi,

das was du als "Manko" bezeichnest, ist ein "Feature" von Android. - Stichwort GarbageCollector / LifeCycle

Eine App kann/wird nach einer Weile vom System beendet und das ist bewusst so entwickelt worden

Für einen halbwegs dauerhaften Betrieb von Funktionen , werden dazu Services oder Processes eingesetzt,
keine Apps. Selbst Diese müssen u.U. Zeitgesteuert wieder zum Leben erweckt werden.

— geändert am 17.03.2017, 09:51:32

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
Rudi Eberl
  • Forum-Beiträge: 17

17.03.2017, 09:07:24 via Website

Mir ist bewusst, dass es sich hierbei um ein Feature von Android handelt

(macht auch Sinn bei mobiler Verwendung)

Das mit den Services ist mir auch bekannt. Nur geht mir das für meine Kenntnisse etwas zu tief...
Wie kann ich denn einen passenden Service erstellen oder einbinden?

Ich dachte es gäbe dafür evtl. eine App wie zb. "Keepscreen" in der man eine jeweilige App auswählen kann, die dann eben Wach bleibt oder die Priorität hochsetzt

Antworten
swa00
  • Forum-Beiträge: 3.704

17.03.2017, 09:13:02 via Website

Ein Service kann nur durch den Entwickler der App realisiert werden.

Ein Workaround wäre maximal , dass man versucht zeitgesteuert die App zu beenden und wieder zu starten.
(ggf Root notwendig). Also die grausame Art.

Aber auch hier bekommst du keine zuverlässigen Zeiten , wann schlussendlich die App beendet wird und
sie neu gestartet werden müsste

Das wäre also ein reines Try & Hope

— geändert am 17.03.2017, 09:15:51

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
Gelöschter Account
  • Forum-Beiträge: 21.034

17.03.2017, 09:13:12 via Website

Wakelock sollte eigentlich nur die App oder den Dienst wachhalten und nicht das Display dauerhaft anschalten.

Die Energiesparoptionen sind leider von Hersteller zu Hersteller recht unterschiedlich verteilt. Manche haben einen eigenen Menüpunkt, viele packen es unter Akku oder Power. Dann kann es noch Einstellungen geben wie unter WLAN.

Antworten
swa00
  • Forum-Beiträge: 3.704

17.03.2017, 09:19:22 via Website

Moin Aries,

Wakelock sollte eigentlich nur die App oder den Dienst wachhalten und nicht das Display dauerhaft anschalten.

Wakelock bezieht sich leider nur auf den Screen oder die CPU und hat nichts mit der LifeCycle der App zu tun
https://developer.android.com/training/scheduling/wakelock.html

— geändert am 17.03.2017, 10:22:27

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
Müli
  • Forum-Beiträge: 6.959

17.03.2017, 11:47:42 via Website

Ist das Tablet gerooted?
Mit Busybox und einem Script-Tool ($cripter!?) sollte man dem Problem eigentlich bei kommen. Unter Unix/Linux würde man so eine Problemstellung jedenfalls mit einem Shell Script lösen.

Mein Mainframe -> HP16C
Samsung Galaxy S23Ultra 512GB Edition
Troubleshooting-Probleme? -> Kepner Tregoe!

Antworten
Rudi Eberl
  • Forum-Beiträge: 17

17.03.2017, 13:27:17 via Website

Das Tablet ist meines Erachtens nicht gerootet. Das sollte sich jedoch machen lassen.

Vielen Dank für den Tip! Muss ich dann tatsächlich einen Script eintragen? Ich kenne mich leider mit Scripting in Linux nicht so gut aus

Antworten
swa00
  • Forum-Beiträge: 3.704

17.03.2017, 13:36:04 via Website

Hallo Rudi,

du musst kein Script schreiben.
Wenn das Gerät gerootet ist , kannst du auch andere Tools ( z.b. Tasker) dazu anwenden.

Wie aber oben erwähnt , wird dich das Ganze auch nicht sicher ans Ziel führen , da du vom System keine
Meldung bekommst , ob die App beendet wurde

Zygote VM, die die App leben lässt, gibt dir auch unter Root keine Meldung , wann die App abgeschossen wurde.
Maximal eine Fehlende, vorher dagewesene PID.

Ergo wirst du nicht drumrum kommen , irgendwas zeitliches "herauszufieseln" dass es passen könnte und
auf verdacht den "jojo" machen .

Anmerkung : für Deine Anwendungs-Anforderung ist halt Android im Grunde genommen das falsche System
Es sei denn , du würdest das Ganze selbst entwickeln und somit Services verwenden können.

— geändert am 17.03.2017, 13:53:30

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
Müli
  • Forum-Beiträge: 6.959

17.03.2017, 16:14:16 via Website

Ich stecke bei Android nicht so tief drin, jedoch die Verwandtschaft zu Linux/Unix sollte doch vermuten lassen, dass ähnliche Möglichkeiten bestehen, ein Programmierer wird es aber sicher besser beurteilen können. Unter Unix (genauer HP-UX) waren wir auf kommerziellen Systemen oft in der Verlegenheit, die Bereitschaft bestimmter Prozesse (PID's) zu testen, um ggf. deren erneuten Start wieder auszulösen.
Ich könnte es mir etwa wie folgt vorstellen: ein Script startet eine Anwendung (Woli), 'merkt' sich die PID und testet auf das weitere Vorhandensein, fällt die Überprüfung negativ aus, startet das Script die Anwendung erneut und überprüft im Weiteren wieder die Funktion usw.. Ob die System Programmiermöglichkeiten unter Android derartiges erlauben vermag ich nicht zu sagen, unter Unix wurden jedenfalls zu meiner beruflichen Tätigkeit alles mögliche per Script getestet, ob es nun der Spooler, ein Scanner Modul oder Systemprozesse waren, gerade das ist oder war immer die Stärke von Unix.

Mein Mainframe -> HP16C
Samsung Galaxy S23Ultra 512GB Edition
Troubleshooting-Probleme? -> Kepner Tregoe!

Antworten
Rudi Eberl
  • Forum-Beiträge: 17

17.03.2017, 16:44:27 via Website

Puh da sieht es wohl sehr düster aus...

Es kann ja nicht sein, dass ich der einzige bin der einen Androiden als Terminal fürs Smart-Home an die Wand genagelt hat.

Wie sieht es da eigentlich mit den ganzen neuen Türklingeln aus? Dafür werden auch Tablets mit der App bestückt und zum Gegensprechen benutzt.

Wäre ja das gleiche Problem falls das Tablet noch eine andere App laufen hat 🤔

Antworten
swa00
  • Forum-Beiträge: 3.704

17.03.2017, 18:36:29 via Website

@Rudi,

Wäre ja das gleiche Problem falls das Tablet noch eine andere App laufen hat

Richtig , das ist eine Eigenschaft von Android und macht ja auch Sinn,
wie du oben selbst treffend bemerkt hattest.

Grundsätzlich ist das , was Du vorhast schon möglich , sollte halt in einem Paket integriert sein und auch auch über entsprechenden Services verfügen . Dann ist das , was du vorhast, durchaus möglich.

Zu hoffen, dass verschiedene Apps sich verhalten , wie unter Windows oder Linux ist eher nicht
von Erfolg gekrönt . Nicht umsonst baut Google seine Pakete aufeinander abgestimmt auf.

Den Link den du herausgesucht hast , bezieht sich auf eine Standby einer App.
Das ist ein wesentlicher Unterschied zu einem Kill oder Shutdown der App.

Erklärung : Eine App bekommt Zustände mitgeteilt , ob sie z.b. in den Hintergrund gesetzt wird.
(onPause, OnResume)
Bekommt sie ein onPause, kann z.B. die Animation von Grafiken gestoppt werden ( seitens des Entwicklers )
damit Resourcen freigegeben werden.
Kommt ein OnResume, heisst das , dass es weiter geht und die App in den Vordergrund platziert wird und
die Grafik kann wieder animiert werden.
Dieses OnResume / OnPause kannst du mit deinem oben genannten Link abschalten .

— geändert am 17.03.2017, 18:43:52

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
Rudi Eberl
  • Forum-Beiträge: 17

18.03.2017, 14:12:58 via Website

Ich glaube Ich habe es geschafft!!

Falls jemand das selbe Problem hat:

Mit der App "Auto Memory Manager" lassen sich Prozesse aktiv halten.

Antworten
swa00
  • Forum-Beiträge: 3.704

18.03.2017, 14:20:18 via Website

Hallo Rudi,

herzlichen Glückwunsch zu Deine Suche.

Allerdings wage ich zu bezweifeln , dass das auf dauer Funktionieren wird , da hier lediglich der RAM-Speicher
von älteren System-Varianten beinflusst wird.
Allerdings nicht das Verwalten der Apps durch das System.

Das war damals auch noch möglich.

Ab IceCream wurde das auf den heutigen Zustand geändert.

— geändert am 18.03.2017, 14:21:49

Liebe Grüße - Stefan
[ App - Entwicklung ]

Antworten
Rudi Eberl
  • Forum-Beiträge: 17

18.03.2017, 14:28:07 via Website

Im gründe laufen auf dem Tablet nur diese 3 Apps. Soli, Browser und DS-Cam. Es kommt eigentlich auch nichts dazu.

Alles andere ist komplett abgeschaltet. Bis jetzt funktioniert es ganz gut.

Antworten