活动生命周期。当应用程序已经打开(折叠)正在关闭并在图标单击时重新启动?
Posted
技术标签:
【中文标题】活动生命周期。当应用程序已经打开(折叠)正在关闭并在图标单击时重新启动?【英文标题】:Activity Lifecycle. When application already opened (Collapsed) is closing and starting again on icon click? 【发布时间】:2018-05-17 17:53:57 【问题描述】:您能否向我解释一下为什么我当前的活动 (onStop
) 是转到 OnDestroy
事件并在单击界面中的应用程序图标后再次重新启动。
因此,我在保存用户数据时遇到了问题。我正在使用事件OnDestroy
询问用户是否要保存数据。由于我在折叠应用程序并再次单击它时发生了误解,我正在等待我的活动将所有数据包含在其中,但我看到了上一个活动的保存对话框,该对话框转到 onDestroy
事件。
其他应用程序不会这样。
我应该检查什么?
【问题讨论】:
呃....this icon in the interface
是什么?也许截图会有所帮助。
问题不清楚!
界面中的应用图标。很抱歉。
如果您的应用程序在后台(在最近的应用程序列表中)那么操作系统可以在内存管理周期中杀死它。这就是 OS 需要更多内存时发生的情况。再次启动该应用程序将使您进入您的第一个屏幕。 OnDestroy() 不保证在场景中调用。
或许你应该尝试使用onPause()
代替,onDestroy()
不保证被调用
【参考方案1】:
你的描述不是很清楚,所以我的回答可能对你没有帮助。
在此处研究应用生命周期:https://developer.android.com/guide/components/activities/activity-lifecycle.html
您的应用将在 onDestroy 之前进入 onStop。如果用户激活另一个应用程序,就会发生这种情况。 (因此用户可能不再看到您显示的任何提示,例如是否要求保存。)Android 可能会在此之后根据其规则选择销毁您的应用程序,即使用户单击应用程序图标再次启动它也是如此.
也许您可以测试如果用户切换回应用程序(不是单击图标)会发生什么,但使用“最近的应用程序”按钮并选择它。
【讨论】:
如果我从最近的应用程序调用该应用程序一切正常。我看到我的数据,没有调用 OnDestroy 事件。如果用户单击应用程序图标,我想达到同样的效果。我不明白的是为什么在这种情况下它会去 onDestroy 最后一个活动并开始一个新活动。 我认为这与 Android 的工作方式是一致的。它只会在需要时调用 onDestroy(例如,其他应用程序或活动所需的免费资源)。也许Android认为是因为用户点击了他们想要重启应用的图标。在这种情况下,它将破坏先前运行的实例 在其他未复制的应用上。以上是关于活动生命周期。当应用程序已经打开(折叠)正在关闭并在图标单击时重新启动?的主要内容,如果未能解决你的问题,请参考以下文章