|
PROFESSIONAL NEWSGROUPS WINDEV, WEBDEV and WINDEV Mobile |
| | | | | |
Plantage entre l'init du projet et ouverture de la première fenêtre par défaut |
Started by Pascal BOULESTEIX, Feb., 06 2024 4:22 PM - 4 replies |
| |
| | | |
|
| |
Registered member 964 messages Popularité : +16 (20 votes) |
|
Posted on February, 06 2024 - 4:22 PM |
Bonjour Depuis longtemps, quand je (on?) lance mon application sur le téléphone (installé via playstore), il arrive, peu souvent, qu'elle plante et qu'un rapport d'erreur soit envoyé sur l'erreur "checkForComodification" (voir plus bas MSG1).
Ce message est ténébreux pour moi.
Je viens de lancer une campagne de fiabilisation de mon application et en mode Go sur l'appareil, j'ai là aussi un comportement bizarre.
1 - à la fin de l'init du projet, dans le logcat, je trouve une première erreur du style "Error receiving broadcast intent" (voir plus bas MSG2). 2 - dans le dixième de second qui suit, je trouve aussi dans le logcat quasiment le même message que l'on reçoit lors du démarrage de l'application installée sur le téléphone. (voir plus bas MSG3).
En parallèle du LOGCAT, dans WM, je constate les choses suivantes avec : 1 - point d'arrêt sur la dernière instruction de l'init du projet 2 - point d'arrêt sur la première ligne de code de init de la fenêtre par défaut. Au lancement du GO sur le téléphone, l'application s'arrête bien sur le point d'arrêt à la fin d'init du projet, si je continue en pas à pas détaillé, message d'erreur "Voulez-vous envoyer un rapport d'erreur" s'affiche. Sur le OK autorisant l'envoi, le code se positionne sur le point d'arrêt de la première fenêtre !
Notez que si je lance le mode GO sur le téléphone, sans points d'arrêts, la fenêtre proposant l'envoi du rapport d'erruer est visible une fraction de seconde avant que la première fenêtre ne soit affichée et "recouvre" cette proposition d'envoi de rapport.
Notez aussi que bien que j'ai demandé le mode strict avec arrêt sur toutes les erreurs, ces arrêts, s'il y en a, ne sont pas visible dans le corps du code.
Notez aussi, qu'à la différence du mode GO sur le téléphone, qui arrive, tant bien que mal à démarrer l'application, en mode exécution de l'application, si l'erreur de "checkForComodification" est interceptée, l'application s'arrête.
Créer un mini-projet pour reproduire ce bug est utopique mais, peut-être que vous pourriez me mettre sur des pistes pour comprendre et corriger ce comportement
J'espère que ces explications complexes auront aiguisé votre curiosité.
MSG1 :
===== Erreur ===== Date et heure=06/02/2024 12:43:19 Pile Java=java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:966) java.util.LinkedList$ListItr.next(LinkedList.java:888) fr.pcsoft.wdjava.core.context.WDContexte.a(SourceFile:0) fr.pcsoft.wdjava.core.context.c.a(SourceFile:0) fr.pcsoft.wdjava.core.context.c.c(SourceFile:0) fr.pcsoft.wdjava.core.context.WDAppelContexte.a(SourceFile:0) fr.pcsoft.wdjava.database.hf.WDHF_Contexte.c(SourceFile:0) fr.pcsoft.wdjava.database.hf.WDHF_Contexte.B(SourceFile:0) fr.pcsoft.wdjava.database.hf.WDHF_Manager.a(SourceFile:0) fr.pcsoft.wdjava.api.WDAPIHF.hAjoute(SourceFile:0) fr.pcsoft.wdjava.api.WDAPIHF.hAjoute(SourceFile:0) fr.saxrub.wnat.wdgen.GWDCPCOL_PROCEDURES_GLOBALES.fWD_gPROC_WRITE_LOG(GWDCPCOL_PROCEDURES_GLOBALES.java:2318) fr.saxrub.wnat.wdgen.GWDCPCOL_PROCEDURES_GLOBALES.fWD_gPROC_WRITE_LOG(GWDCPCOL_PROCEDURES_GLOBALES.java:2392) fr.saxrub.wnat.wdgen.GWDCPCOL_PROCEDURES_GLOBALES.fWD_gPROC_INTERNET_TEST_CONNECTION(GWDCPCOL_PROCEDURES_GLOBALES.java:10572) fr.saxrub.wnat.wdgen.GWDCPCOL_PROCEDURES_GLOBALES.fWD_gPROC_INIT_PROJET(GWDCPCOL_PROCEDURES_GLOBALES.java:14699) fr.saxrub.wnat.wdgen.GWDPWNAT_Mobile.trtInitProjet(GWDPWNAT_Mobile.java:2627) fr.pcsoft.wdjava.core.application.e.appelPCode(SourceFile:0) fr.pcsoft.wdjava.core.application.e.initialize(SourceFile:0) fr.pcsoft.wdjava.core.application.d.S(SourceFile:0) fr.pcsoft.wdjava.core.application.f.S(SourceFile:0) fr.pcsoft.wdjava.core.application.WDAbstractLanceur$b.a(SourceFile:0) fr.pcsoft.wdjava.core.application.WDAbstractLanceur$b.doInBackground(SourceFile:0) android.os.AsyncTask$3.call(AsyncTask.java:394) java.util.concurrent.FutureTask.run(FutureTask.java:266) android.os.AsyncTask$SerialExecutor$1.run(AsyncTask.java:305) java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167) java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641) java.lang.Thread.run(Thread.java:920) Thread=id=264 name=wm_task_init_projet priority=5 groupName=main
===== Application ===== Nom de l'application=GO WNat Version de l'application=28.4.19.0 Nom du package=fr.saxrub.wnat Date et heure de lancement=06/02/2024 12:43:08 Version du framework Android=28.0.221.0
===== Appareil ===== Modèle=SM-G975F Constructeur=samsung Marque=samsung
===== Système ===== Numéro de version d'Android=12 (Android12) Api Level Android=31 Mémoire de stockage interne totale=109,95 Go Mémoire de stockage interne disponible=39,25 Go Densité de l'écran=560 Résolution de l'écran=1440x3040
MSG2 ;
FATAL EXCEPTION: main Process: fr.saxrub.wnat.go, PID: 18320 java.lang.RuntimeException: Error receiving broadcast Intent { act=android.net.conn.CONNECTIVITY_CHANGE flg=0x4200010 (has extras) } in fr.pcsoft.wdjava.net.a$a@3f13092 at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0$LoadedApk$ReceiverDispatcher$Args(LoadedApk.java:1816) at android.app.LoadedApk$ReceiverDispatcher$Args$$ExternalSyntheticLambda0.run(Unknown Source:2) at android.os.Handler.handleCallback(Handler.java:938) at android.os.Handler.dispatchMessage(Handler.java:99) at android.os.Looper.loopOnce(Looper.java:226) at android.os.Looper.loop(Looper.java:313) at android.app.ActivityThread.main(ActivityThread.java:8751) at java.lang.reflect.Method.invoke(Native Method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571) at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135) Caused by: fr.pcsoft.wdjava.core.erreur.WDException: Erreur interne. at java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:966) at java.util.LinkedList$ListItr.next(LinkedList.java:888) at fr.pcsoft.wdjava.core.context.WDContexte.a(SourceFile:0) at fr.pcsoft.wdjava.core.context.c.a(SourceFile:0) at fr.pcsoft.wdjava.core.context.c.c(SourceFile:0) at fr.pcsoft.wdjava.core.context.WDAppelContexte.a(SourceFile:0) at fr.pcsoft.wdjava.database.hf.WDHF_Contexte.c(SourceFile:0) at fr.pcsoft.wdjava.database.hf.WDHF_Contexte.B(SourceFile:0) at fr.pcsoft.wdjava.database.hf.WDHF_Manager.e(SourceFile:0) at fr.pcsoft.wdjava.api.WDAPIHF.getFichierSansCasseNiAccent(SourceFile:0) at fr.saxrub.wnat.wdgen.GWDCPCOL_PROCEDURES_GLOBALES.fWD_gPROC_WRITE_LOG(GWDCPCOL_PROCEDURES_GLOBALES.java:2310) at fr.saxrub.wnat.wdgen.GWDCPCOL_PROCEDURES_GLOBALES.fWD_gPROC_WRITE_LOG(GWDCPCOL_PROCEDURES_GLOBALES.java:2392) at fr.saxrub.wnat.wdgen.GWDCPCOL_PROCEDURES_GLOBALES.fWD_gPROC_INTERNET_REFRESH(GWDCPCOL_PROCEDURES_GLOBALES.java:1087) at java.lang.reflect.Method.invoke(Native Method) at fr.pcsoft.wdjava.core.WDCallback.a(SourceFile:0) at fr.pcsoft.wdjava.core.WDCallback.execute(SourceFile:0) at fr.pcsoft.wdjava.core.WDCallback.execute(SourceFile:0) at fr.pcsoft.wdjava.core.WDCallback.execute(SourceFile:0) at fr.pcsoft.wdjava.net.a$a.onReceive(SourceFile:0) at android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0$LoadedApk$ReceiverDispatcher$Args(LoadedApk.java:1806) ... 9 more
MSG 3
===== Erreur ===== Date et heure=06/02/2024 14:01:55 Message=Erreur interne. Message système=java.util.ConcurrentModificationException Traitement=Procédure globale gPROC_INIT_PROJET Pile WLangage=Procédure globale gPROC_INIT_PROJET Initialisation de WNAT_Mobile Pile Java=java.util.LinkedList$ListItr.checkForComodification(LinkedList.java:966) java.util.LinkedList$ListItr.next(LinkedList.java:888) fr.pcsoft.wdjava.core.context.WDContexte.a(SourceFile:0) fr.pcsoft.wdjava.core.context.c.a(SourceFile:0) fr.pcsoft.wdjava.core.context.c.c(SourceFile:0) fr.pcsoft.wdjava.core.context.WDAppelContexte.a(SourceFile:0) fr.pcsoft.wdjava.database.hf.WDHF_Contexte.c(SourceFile:0) fr.pcsoft.wdjava.database.hf.WDHF_Contexte.B(SourceFile:0) fr.pcsoft.wdjava.database.hf.WDHF_Manager.e(SourceFile:0) fr.pcsoft.wdjava.api.WDAPIHF.getFichierSansCasseNiAccent(SourceFile:0) fr.saxrub.wnat.wdgen.GWDCPCOL_PROCEDURES_GLOBALES.fWD_gPROC_WRITE_LOG(GWDCPCOL_PROCEDURES_GLOBALES.java:2310) fr.saxrub.wnat.wdgen.GWDCPCOL_PROCEDURES_GLOBALES.fWD_gPROC_WRITE_LOG(GWDCPCOL_PROCEDURES_GLOBALES.java:2392) fr.saxrub.wnat.wdgen.GWDCPCOL_PROCEDURES_GLOBALES.fWD_gPROC_INTERNET_REFRESH(GWDCPCOL_PROCEDURES_GLOBALES.java:1087) java.lang.reflect.Method.invoke(Native Method) fr.pcsoft.wdjava.core.WDCallback.a(SourceFile:0) fr.pcsoft.wdjava.core.WDCallback.execute(SourceFile:0) fr.pcsoft.wdjava.core.WDCallback.execute(SourceFile:0) fr.pcsoft.wdjava.core.WDCallback.execute(SourceFile:0) fr.pcsoft.wdjava.net.a$a.onReceive(SourceFile:0) android.app.LoadedApk$ReceiverDispatcher$Args.lambda$getRunnable$0$LoadedApk$ReceiverDispatcher$Args(LoadedApk.java:1806) android.app.LoadedApk$ReceiverDispatcher$Args$$ExternalSyntheticLambda0.run(Unknown Source:2) android.os.Handler.handleCallback(Handler.java:938) android.os.Handler.dispatchMessage(Handler.java:99) android.os.Looper.loopOnce(Looper.java:226) android.os.Looper.loop(Looper.java:313) android.app.ActivityThread.main(ActivityThread.java:8751) java.lang.reflect.Method.invoke(Native Method) com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571) com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135) Thread=id=2 name=main priority=5 groupName=main
-- Pascal Boulesteix Applications Visiolittoral et WNat |
| |
| |
| | | |
|
| | |
| |
Registered member 120 messages |
|
Posted on February, 06 2024 - 5:19 PM |
Bonjour Pascal, J'ai déjà eu une erreur de ce type il y a quelques temps... Si je me rappelle bien, la cause était due au fait que je parcourais une liste ou un tableau (dans du code java) et que je modifiais son contenu en même temps (et surtout comme un crétin... je supprimais des lignes). Ce qui perturbait l'itération. J'avais résolu ce problème en parcourant la liste en sens inverse J'espère que ça pourra t'aider Fabrice |
| |
| |
| | | |
|
| | |
| |
Registered member 950 messages Popularité : +53 (63 votes) |
|
Posted on February, 07 2024 - 8:57 AM |
Bonjour,
Essaye de ne pas mettre ta fonction init dans code init de ton projet mais dans l'init de ta première page de ton projet.
Tu mets toutes tes variable dans l'init du projet mais les fonctions qui permet d'initialiser des variable dans l'init de la première page de ton projets
J'ai eu a peu près le même cas que toi sans trop comprendre, et quand j'ai fais ca j'ai plus eu de problème
nadroj |
| |
| |
| | | |
|
| | |
| |
Registered member 964 messages Popularité : +16 (20 votes) |
|
Posted on February, 07 2024 - 2:36 PM |
J'ai déjà essayé de mettre le code dans la première fenêtre ; retour arrière car le splashscrren ne restait affiché qu'une fraction de seconde et la fenêtre restait noire le temps de l'init de la première fenêtre
-- Pascal Boulesteix Applications Visiolittoral et WNat |
| |
| |
| | | |
|
| | |
| |
Registered member 328 messages |
|
Posted on February, 19 2024 - 8:51 AM |
Bonjour, Je rebondis sur ce que dit Ndrj : As-tu des traitements autres que des déclarations dans l'init du projet ? Je pense à des traitements qui, par exemple, seraient susceptibles de provoquer une demande d'autorisation. Ou bien qui lanceraient des traitement asynchrones incompatibles avec l'apparition de ta 1ère fenêtre entre temps. Pour ma part, j'ai totalement exclu tout traitement de l'init du projet.Message modified, February, 19 2024 - 8:52 AM |
| |
| |
| | | |
|
| | | | |
| | |
| | |
| |
|
|
|