Android tötet meinen Launcher bei BT connect

8

Ich habe eine Launcher-App für Android mit Apache cordova geschrieben. Es ist für eine Kiosk-ähnliche Anwendung und im Grunde funktioniert es gut.

Leider gibt es ein Problem: Unter bestimmten Umständen tötet Android meine App und startet sie sofort neu. - Es dauert etwa 3 Sekunden, um zu laden, wo es einen weißen Bildschirm zeigt. Es beginnt komplett neu (onPause, onResume werden nicht aufgerufen). Im Protokoll finde ich:

%Vor%

Die Umstände, unter denen es passiert:

  • Es passiert nach mehreren Stunden Betriebszeit
  • Es passiert jedes Mal , dass Sie eine Bluetooth-Fernbedienung anschließen. (Es ist bereits gepaart). Nach einigen Minuten Leerlauf trennt die Fernbedienung, um Strom zu sparen. Sobald du es wieder anschließt (per Knopfdruck), stürzt die App ab und startet neu.

Was ich bisher ohne Glück versucht habe:

  • Installieren Sie die App als "normale" App (kein Launcher)
  • Deinstallieren Sie jedes cordova Plugin

Geräte, bei denen der Fehler auftritt:

  • Android 4.4.2 Tablet ("No-Name" Produkt) - Der Fehler ist vorhanden
  • Android 5.1-Tablet ("No-Name" -Produkt) - Der Fehler ist vorhanden
  • Android 5.1.1 Telefon (Samsung xCover) - Kein Problem !!
  • Android 4.4.2 Telefon (Samsung GALAXY S III Neo) - Kein Problem !!

Warum also tötet das Android auf den Tablets meine App? Liegt es daran, dass sie billige Hardware haben oder weil die Android-Versionen älter sind? Wie kann ich diesen Fehler verhindern?

AKTUALISIEREN

Ich habe herausgefunden, dass das Problem nicht auf die Programmierung zurückzuführen ist, da dieses Problem bei jeder App auftritt. Deshalb habe ich eine weitere Frage zu Android-Enthusiasten gestellt

    
Michael B 01.06.2016, 07:43
quelle

5 Antworten

1

Das Problem wurde durch Änderungen der Systemkonfiguration in Runtime verursacht. Standardmäßig werden Aktivitäten diese nicht behandeln, sondern nur neu starten.

Siehe Ссылка

Cordova fügt Handler für orientation , keyboardHidden , keyboard , screenSize und locale standardmäßig hinzu.

Um unser Problem zu beheben, mussten wir nur hinzufügen, um die Konfigurationsänderung für navigation an unsere Aktivität wie folgt anzupassen:

%Vor%     
IngoAlbers 01.07.2016, 12:43
quelle
0

In den Geräten, die abstürzen, haben Sie aus irgendeinem Grund die Entwickleroption: Aktivitäten nicht markiert lassen.

Verwenden Sie Cordova-Plugins, die die Aktivitäten ändern?

Es sieht so aus, als ob eine Aktivität zerstört wird. Hier finden Sie einige Informationen:

Ссылка

    
Breixo 03.06.2016 18:26
quelle
0

Das ist bei allen Apps der Fall. Jede App, die in den Hintergrund getreten ist oder für einige Zeit nicht verwendet wird, setzt die virtuelle Engine auf niedrigere Priorität und wenn sie Speicher oder eine andere Ressource benötigt, wird die App beendet.

Sie können es nicht vermeiden. Was Sie tun können, ist einen Neustart an der gleichen Stelle, wo es getötet wurde mit onSaveInsanceState() und onRestoreInstanceState() :

onSaveInstanceState () und onRestoreInstanceState ()

Die andere Möglichkeit besteht darin, Ihrer App einen Dienst hinzuzufügen. Auf diese Weise wird Ihre App nicht getötet:

Wie können wir einen Dienst verhindern? wird von OS getötet?

    
Ashish Rawat 08.06.2016 08:37
quelle
0

Obwohl ich kein Experte für Android bin, sehe ich den Log in den folgenden Zeilen:

  

"java.lang.IllegalArgumentException: Angefordertes Fenster android.os.BinderProxy@427d8618 existiert nicht"

Dieser Fehler tritt normalerweise auf, wenn Sie versuchen, eine System-API aufzurufen, die auf Ihrem Zielgerät nicht verfügbar ist. Deshalb ist dieses Problem, wie Sie sagten, abhängig vom Gerät. Dieses Problem führt auch dazu, dass die Anwendung wie beschrieben neu gestartet wird. Alles, was Sie herausfinden müssen, ist "Was ist dieser API-Aufruf, der Ihre App zum Absturz bringt"

Eine weitere interessante Sache, die ich in Ihrem Beitrag bemerkt habe, ist, dass dieser Absturz nur in no-name product auftritt. Also ich glaube, No-Name könnte nur das Problem verursachen, wie während der Bluetooth-Paarung, intern BluetoothDevice.getName() kann Null zurück, was zu dem Absturz.Ich glaube stark, dass dies das Problem verursacht und vorschlagen, dass Sie sich dies ansehen link für einige Hilfe.

    
Gandhi 09.06.2016 13:39
quelle
0

Es ist kein Tablet oder mobiles Problem. Ich vermute, dass die Option Aktivitäten nicht beibehalten (Entwickleroptionen) auf Ihrem Tablet aktiviert ist. Bitte überprüfen Sie das.

Android 4.4.2 Tablet ("No-Name" Produkt) - Der Fehler ist vorhanden

Android 5.1-Tablet ("No-Name" -Produkt) - Der Fehler ist vorhanden

    
AndroidEnthusiastic 09.06.2016 15:11
quelle