我遇到的问题是,当我运行我的android应用程序时,如果我遇到强制关闭错误,或者在调试模式下使用断点暂停应用程序,然后按“停止”,应用程序不会退出,相反,我的活动堆栈中的第一个活动是打开的,但它处于非常有but的状态。该活动是一个图书图书馆,当它在强制关闭或停止后打开时,所有用户的图书都消失了,选项菜单上的标签也消失了(尽管图标仍然在那里),并且几乎所有的操作都会导致强制关闭。
所以基本上我想知道为什么在调试模式下停止应用程序,或者进入强制关闭状态并不能关闭整个应用程序,而是在一个非常有buggy的状态下打开第一个活动。
我不能给出具体的代码,因为强制关闭只发生了一次,而且我没有得到堆栈跟踪。我意识到这是一个非常普遍的问题,我理解如果它的信息太少,我只是想看看是否有人遇到过类似的情况。
编辑:看起来好像强制关闭只是关闭当前的活动,并尝试打开堆栈上的前一个活动。然而,不知何故,我的应用程序上下文正在被破坏,所以当前面的活动打开并在应用程序上下文中查找信息时,例如用户图书馆中的书籍,那里什么都没有。
发布于 2011-08-22 17:30:21
当你遇到强制关闭时,你的应用程序的进程就会被杀死。如果您的活动堆栈在崩溃的活动之后有一个活动,那么它将在一个新的进程中重新启动。当进程终止时,应用程序上下文也会终止。新流程创建了一个新的应用程序上下文,这就是为什么您在其中看不到数据的原因。
有关这方面的讨论,请参阅http://groups.google.com/group/android-developers/browse_thread/thread/b274cfa64b17f535?pli=1。
解决特定问题的一种方法是在Application对象中添加一个标志,在加载共享数据后将其显式设置为true。然后,您可以在活动的onCreate()中检查此标志,以确认数据可用。如果该标志为false,则可以调用finish()
发布于 2011-08-15 17:05:37
这在我身上已经发生过几次了。我注意到,当我有一堆活动时,我在没有关闭第一个活动的情况下启动了第二个活动,那么在第二个活动上的“强制关闭”只会停止第二个活动。由于第一个活动仍在运行,因此它走到了前列。
举例说明。活动A正在运行。点击按钮打开活动B (我没有完成()活动A)活动B由于某种原因“强制关闭”。活动A进入视线,因为它仍在运行。
https://stackoverflow.com/questions/7067994
复制