2012-04-16 113 views
0

我有我的AppMain類[我的課程名稱],在我的應用程序中擴展Application類。那有一些Globals。 我在清單中提到過。和我的應用程序正常運行。我在我的應用程序退出按鈕退出它使用System.exit(0);擴展應用程序類 - 強制關閉重新啓動Android

之後,當我啓動我的應用程序使用最近的應用程序選項,它只是墜毀。 (按住Home鍵,最近的應用程序將出現)

開始應用程序應用程序列表這是好的。

我該如何解決這個問題?

我的清單的下面部分:

<application 
     android:name=".activity.MainApp" 
     android:debuggable="false" 
     android:icon="@drawable/icon" 
     android:label="@string/app_name" 
     android:theme="@android:style/Theme.NoTitleBar" > 

編輯:

崩潰日誌:

04-16 19:04:59.416: E/AndroidRuntime(19649): FATAL EXCEPTION: main 
04-16 19:04:59.416: E/AndroidRuntime(19649): java.lang.RuntimeException: Unable to resume activity {xxx.xxx.xxx..HomeActvity}: java.lang.NullPointerException 
04-16 19:04:59.416: E/AndroidRuntime(19649): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3128) 
04-16 19:04:59.416: E/AndroidRuntime(19649): at android.app.ActivityThread.handleResumeActivity(ActivityThread.java:3143) 
04-16 19:04:59.416: E/AndroidRuntime(19649): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2684) 
04-16 19:04:59.416: E/AndroidRuntime(19649): at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
04-16 19:04:59.416: E/AndroidRuntime(19649): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
04-16 19:04:59.416: E/AndroidRuntime(19649): at android.os.Handler.dispatchMessage(Handler.java:99) 
04-16 19:04:59.416: E/AndroidRuntime(19649): at android.os.Looper.loop(Looper.java:123) 
04-16 19:04:59.416: E/AndroidRuntime(19649): at android.app.ActivityThread.main(ActivityThread.java:4627) 
04-16 19:04:59.416: E/AndroidRuntime(19649): at java.lang.reflect.Method.invokeNative(Native Method) 
04-16 19:04:59.416: E/AndroidRuntime(19649): at java.lang.reflect.Method.invoke(Method.java:521) 
04-16 19:04:59.416: E/AndroidRuntime(19649): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:858) 
04-16 19:04:59.416: E/AndroidRuntime(19649): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:616) 
04-16 19:04:59.416: E/AndroidRuntime(19649): at dalvik.system.NativeStart.main(Native Method) 
04-16 19:04:59.416: E/AndroidRuntime(19649): Caused by: java.lang.NullPointerException 
04-16 19:04:59.416: E/AndroidRuntime(19649): at com.xxx.xxxx.xxx.DatabaseManager.selectFieldsFrom(DatabaseManager.java:161) 
04-16 19:04:59.416: E/AndroidRuntime(19649): at com.xxx.xxxx.xxx.DBUtils.retrieveFromStore(DBUtils.java:75) 
04-16 19:04:59.416: E/AndroidRuntime(19649): at com.xxx.xxxx.xxx.DBController.getAllWishList(DBController.java:407) 
04-16 19:04:59.416: E/AndroidRuntime(19649): at xxx.xxxx.xxx.HomeActvity.retrieveFromListTable(HomeActvity.java:441) 
04-16 19:04:59.416: E/AndroidRuntime(19649): at xxx.xxxx.xxx.HomeActvity.onResume(HomeActvity.java:642) 
04-16 19:04:59.416: E/AndroidRuntime(19649): at android.app.Instrumentation.callActivityOnResume(Instrumentation.java:1149) 
04-16 19:04:59.416: E/AndroidRuntime(19649): at android.app.Activity.performResume(Activity.java:3823) 
04-16 19:04:59.416: E/AndroidRuntime(19649): at android.app.ActivityThread.performResumeActivity(ActivityThread.java:3118) 
04-16 19:04:59.416: E/AndroidRuntime(19649): ... 12 more 

這是因爲應用程序不會從飛濺從最近的應用程序啓動時開始。 DB在System.exit(0);上發佈,因此顯示空指針異常。

UPDATE:

該應用程序強制關閉,因爲我設置開機畫面和主畫面的活動屬性Single Task。刪除後它工作正常。

+1

什麼是崩潰日誌? – 2012-04-16 13:19:08

+5

用'finish()'交換'System.exit(0);'或者全部刪除。應用程序不需要退出按鈕。 – zapl 2012-04-16 13:19:30

+0

@zapl他們需要退出按鈕,如果它處理一些資源釋放,默認情況下,當有足夠的操作內存可用時,android應用程序被存儲在內存中,當系統需要資源時它們被釋放 – 2012-04-16 13:23:58

回答

0

如果應用程序不佔用處理器時間(運行服務或向用戶呈現Activity),該應用程序並未實際運行。它可能在內存中,但Android的內存管理模型是這樣設計的,如果有其他需要內存的應用程序將被殺死。 是一個很好的跡象表明您可能很快就會退出,並且onDestroy應該釋放退出按鈕所需的任何資源。

如果您絕對必須退出,您可以改爲使用finish(),和/或嘗試在清單中使用excludeFromRecentsnoHistory標誌以避免崩潰。還應該有其他幾個人可以玩。

請參閱this questionProcess Lifecycle section的開發人員文檔。

+0

如何設置非史詩旗幟? – 2012-04-16 13:59:23

+0

它在清單的''元素中:http://developer.android.com/guide/topics/manifest/activity-element.html但是你應該重新評估你的設計,或者告訴我們更多關於它的信息,所以我們可以建議替代品。 – 2012-04-16 15:52:43

相關問題