PapillonApp / Papillon

Une alternative open source aux applis de vie scolaire. L'allié de tous les étudiants. Le futur de l'éducation numérique libre et ouverte.
https://papillon.bzh
GNU General Public License v3.0
114 stars 42 forks source link

fix crashing when restoring from background #320

Closed LeGeek01 closed 2 weeks ago

LeGeek01 commented 1 month ago

🚀 Nouvelle Pull Request

Proposez vos modifications pour améliorer Papillon

Informations importantes

Merci de vous référer à la documentation sur la contribution si vous avez des questions à propos des pull requests (https://gitbook.getpapillon.xyz/organisation/outils-internes/github)

Checklist d'avant pull request

Veuillez cocher toutes les cases applicables en remplaçant [ ] par [x].

Changelogs proposés

Lors-ce que l'appli est passée en background (quand on la quitte sans la fermer complètement) et qu'on la redémarre alors qu'android l'a arrêté, android va vouloir restaurer les écrans de celle-ci sauf que cela fait crash l'appli :

java.lang.IllegalStateException: Screen fragments should never be restored. Follow instructions from https://github.com/software-mansion/react-native-screens/issues/17 to properly configure your main activity.

J'ai donc corrigé cela en faisant en sorte que lors-ce que l'activité est créée, elle soit créée de 0. Après avoir testé en off cette solution et avoir vu qu'elle fonctionne, j'ai publié une version de l'appli avec ce fix sur le play store, reste à voir via la console play store si le nombre de crash descend.

Informations supplémentaires

Étant donné que l'on créée l'activité de 0, quand on la rouvre elle redémarre de 0 (donc écran d'accueil), ce qui pourra potentiellement altérer aux suggestions de faire retourner l'appli à l'écran auquel on l'a laissé...

Gabriel29306 commented 1 month ago

J'ai pas ce problème (j'ai testé en forçant l'arrêt sans fermé l'app). Par contre je ne sais pas comment on peut le déclencher manuellement sinon. (7.3.0 de GitHub)

LeGeek01 commented 1 month ago

en forçant l'arrêt tu fermes l'appli, moi je dis bien de la laisser se fermer toute seule par android

Kgeek33 commented 4 weeks ago

Pour déclencher ce problème, il faut déjà avoir une version de Papillon < 7.3 (corrigé sur la 7.3)

Ensuite, soit t'as un téléphone qui ferme les applis en arrière plan au bout d'un certain temps. Soit tu change d'orientation de l'app sur une tablette En fait, c'est l'issue suivante -> #251

Screenshot_2024-10-30-11-58-41-943_com.miui.securitycenter-edit.jpg

Gabriel29306 commented 4 weeks ago

J'ai la 7.3.0 et j'ai réussi à obtenir le même problème. J'ai arrêté le service de l'app.

10-30 13:11:38.267 23890 23890 E AndroidRuntime: FATAL EXCEPTION: main
10-30 13:11:38.267 23890 23890 E AndroidRuntime: Process: xyz.getpapillon.app, PID: 23890
10-30 13:11:38.267 23890 23890 E AndroidRuntime: java.lang.RuntimeException: Unable to start activity ComponentInfo{xyz.getpapillon.app/xyz.getpapillon.app.MainActivity}: androidx.fragment.app.Fragment$InstantiationException: Unable to instantiate fragment com.swmansion.rnscreens.ScreenStackFragment: calling Fragment constructor caused an exception
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4172)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:4330)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at android.app.servertransaction.LaunchActivityItem.execute(LaunchActivityItem.java:103)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:139)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:96)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2693)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at android.os.Handler.dispatchMessage(Handler.java:106)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at android.os.Looper.loopOnce(Looper.java:230)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at android.os.Looper.loop(Looper.java:319)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at android.app.ActivityThread.main(ActivityThread.java:9063)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at java.lang.reflect.Method.invoke(Native Method)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:588)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1103)
10-30 13:11:38.267 23890 23890 E AndroidRuntime: Caused by: androidx.fragment.app.Fragment$InstantiationException: Unable to instantiate fragment com.swmansion.rnscreens.ScreenStackFragment: calling Fragment constructor caused an exception
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at androidx.fragment.app.Fragment.instantiate(Fragment.java:631)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at androidx.fragment.app.FragmentContainer.instantiate(FragmentContainer.java:57)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at androidx.fragment.app.FragmentManager$3.instantiate(FragmentManager.java:483)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at androidx.fragment.app.FragmentStateManager.<init>(FragmentStateManager.java:85)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at androidx.fragment.app.FragmentManager.restoreSaveState(FragmentManager.java:2728)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at androidx.fragment.app.FragmentController.restoreSaveState(FragmentController.java:198)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at androidx.fragment.app.FragmentActivity$2.onContextAvailable(FragmentActivity.java:149)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at androidx.activity.contextaware.ContextAwareHelper.dispatchOnContextAvailable(ContextAwareHelper.kt:84)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at androidx.activity.ComponentActivity.onCreate(ComponentActivity.java:378)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at androidx.fragment.app.FragmentActivity.onCreate(FragmentActivity.java:273)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at com.facebook.react.ReactActivity.onCreate(ReactActivity.java:46)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at xyz.getpapillon.app.MainActivity.onCreate(MainActivity.kt:21)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at android.app.Activity.performCreate(Activity.java:9001)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at android.app.Activity.performCreate(Activity.java:8970)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1456)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:4154)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        ... 12 more
10-30 13:11:38.267 23890 23890 E AndroidRuntime: Caused by: java.lang.reflect.InvocationTargetException
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at java.lang.reflect.Constructor.newInstance0(Native Method)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at java.lang.reflect.Constructor.newInstance(Constructor.java:343)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at androidx.fragment.app.Fragment.instantiate(Fragment.java:613)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        ... 27 more
10-30 13:11:38.267 23890 23890 E AndroidRuntime: Caused by: java.lang.IllegalStateException: Screen fragments should never be restored. Follow instructions from https://github.com/software-mansion/react-native-screens/issues/17#issuecomment-424704067 to properly configure your main activity.
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at com.swmansion.rnscreens.ScreenFragment.<init>(ScreenFragment.kt:59)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        at com.swmansion.rnscreens.ScreenStackFragment.<init>(ScreenStackFragment.kt:38)
10-30 13:11:38.267 23890 23890 E AndroidRuntime:        ... 30 more
Kgeek33 commented 4 weeks ago

Ah je vais tester mtn pour voir

Kgeek33 commented 4 weeks ago

Je rencontre pas de problème perso

LeGeek01 commented 4 weeks ago

@Gabriel29306 et sur la version play store tu l'as le soucis ?

Gabriel29306 commented 4 weeks ago

J'ai testé que celle de GitHub, je vais essayer celle du play store

Kgeek33 commented 2 weeks ago

on en parle que @LeGeek01 a modifié une ligne, et qu'en 2 semaines, la PR n'est toujours pas merged ? elle n'a même pas été review 🤦‍♂️

LeGeek01 commented 2 weeks ago

écoute, c'est pas ma faute s'ils n'ont pas le temps de review

Kgeek33 commented 2 weeks ago

ils ont review plein d'autres pr en 2 semaines, je dis ça, je dis rien...

Kgeek33 commented 2 weeks ago

3 pr par exemple ajd, j'pense qu'il faut revoir le système de fonctionnement des pr au niveau des review

LeGeek01 commented 2 weeks ago

@Vexcited moyen de regarder ça stp