扩展应用程序类 - 重启Android时强制关闭

时间:2012-04-16 13:16:12

标签: android-manifest android

我的AppMain班[我的班级名称]扩展了我的应用中的Application班级。有一些Globals。 我在清单里面提到过。和我的应用程序运行正常。我的应用中有退出按钮,可以使用System.exit(0);退出。

之后,当我使用最近的应用选项启动我的应用时,它就崩溃了。 (仅供参考。按住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

这是因为从最近的apps.DB开始,应用程序不是从启动时开始的System.exit(0);,因此显示空指针异常。

更新

应用程序强制已关闭,因为我将启动画面和主屏幕活动属性设置为Single Task。删除后,它工作正常。

1 个答案:

答案 0 :(得分:0)

如果应用程序没有消耗处理器时间(运行服务或向用户提供Activity),则该应用程序实际上并未运行。它可能在内存中,但Android的内存管理模型是这样设计的,如果其他东西需要内存,应用程序将被杀死。 onPause表示您可能很快退出,onDestroy应释放退出按钮所需的任何资源。

如果您绝对必须退出,则可以改为使用finish(),和/或尝试使用清单中的excludeFromRecentsnoHistory标记来避免崩溃。你也可以和其他几个人一起玩。

请参阅this question和开发人员文档的Process Lifecycle section