我的应用程序设计是这样的,我有一个sqlite数据库,以及一个在Loader的帮助下从数据库呈现数据的片段。
要启动我的应用程序,在活动A中,我将首先显示欢迎屏幕,验证用户,在活动A实例的帮助下初始化数据库然后我完成它。我将完成()此活动,因为从活动B开始,如果用户按下后退按钮,它应该自己结束。
稍后我将转到第二个屏幕,即活动B.这里我将在加载程序(cwac by commonsware)&帮助下加载数据。显示内容。
如果用户按下主页按钮,并在一段时间后恢复。我的应用程序崩溃,但崩溃日志只是说
06-04 20:39:52.569: W/dalvikvm(18544): threadid=11: thread exiting with uncaught exception (group=0x40c68a68)
06-04 20:39:52.569: W/dalvikvm(18544): threadid=12: thread exiting with uncaught exception (group=0x40c68a68)
检查我是否输入了日志消息&我知道数据库处理程序是NULL和&偶数活动对象也是NULL。这是因为在启动活动B时,我将完成A活动。
要测试,我刚刚删除了活动A中的finish(),我的应用程序仍然崩溃了。只是它说未处理的例外。 DB对象是NULL&活动对象也是..
注意:即使我删除了活动A上的finish(),也只调查活动B调用的实例,但不是A 如何处理这些场景。?
答案 0 :(得分:2)
如果用户按下主页按钮,并在一段时间后恢复。我的应用程序崩溃,但崩溃日志只是说
应该有一个与错误相关联的Java堆栈跟踪,而不仅仅是一些警告。
知道数据库处理程序是否为NULL
我假设“DB处理程序”是一个单例。这表示您的进程在后台处理时已终止。这对于Android来说是完全正常的行为。
偶数活动对象也是NULL
不应该 “活动A对象”。不要将Activity
放在静态数据成员中。
如何处理这些情况。?
了解您的流程可以随时因任何原因终止。如果用户通过启动器图标以外的其他内容(例如,通过最近任务列表)返回到您的应用,Android将尝试将用户返回到用户在您的应用程序中的位置。这意味着不一定要创建活动A.你需要处理这种情况。