第一次启动应用程序时,活动堆栈会保持重置状态

时间:2014-08-21 15:53:32

标签: android android-activity xamarin reset

我正在通过Xamarin为Android构建应用程序,而且我遇到了一个只在应用首次启动时才会出现的奇怪错误。该应用程序包含适度的状态信息,但目标是它应足以在短时间内保留在内存中(例如,如果用户接到电话,应用程序应在电话呼叫完成后正确恢复)无需保留其状态信息。

第一次,我将应用程序转移到设备,解压缩并安装它。当我第一次打开应用程序时,这一切似乎都能正常工作,直到我进入“家”。按钮,然后点击“应用”中的图标返回应用。菜单。当我这样做时,应用程序似乎没有实际终止,但整个活动堆栈已经重置,它再次显示默认活动。

但是,如果我关闭应用程序并在再次打开它之前完全终止它,那么它会按预期完全正常运行。

有谁知道造成这种情况的原因是什么?一个应用程序在首次启动时表现出与之后发布的不同行为似乎很奇怪。谢谢!

1 个答案:

答案 0 :(得分:0)

这将是一个答案,因为评论字段不允许这么多文字,但我对你的问题有一些反问题,我可以帮助澄清你的应用程序发生了什么。

使用Android上的Home按钮不会终止应用程序,而只是将应用程序置于后台。然而,Back按钮会终止Activity或致电Finish(),从而导致行为略有不同。

在这两种情况下,您在Bundle OnSaveInstanceState中输入的内容是您返回应用时在Bundle中获得的内容,如果它在此期间已被终止,则OnCreate

  

(..)目标是在短时间内保留在内存中应该足够(例如,如果用户接到电话,应用程序应该在电话呼叫完成后正确恢复),而无需坚持其国家信息。

你怎么建议这样做?当Android应用程序未在前台显示时,Android可随时终止您的应用程序。因此,OnSaveInstanceState中的保存状态对于任何想要保持某种状态的应用程序至关重要。你不能依赖它可能不会被终止的假设,它是否被终止是不同的设备,因为它们有多少堆空间,它们有多少RAM等等。所以你会遇到不同的行为不同的设备。

  

但是,如果我关闭应用程序并在再次打开它之前完全终止它,那么它会按预期完全正常运行。

你究竟是如何坚持状态的,因为只有当你终止你的申请时才会有效,你到底做了什么?