J'ai écrit une application de lanceur pour Android avec Apache Cordova. C'est pour une application de kiosque et fondamentalement, cela fonctionne bien.
Malheureusement, il y a un problème:
Dans certaines circonstances, Android est la force de tuer mon application et de le redémarrer immédiatement. - Il faut environ 3 secondes pour charger, où il affiche un écran blanc. Cela commence complètement nouveau (l'onpaause, onResume ne s'appelle pas). Dans le journal, je trouve: p> Les circonstances quand il arrive: strong> p> périphériques, où l'erreur se produit: strong> p> Alors pourquoi l'Android sur les tablettes tue mon application? Est-ce parce qu'ils ont du matériel bon marché ou parce que les versions Android sont plus âgées? Comment puis-je empêcher ce bogue? strong> p> J'ai découvert que le problème n'est pas lié à la programmation, car Ce problème se produit sur
5 Réponses :
Dans les appareils qui se bloque, pour une raison quelconque avez-vous l'option de développeur: Ne gardez pas les activités marquées. P>
Utilisez-vous des plugins Cordova qui changent d'activités? P>
On dirait pour une raison quelconque une raison une activité est en train d'être détruite, vous pouvez trouver des informations: P>
https: //cordova.apache.org/docs/fr/Latest/Guide/platforms/android/index.html#Qu-Can-Can-Chis-happen P>
Merci! "Ne pas garder les activités" n'est pas défini. Aussi, j'ai supprimé tous les plugins de Cordova et l'ai testé avec une nouvelle application Cordova. L'erreur est également présente là-bas.
Ceci est vrai avec toutes les applications. Toute application qui a été allée à l'arrière-plan ou n'est pas utilisée pendant un certain temps, le moteur virtuel le définit à une priorité inférieure et lorsqu'elle a besoin de mémoire ou de toute autre ressource, elle tue l'application. P>
Vous ne pouvez pas l'éviter. Ce que vous pouvez faire est de redémarrer au même endroit où il a été tué avec OnsaveInstancestate () et OnrestoreInstancestate () P>
L'autre option consiste à avoir un service connecté à votre application. De cette façon, votre application ne vous est pas tuée: p>
Comment pouvons-nous empêcher un service de être tué par le système d'exploitation? p> OnsaveinsCestate () Code> et
OnrestoreInstancestate () Code>: P>
Cela pourrait être une solution générique. Mais je ne pense pas qu'il aborde la question spécifique que l'utilisateur est bloqué.
Bien que je ne suis pas un expert en Android, en regardant le journal, je ressente la clé dans les lignes suivantes: P>
"java.lang.illegalargumentException: fenêtre demandée android.os.binderProxy@427d8618 n'existe pas" p> blockQuote>
Cette erreur se produit généralement lorsque vous essayez d'invoquer une API système non disponible sur votre périphérique cible. C'est pourquoi comme vous avez dit que cette question est dépendante du dispositif. De plus, cette question provoque le redémarrage de l'application comme vous l'avez dit. Tout ce que vous avez besoin de comprendre est "Qu'est-ce que l'appel de l'API qui bloque votre application" p>
Une chose plus intéressante que j'ai notée dans votre message est que cet accident ne se produit que dans
produit sans nom code>. Je pense donc que le nom de non-nom pourrait simplement causer le problème comme lors de la paire Bluetooth, en interne
bluetoothtevice.getname () code> peut renvoyer null résultant dans le crash.i croyez fermement que cela cause le problème et vous suggère Pour regarder cet lien pour une aide. P>
Sa tablette non comprimée ou mobile. Je soupçonne Ne gardez pas l'option Activités forts> (Options de développeur) est activé dans votre tablette. S'il vous plaît vérifier cela. P>
Android 4.4.2 Tablette ("NO-NAME") - L'erreur est présente p>
Tablette Android 5.1 (produit "NO-NAME") - L'erreur est présente p>
Merci! Malheureusement, ce n'est pas le cas - l'option n'est pas définie.
Le problème a été causé par les modifications apportées à la configuration du système en exécution. Par défaut, les activités ne manipuleront pas les personnes, mais ne seront que redémarrer.
voir https://developer.android.com/Guide/topics /resources/runtime-changes.html p>
CORDOVA ajoute des gestionnaires pour Pour résoudre notre problème, nous devons simplement ajouter pour traiter la modification de configuration pour Orientation code>,
KeyboardChriden code>,
clavier code>,
Screensize code> et
locale code> Par défaut. p>
Navigation Code> à notre activité comme ceci: p>
Bien que je ne suis pas un expert en Android, je regarde le journal, je sens la clé dans les lignes suivantes: "Java.lang.illegalargumentException: la fenêtre demandée android.os.binderproxy@427d8618 n'existe pas" Cette erreur se produit généralement lorsque vous essayez de Invoquer une API système qui n'est pas disponible sur votre périphérique cible. C'est pourquoi comme vous avez dit que cette question est dépendante du dispositif. De plus, cette question provoque le redémarrage de l'application comme vous l'avez dit. Tout ce que vous avez besoin de comprendre est "Qu'est-ce que l'appel de l'API qui bloque votre application". J'espère que ça a du sens.
@Ingoalbers Bien que je ne suis pas un expert en Android, en regardant le journal, je ressente la clé dans les lignes suivantes- "java.lang.illegalargumentException: la fenêtre demandée android.os.binderproxy@427d8618 n'existe pas" Cette erreur se produit généralement lorsque vous Essayez d'invoquer une API système qui n'est pas disponible sur votre périphérique cible. C'est pourquoi comme vous avez dit que cette question est dépendante du dispositif. De plus, cette question provoque le redémarrage de l'application comme vous l'avez dit. Tout ce que vous avez besoin de comprendre est "Qu'est-ce que l'appel de l'API qui bloque votre application". J'espère que ça a du sens.
Merci pour votre commentaire. Le problème est que je n'invoque aucun appel de l'API système. Le système le fait lui-même. Peut-être que je peux changer cela dans un fichier de configuration système? (La racine est disponible), mais je ne sais pas où regarder et quoi changer.
Vous avez mentionné que ce problème se produit à chaque fois que lorsque vous vous connectez à la télécommande Bluetooth. Donc je regarderais dans ces lignes pour comprendre
Une chose plus intéressante que j'ai notée dans votre message est que cet accident ne se produit que dans le produit sans nom. Donc, je pense que le nom de non-nom ne pouvait que causer le problème comme lors de la paire Bluetooth, en interne Bluetoothdevice.getname () peut renvoyer NULL résultant de l'accident.Je crois fermement que cela provoque le problème et vous suggère de regarder ce lien pour certains Help - Stackoverflow.com/questions/26290640/.../ a> garde-moi posté
@Ingoalbers avez-vous eu la chance de regarder ce commentaire? Était-ce utile?
@Ingoalbers l toute mise à jour à ce sujet?
@Gandhi malheureusement, je ne travaille plus sur ce projet. Autant que je sache, Michael n'a pas encore résolu ce problème. Il va mettre à jour ici bientôt. Merci pour les commentaires jusqu'à présent. Certainement donné des idées.
@Michaelb n'importe quelle chance Michael? La réponse a-t-elle aidé?
@Ingoalbers merci pour la prime. Vraiment sentir motivé. Codage heureux. À votre santé