2012-04-16 106 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

相关问题