2014-07-08 5 views
0

J'ai une application android avec beaucoup d'activités et de services. Si j'ouvre une autre application pendant que ma demande est en cours d'exécution et les ressources des besoins android tue ma demande et je reçois des messages d'erreur NullPointerException comme ceci:Contrôlez comment android tue mon application

07-08 18:14:48.567: E/AndroidRuntime(16300): FATAL EXCEPTION: main 
07-08 18:14:48.567: E/AndroidRuntime(16300): java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{icg.android.start/icg.android.web.CustomWebActivity}: java.lang.NullPointerException 
07-08 18:14:48.567: E/AndroidRuntime(16300): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1880) 
07-08 18:14:48.567: E/AndroidRuntime(16300): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1981) 
07-08 18:14:48.567: E/AndroidRuntime(16300): at android.app.ActivityThread.access$600(ActivityThread.java:123) 
07-08 18:14:48.567: E/AndroidRuntime(16300): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1147) 
07-08 18:14:48.567: E/AndroidRuntime(16300): at android.os.Handler.dispatchMessage(Handler.java:99) 
07-08 18:14:48.567: E/AndroidRuntime(16300): at android.os.Looper.loop(Looper.java:137) 
07-08 18:14:48.567: E/AndroidRuntime(16300): at android.app.ActivityThread.main(ActivityThread.java:4424) 
07-08 18:14:48.567: E/AndroidRuntime(16300): at java.lang.reflect.Method.invokeNative(Native Method) 
07-08 18:14:48.567: E/AndroidRuntime(16300): at java.lang.reflect.Method.invoke(Method.java:511) 
07-08 18:14:48.567: E/AndroidRuntime(16300): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
07-08 18:14:48.567: E/AndroidRuntime(16300): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
07-08 18:14:48.567: E/AndroidRuntime(16300): at dalvik.system.NativeStart.main(Native Method) 
07-08 18:14:48.567: E/AndroidRuntime(16300): Caused by: java.lang.NullPointerException 
07-08 18:14:48.567: E/AndroidRuntime(16300): at icg.guice.Dependencies.injectDependencies(Dependencies.java:238) 
07-08 18:14:48.567: E/AndroidRuntime(16300): at icg.guice.GuiceActivity.<init>(GuiceActivity.java:9) 
07-08 18:14:48.567: E/AndroidRuntime(16300): at icg.android.web.CustomWebActivity.<init>(CustomWebActivity.java:16) 
07-08 18:14:48.567: E/AndroidRuntime(16300): at java.lang.Class.newInstanceImpl(Native Method) 
07-08 18:14:48.567: E/AndroidRuntime(16300): at java.lang.Class.newInstance(Class.java:1319) 
07-08 18:14:48.567: E/AndroidRuntime(16300): at android.app.Instrumentation.newActivity(Instrumentation.java:1023) 
07-08 18:14:48.567: E/AndroidRuntime(16300): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1871) 

J'ai essayé de détecter si android tue mes activités, mais à la recherche, je trouve qu'il n'y a façon de le faire.

Au moins, est-il possible d'éviter d'afficher le message d'erreur sur l'écran de l'appareil? Je préfère que l'application se bloque silencieusement.

Merci

+1

Si vous voyez une exception de pointeur nul, vous avez une erreur de programmation et vous devez la réparer. Ce n'est pas Android qui vous ferme, vous vous plantez. Vous ne publiez pas suffisamment d'informations pour le résoudre pour vous. Postez votre logcat complet. –

+0

Je vois le pointeur null si le système tue mon application. Si je ferme l'application, tout va bien. – Plebios

+0

La méthode 'onPause()' est toujours appelée tant qu'Android ne tue pas violemment votre application (par exemple, retirez la batterie), vous pouvez donc l'utiliser pour nettoyer l'application au cas où elle serait détruite. – Josh

Répondre

1

Il n'y a pas moyen d'arrêter Android de tuer vos services/processus si elle est dans le besoin de plus de ressources. Dans ce cas, vous devez utiliser les méthodes onPause() et onDestroy() pour fermer tous les services dont vous n'avez pas besoin et libérer autant de ressources que possible sur Android.

Ensuite, vous devez utiliser onResume() pour vous assurer que les activités/services appropriés sont présents lorsque l'application est active. Cela pourrait aider à éliminer le NullPointerException et le plantage.

Questions connexes