J'ai un tas d'activités A-> B-> C-> D et ils fonctionnent tous bien. Je les ai testés avec et sans internet, plusieurs configurations et j'ai déclenché l'écran pour faire pivoter chacun d'eux pour voir s'ils allaient tomber en panne. Mais sur mon téléphone Android (pas émulateur), après un certain temps que l'application est en arrière-plan, si je l'ouvre (soit par mes récents ou par mon menu principal), je reçois une série de accidents inexplicables. C'est littéralement l'activité D se bloque, va à C. C se bloque, va à B. B se bloque, va à A. A se bloque, se réinitialise, et s'ouvre bien. Ça me rend fou.Android: plantages inexpliqués lorsque l'application est rouverte après un certain temps
Il est toujours NullPointerException
sur des objets, comme ceux-ci:
java.lang.RuntimeException: Unable to start activity ComponentInfo{net.getfoodie.foodie/net.getfoodie.foodie.ui.exploremenu.MenuFragmentActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2305)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2363)
at android.app.ActivityThread.access$900(ActivityThread.java:161)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1265)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:157)
at android.app.ActivityThread.main(ActivityThread.java:5356)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1265)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1081)
at de.robv.android.xposed.XposedBridge.main(XposedBridge.java:132)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.NullPointerException
at net.getfoodie.foodie.ui.exploremenu.MenuGridAdapter.<init>(MenuGridAdapter.java:71)
at net.getfoodie.foodie.ui.exploremenu.MenuFragment.onActivityCreated(MenuFragment.java:75)
at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1794)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:967)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1126)
at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1108)
at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1917)
at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:544)
at net.getfoodie.foodie.ui.exploremenu.MenuFragmentActivity.onStart(MenuFragmentActivity.java:89)
at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1189)
at android.app.Activity.performStart(Activity.java:5436)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2278)
... 12 more
Et par exemple, l'erreur est au-dessus en raison d'un objet nul du sdk d'analyse syntaxique. Mais l'objet a déjà été récupéré pendant l'OnCreate de l'activité, et je suppose qu'il se perd lorsque l'activité est recréée? bien que je m'assure que je le prends dans mon OnCreate()
, et j'ai testé la rotation?
Selon vous, à quoi cela est-il dû? Est-ce qu'il me manque quelque chose dans le cycle de vie de mon application? Et plus important encore, comment puis-je déclencher l'activité kill/sleep sur mon émulateur Android afin que je puisse reproduire le problème et essayer de le réparer?
Pouvez-vous publier le code à partir de 'net.getfoodie.foodie.ui.exploremenu.MenuGridAdapter'? Il y a une exception nullpointer quelque part. 'MenuFragment.onActivityCreated' serait également utile. –
@JamesMcCracken Je pourrais mais ils sont assez gros (500 lignes de code ici). La chose est, chaque fois que j'en fixe un, un nouveau apparaît plus tard. Mais je ne peux pas déclencher ces erreurs sur mon émulateur, c'est le vrai problème ... – Stephane
Si vous obtenez cette erreur après avoir revenir à votre application après une longue période, votre application a probablement été complètement détruite. Ceci est différent de simplement tourner un écran et avoir une activité recréée. Il recrée l'ensemble de votre application afin que les données utilisées par l'activité, stockées dans un seul ou de manière statique, ne soient pas présentes tant que vous ne les avez pas remplies. –