2014-07-08 58 views
0

我有一個有很多活動和服務的android應用程序。如果我打開另一個應用程序,而我的應用程序運行和Android需要資源殺死了我的申請,我收到空指針異常錯誤信息是這樣的:控制android如何殺死我的應用程序

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) 

我想如果機器人殺死我的活動來檢測,但搜索,我發現,沒有方法來做到這一點。

至少可以避免在設備屏幕上顯示錯誤信息嗎?我寧願應用程序以無聲方式崩潰。

感謝

+1

如果你看到一個空指針異常,你有一個編程錯誤,你需要修復它。這不是Android關閉你,你正在崩潰。你不會發布足夠的信息來爲你解決它。發佈完整的logcat。 –

+0

如果系統殺死我的應用程序,我會看到空指針。如果我關閉應用程序一切正常。 – Plebios

+0

只要Android不會猛烈地謀殺你的應用程序(例如拔出電池),就會一直調用'onPause()'方法,這樣你就可以使用它來清理應用程序,以防它死亡。 – Josh

回答

1

有沒有辦法從殺死你的服務/進程,如果它是需要更多的資源的停止Android系統。在這種情況下,您需要使用onPause()和onDestroy()方法關閉您可能不需要的任何服務,並儘可能多地將資源釋放回Android。

然後,您必須利用onResume()來確保在應用程序處於焦點時適當的活動/服務存在。這可能有助於消除NullPointerException和崩潰。