PC SOFT

PROFESSIONAL NEWSGROUPS
WINDEVWEBDEV and WINDEV Mobile

Home → WINDEV Mobile (earlier versions) → L'application s'est arrêté.
L'application s'est arrêté.
Started by Joris, Jul., 02 2020 10:58 AM - 5 replies
Posted on July, 02 2020 - 10:58 AM
Bonjour à tous,

Je viens ici poster un message car je rencontre un souci depuis plusieurs semaines/mois que je ne comprends pas et donc n'arrive pas à résoudre... Je fais donc appel a vos avis d'expert.

Pour mon entreprise je développe une application mobile (android) de gestion de production et logistique pour les opérateurs de terrain. Cette application est développée sous Windev Mobile 22 et consomme un Webservice lui aussi réalisé en Windev 22.
Sur l'une des fenêtres de cette application j'ai une zone répétée remplie par programmation. Dans cette zonne répétée on retrouve une image ainsi que des libellés. Cette ZR est remplie avec ZoneRépétéeAjouteLigne par les attributs de la ZR.
Sur cette ZR j'ai activé le balayage par programmation. Cela afin d'ouvrir une autre fenêtre lors du balayage sur une ligne.
Jusqu'ici aucun souci, la fenêtre fille s'ouvre bien et tout fonctionne.
Mon problème intervient à la fermeture de la fenêtre (enfin je pense). En effet, de manière plus ou moins aléatoire (70-80% des cas quand même) mon application plante après la fermeture avec un "beau" message l'application s'est arrêté.
Je n'ai jamais réussi à reproduire le souci avec le simulateur Windev. J'ai même été jusqu’à mettre une trace a chaque ligne pour voir où était le souci directement dans le logcat, sans succès. Les codes fermeture de la fenêtre ainsi que fermeture d'une fenêtre fille se déroulent complètement. Le plantage intervient après.

D'après le message d'erreur généré, mon problème semble se situer au niveau de la zone répétée mais où ?

Si quelqu'un as déjà eu ce souci ou à une idée du problème je suis preneur.
N'hésitez pas si vous avez des questions ou si je n'ai pas été claire sur certains points.

Merci a vous de prendre un peu de temps.

message d'erreur :
06-24 12:39:44.169  8528  8528 E AndroidRuntime: FATAL EXCEPTION: main
06-24 12:39:44.169  8528  8528 E AndroidRuntime: Process: com.XXXX.YYYY, PID: 8528
06-24 12:39:44.169  8528  8528 E AndroidRuntime: java.lang.NullPointerException: Attempt to invoke virtual method 'int fr.pcsoft.wdjava.ui.champs.qb._getEtat()' on a null object reference
06-24 12:39:44.169  8528  8528 E AndroidRuntime:        at fr.pcsoft.wdjava.ui.champs.zr.lc.e(Unknown Source:4)
06-24 12:39:44.169  8528  8528 E AndroidRuntime:        at fr.pcsoft.wdjava.ui.champs.zr.lc.onInterceptTouchEvent(Unknown Source:0)
06-24 12:39:44.169  8528  8528 E AndroidRuntime:        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2511)
06-24 12:39:44.169  8528  8528 E AndroidRuntime:        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2942)
06-24 12:39:44.169  8528  8528 E AndroidRuntime:        at android.view.ViewGroup.dispatchTouchEvent(ViewGroup.java:2657)
06-24 12:39:44.169  8528  8528 E AndroidRuntime:        at android.view.ViewGroup.dispatchTransformedTouchEvent(ViewGroup.java:2942)
06-24 12:39:44.169  8528  8528 E AndroidRuntime:        at android.view.ViewGroup.cancelAndClearTouchTargets(ViewGroup.java:2792)
06-24 12:39:44.169  8528  8528 E AndroidRuntime:        at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3677)
06-24 12:39:44.169  8528  8528 E AndroidRuntime:        at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3697)
06-24 12:39:44.169  8528  8528 E AndroidRuntime:        at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3697)
06-24 12:39:44.169  8528  8528 E AndroidRuntime:        at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3697)
06-24 12:39:44.169  8528  8528 E AndroidRuntime:        at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3697)
06-24 12:39:44.169  8528  8528 E AndroidRuntime:        at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3697)
06-24 12:39:44.169  8528  8528 E AndroidRuntime:        at android.view.ViewGroup.dispatchDetachedFromWindow(ViewGroup.java:3697)
06-24 12:39:44.169  8528  8528 E AndroidRuntime:        at android.view.ViewRootImpl.dispatchDetachedFromWindow(ViewRootImpl.java:3495)
06-24 12:39:44.169  8528  8528 E AndroidRuntime:        at android.view.ViewRootImpl.doDie(ViewRootImpl.java:6367)
06-24 12:39:44.169  8528  8528 E AndroidRuntime:        at android.view.ViewRootImpl.die(ViewRootImpl.java:6344)
06-24 12:39:44.169  8528  8528 E AndroidRuntime:        at android.view.WindowManagerGlobal.removeViewLocked(WindowManagerGlobal.java:468)
06-24 12:39:44.169  8528  8528 E AndroidRuntime:        at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:406)
06-24 12:39:44.169  8528  8528 E AndroidRuntime:        at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:126)
06-24 12:39:44.169  8528  8528 E AndroidRuntime:        at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:4436)
06-24 12:39:44.169  8528  8528 E AndroidRuntime:        at android.app.ActivityThread.-wrap5(Unknown Source:0)
06-24 12:39:44.169  8528  8528 E AndroidRuntime:        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1662)
06-24 12:39:44.169  8528  8528 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:106)
06-24 12:39:44.169  8528  8528 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:164)
06-24 12:39:44.169  8528  8528 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:6528)
06-24 12:39:44.169  8528  8528 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
06-24 12:39:44.169  8528  8528 E AndroidRuntime:        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438)
06-24 12:39:44.169  8528  8528 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807)
06-24 12:39:45.358  1679  1689 I ActivityManager: START u0 {act=android.intent.action.CHOOSER cmp=android/com.android.internal.app.ChooserActivity (has extras)} from uid 10186
06-24 12:39:45.411  1679  2114 I WindowManager: WIN DEATH: Window{43d7496 u0 com.XXXX.YYYY/com.XXXX.YYYY.wdgen.GWDFFEN_COND_LIST$WDActiviteFenetre EXITING}
06-24 12:39:45.412  1679  2625 I ActivityManager: Process com.XXXX.YYYY (pid 8528) has died: fore TOP
06-24 12:39:45.413  1679  2626 I WindowManager: WIN DEATH: Window{fc675f5 u0 com.XXXX.YYYY/com.XXXX.YYYY.wdgen.GWDFFEN_COND_LIST$WDActiviteFenetre}
06-24 12:39:45.413  1679  2625 W ActivityManager: Exception when unbinding service com.XXXX.YYYY/org.chromium.content.app.SandboxedProcessService0
06-24 12:39:45.413  1679  2625 W ActivityManager: android.os.DeadObjectException
06-24 12:39:45.413  1679  2625 W ActivityManager:       at android.os.BinderProxy.transactNative(Native Method)
06-24 12:39:45.413  1679  2625 W ActivityManager:       at android.os.BinderProxy.transact(Binder.java:764)
06-24 12:39:45.413  1679  2625 W ActivityManager:       at android.app.IApplicationThread$Stub$Proxy.scheduleUnbindService(IApplicationThread.java:1508)
06-24 12:39:45.413  1679  2625 W ActivityManager:       at com.android.server.am.ActiveServices.removeConnectionLocked(ActiveServices.java:2723)
06-24 12:39:45.413  1679  2625 W ActivityManager:       at com.android.server.am.ActiveServices.killServicesLocked(ActiveServices.java:3122)
06-24 12:39:45.413  1679  2625 W ActivityManager:       at com.android.server.am.ActivityManagerService.cleanUpApplicationRecordLocked(ActivityManagerService.java:18354)
06-24 12:39:45.413  1679  2625 W ActivityManager:       at com.android.server.am.ActivityManagerService.handleAppDiedLocked(ActivityManagerService.java:5492)
06-24 12:39:45.413  1679  2625 W ActivityManager:       at com.android.server.am.ActivityManagerService.appDiedLocked(ActivityManagerService.java:5687)
06-24 12:39:45.413  1679  2625 W ActivityManager:       at com.android.server.am.ActivityManagerService$AppDeathRecipient.binderDied(ActivityManagerService.java:1652)
06-24 12:39:45.413  1679  2625 W ActivityManager:       at android.os.BinderProxy.sendDeathNotice(Binder.java:844)
06-24 12:39:45.415  1679  2551 I WindowManager: WIN DEATH: Window{bb53455 u0 com.XXXX.YYYY/com.XXXX.YYYY.wdgen.GWDFFEN_COND_DETAIL$WDActiviteFenetre}
06-24 12:39:45.418  1679  2641 I WindowManager: WIN DEATH: Window{60be191 u0 com.XXXX.YYYY/com.XXXX.YYYY.wdgen.GWDFFEN_MENU$WDActiviteFenetre}
06-24 12:39:45.420  1679  2042 I WindowManager: WIN DEATH: Window{4a23fb4 u0 com.XXXX.YYYY/com.XXXX.YYYY.wdgen.GWDFFEN_Login$WDActiviteFenetre}
Registered member
326 messages
Popularité : +5 (5 votes)
Posted on July, 02 2020 - 5:05 PM
Bonjour.

As-tu un reprisesaisie à la fin de ton traitement de retour d'une fenêtre fille ?
As-tu des traitements qui se déclenchent à la prise de focus d'un champ ?

Quand tu indique que le phénomène de reproduit souvent, est-ce que c'est systématique si tu balaye la même ligne plusieurs fois ?
Ou bien même sur une même ligne cela se produit "plus ou moins aléatoire" ?
Y a-t-il une ligne sur laquelle cela ne se produit jamais ?
A l'ouverture de la fenêtre fille, mets-tu à jour un champs de la fenêtre ou une variable globale ?

Le problème peut provenir de plusieures causes, ça serait bien d'avoir un peu plus de détails concernant ton traitement.
Posted on July, 03 2020 - 9:46 AM
Bonjour et merci a toi de prendre un peu de temps pour essayer de résoudre mon souci.

Pour te répondre,
je n'ai pas de reprise saisie, tous les traitements sont déclenchés via des clics boutons et des balayages dans des zones répétées. J'ai aussi un traitement sur la modification d'un champ texte pour la lecture de code-barres.
A l'ouverture de la fenêtre fille j'ai un traitement de mise jour de l'interface. Et sur le traitement "fermeture d'une fenêtre fille" j'ai un traitement de mise à jour de la fenêtre mère.
Le phénomène semble être aléatoire, certains opérateurs vont l'avoir systématiquement, alors que d'autres occasionnellement. J'ai fait différents tests en interchangeant les devices entre les utilisateurs pour voir s'il y avait une évolution, mais non. Ceux pour lesquelles le problème est systématique reste systématique même après changement. Idem pour ceux pour lesquelles c'est occasionnel.
Pour ce qui est des lignes, c'est pareil, en général dans ma zone répétée j'ai 1 ou 2 lignes (parfois plus). Et certains ont plus souvent les soucis sur la 2nd alors que d'autres l'ont sur toutes.

Quand tu dis "A l'ouverture de la fenêtre fille, mets-tu à jour un champ de la fenêtre ou une variable globale ?"
Oui, je mets à jours l'interface avec mes données. Cela t'évoque quelque chose?
Registered member
326 messages
Popularité : +5 (5 votes)
Posted on July, 06 2020 - 9:57 AM
Bonjour.

Cela me parait compliqué comme ça, à distance sans connaître ton code.

Une question : est-ce que tu as un bouton qui ferme la fenêtre ou bien est-ce que l'utilisateur appuie sur la flèche retour standard en haut à gauche ?

Je demande ça car peut-être qu'un utilisateur appuie sur la flèche au lieu d'un bouton spécial que tu aurais ajouté et qui exécuterait des traitements.
Or en appuyant sur la flèche, ces traitements (et/ou mises à jour interface, etc...) ne s'exécuteraient pas.

C'est juste une idée en passant hein, j'ai personnellement été tellement de fois confronté à ce genre de pb très embêtants qui font perdre énormément de temps que j'ai envie de t'aider ;-)

Et en positionnant des "info()" avec valeurs de variables et/ou champs, tu arrive à mieux localiser le problème ?
Posted on July, 06 2020 - 1:46 PM
Bonjour,

Je gère le back android avec un bouton de type "abandon" afin d'avoir le même comportement entre ce bouton android et mes boutons retours.
Cela dit, dans mon cas, ce traitement n'est pas exécuté car c'est un bouton de type "normal" qui ferme ma fenêtre (validation des informations).

Pour ce qui est de positionner des info() j'ai déjà tester notamment avec des traces, et tous les codes sont bien exécutes (code du bouton, code fermerture de la fenêtre et code fermeture d'une fenêtre fille)
Posted on July, 09 2020 - 9:31 AM
Bonjour,

Il semblerais que j'ai trouvé la solution a mon problème !!

Comme je le disait, j'ai une fenêtre mère et un fille. Sur la fenêtre mère je mettais à jour l'interface dans la section "Fermeture d'une fenêtre fille".
J'ai simplement déplacer la mise a jour de mon interface dans "Prise de focus". Cela semble avoir totalement résolu mon problème.

Merci a toi d'avoir pris un peu de temps pour m'aider