Android: Pause, RunInBackground, Focus -> Restart

Toutes les questions sur le développement Mobile, y compris la partie script.
Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6220
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Android: Pause, RunInBackground, Focus -> Restart

Message par boubouk50 » 16 Nov 2016 18:21

Bonjour à tous,

Encore une jolie colle pour Android depuis les dernières semaines:
Les applications Unity qui perdent le focus se relancent au lieu d'être mise en pause/background.
Les effets:
- Tu veux afficher une page web depuis l'application en lançant ton navigateur? L'application reboote.
- Tu veux utiliser un plugin pour prendre une photo depuis l'appareil natif? L'application reboote.
- Tu veux récupérer une image de la galerie pour en faire un fond d'écran? L'application reboote et tu ne récupères rien.
Bref, dans le bas du dos lolo, pour le dire poliment.


Je suis donc à la recherche de solutions pour contourner cette épine qui vient de me coûter le parfait fonctionnement de toutes mes applis sur le Store...
J'ai un peu cherché tout de même: (je ne mets que le lien le plus intéressant qui revient de partout)
- https://forum.unity3d.com/threads/appli ... st-2744101
- Application.RunInBackground ne fonctionne pas sous Android.

Alors

Code : Tout sélectionner

void OnApplicationPause(bool pauseStatus) { ... }
void OnApplicationFocus(bool hasFocus) { ... }
Ce n'est pas la peine puisqu'Unity ne se pause pas ou ne perd pas le focus, il est tué. (En tout cas, je ne reçois pas de message Console)
Il me reste les services, mais là j'ai pas tout rien pigé.

Comme d'hab, si vous avez des infos, des solutions, idées, je prends. Sinon, vous suivrez petit à petit la résolution de ce problème ou bien l'avancée à grand pas vers une corde pendue à une branche d'arbre bien solide...

- EDIT -
Le problème apparaît à partir de Android 5. Android 4.4.2 fonctionne bien.
Hier, sur mon appli Atulam, ni le Photo Picker ni le Camera Picker ne fonctionnaient, Aujourd'hui le Photo Picker fonctionne (pas le Camera Picker). Ce qui me laisse très perplexe, vu qu'aucune mise à jour n'a été faite entre temps. Info vérifiée sur 2 appareils 6.0.1 et un 5.1... :0

La bise.
Votre dévoué modérateur.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6220
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Android: Pause, RunInBackground, Focus -> Restart

Message par boubouk50 » 21 Nov 2016 11:13

Alors bon, là je nage en pleine science fiction.
Du jour au lendemain, les effets ne sont plus les mêmes. Maintenant, seul le Camera Picker débloque. Ouvrir la galerie d'images ou une page web ne fais plus rebooter l'application...
Youpi.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
simonj
Messages : 293
Inscription : 29 Nov 2015 20:47
Localisation : Lyon

Re: Android: Pause, RunInBackground, Focus -> Restart

Message par simonj » 21 Nov 2016 12:20

Pour moi ce n'est pas tant de la science-fiction que ça.

J'en avais discuté il y a quelque temps avec un collègue. En fait une application qui est en "background" sur Android reste active tant que la mémoire le permet. C'est pour ça que normalement si tu mets en background ton application et que tu ne fais rien d'autre sur ton tel, tu devrais pouvoir la garder indéfiniment sans que ça la recharge.
Par contre si les autres applications utilisent trop de mémoire, Android va chercher de la place là où il peux et si ça déborde, il kill les applications en background parce que normalement elles ont sauvegardé leur dernier state (Donc ça ne m'étonne pas que pour toi les résultats varient. En fonction des autres applications que tu as de lancé, de quand tu as éteint pour la dernière fois ton appareil, ...)

Le problème c'est que Unity ne possède pas ce genre de fonction et est obligé de se relancer du début si l'activité se fait kill. Et donc je n'ai aucune solution à te donner... De rien :gene:
However, if the system destroys the activity due to system constraints (rather than normal app behavior), then although the actual Activity instance is gone, the system remembers that it existed such that if the user navigates back to it, the system creates a new instance of the activity using a set of saved data that describes the state of the activity when it was destroyed. The saved data that the system uses to restore the previous state is called the "instance state" and is a collection of key-value pairs stored in a Bundle object.

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6220
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Android: Pause, RunInBackground, Focus -> Restart

Message par boubouk50 » 21 Nov 2016 12:28

Merci pour cette précision ;-)
Même si à la base, lancer une page du navigateur faisait systématiquement arrêter l'application et j'ai suffisamment de mémoire sur le tel, mais ça reste à prendre en compte. (parce que les clients, ils ne font pas vraiment les efforts pour tuer les autres applications avant utilisation...)

Pour le coup, c'est ce qui a dû se passer. Par contre, le problème persiste pour le Camera Picker, même si la mémoire est libre. Mais du coup, je me demande si c'est bien lié au Run in background. En annulant le picking au dernier moment (photo prise, toast de confirmation d'utilisation), l'application ne plante pas. Si j'essaie de récupérer l"image, l'application redémarre.
C'est peut-être lié à l'obsolescence du plugin, à de nouvelles règles de sécurité ou autre, enfin bon, j'épluche encore un peu.

Depuis Lollipop (API 21), la classe Camera est devenue obsolète. Elle est remplacée par la classe Camera2. Normalement, il ne devrait pas y avoir de problème, mais sait-on jamais. Au moins, ça colle avec mes observations. StackOverflow. StackOverflow 2.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
E3DStef
Administrateur
Administrateur
Messages : 1646
Inscription : 14 Juil 2013 18:30
Localisation : https://www.carte-des-membres.com/fr/Unity3D-France/

Re: Android: Pause, RunInBackground, Focus -> Restart

Message par E3DStef » 21 Nov 2016 20:40

Oui réellement bizarre ton pblm.

Si j'ai bien compris tu n'utilises pas les webcamtexture ?

A+

Stef
Le Savoir n'est Précieux que s'il est Partagé

Si besoin urgent de me contacter, faites moi un mail sur : franceunity3d@gmail.com

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6220
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Android: Pause, RunInBackground, Focus -> Restart

Message par boubouk50 » 22 Nov 2016 10:18

Non, j'utilise la caméra native du téléphone pour avoir toutes les fonctionnalités associées et faire une bonne prise de vue.
Mais je me dis que finalement, ce serait peut-être mieux pour éviter toutes ces mer bricoles liées aux OS et la compatibilité avec iOS...
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
E3DStef
Administrateur
Administrateur
Messages : 1646
Inscription : 14 Juil 2013 18:30
Localisation : https://www.carte-des-membres.com/fr/Unity3D-France/

Re: Android: Pause, RunInBackground, Focus -> Restart

Message par E3DStef » 22 Nov 2016 10:43

Oui perso je reste en natif quand je dev /eclipse mais avec unity je reste dans les webcam textures mm si elles dégradent un peu la qualité visuelle (toujours pas trouvé comme améliorer cela, je sais que c'est une histoire de pixel carré mais pas eu le temps de creuser plus).

Si tu as besoin de mes (maigres) connaissances sur le sujet n'hésites pas.

A+

Stef
Le Savoir n'est Précieux que s'il est Partagé

Si besoin urgent de me contacter, faites moi un mail sur : franceunity3d@gmail.com

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6220
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Android: Pause, RunInBackground, Focus -> Restart

Message par boubouk50 » 22 Nov 2016 10:49

Yep, merci.
Pour les WebCamTextures, je les ai déjà utilisées, c'est pas un souci, je devrais m'en sortir si je vais sur cette piste.
Par contre, j'ai d'autres solutions qui nécessitent l'utilisation de plusieurs plugins simultanément sous Android, et là, je vais peut-être venir t'embêter un peu si je m'y engouffre.
Je vais faire des tests de qualité de la WebCamTexture d'abord.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Avatar de l’utilisateur
E3DStef
Administrateur
Administrateur
Messages : 1646
Inscription : 14 Juil 2013 18:30
Localisation : https://www.carte-des-membres.com/fr/Unity3D-France/

Re: Android: Pause, RunInBackground, Focus -> Restart

Message par E3DStef » 24 Nov 2016 00:21

boubouk50 a écrit :Par contre, j'ai d'autres solutions qui nécessitent l'utilisation de plusieurs plugins simultanément sous Android, et là, je vais peut-être venir t'embêter un peu si je m'y engouffre.
Pas de soucis si c'est dans mes compétences ;-)

boubouk50 a écrit :Je vais faire des tests de qualité de la WebCamTexture d'abord.
Ce sera moins bien que l'accès natif c'est sûr mais tu n'auras plus les pblms rencontrés là...
Dans l'immédiat je ne vois (à mon niveau) pas d'autres solutions.

bon courage

A+

Stef
Le Savoir n'est Précieux que s'il est Partagé

Si besoin urgent de me contacter, faites moi un mail sur : franceunity3d@gmail.com

Avatar de l’utilisateur
boubouk50
ModoGenereux
ModoGenereux
Messages : 6220
Inscription : 28 Avr 2014 11:57
Localisation : Saint-Didier-en-Bresse (71)

Re: Android: Pause, RunInBackground, Focus -> Restart

Message par boubouk50 » 24 Nov 2016 10:48

Finalement, je passe par la WebCamTexture. Les histoires de résolution par contre c'est tout pourri! Pas moyen de choisir!?
Si quelqu'un sait où récupérer la liste des résolutions dispos sur le device pour choisir celle qui convient le mieux, ça m'aiderait énormément.
-> Sur mon Moto G4, la résolution max que je récupère est 1280x960 (donc 4/3) pour un écran 1920x1080 (donc 16/9)...
-> Sur ma Galaxy Tab Pro, j'ai du 1920x1080 (16/9) pour une résolution 2560x1600 (16/10)
Du coup, je préférerais pouvoir choisir une résolution identique à l'écran. Je pourrai faire un fill de l'image, mais non. By Design.
"Ce n'est pas en améliorant la bougie, que l'on a inventé l'ampoule, c'est en marchant longtemps."
Nétiquette du forum
Savoir faire une recherche
Apprendre la programmation

Répondre

Revenir vers « Développement plateformes mobile Iphone et Android »