gpt4 book ai didi

Android Intent 和内存

转载 作者:行者123 更新时间:2023-11-29 15:13:20 26 4
gpt4 key购买 nike

我想知道一件简单的事情。我正在制作一个 Android 应用程序,我开始自问内存使用情况。

当我调用新 Intent 时,Android 操作系统会做什么?

假设我有一个只有一个按钮的 Intent ,这个按钮的 onclickmethod 正在为同一 Activity 创建一个新的 Intent 。

如果点击我这样做??

Intent activityN = new Intent(Activity.this,Activity.class);
startActivity(activityN);

firstActivity 是被杀死了还是 android 保留了它?

如果我点击 50 次??

感谢您的回答

最佳答案

Activity 生命周期是一个棘手的话题。

在大多数情况下, Activity 将保存在内存中,但在某些情况下,Android 可能会决定销毁它以回收资源。您无法控制这种行为,它可能会在操作系统版本甚至硬件配置之间发生变化。不要试图与之抗争 - 拥抱它。

Activity 状态保存在 onSaveInstanceState(Bundle) 中,它在将 Activity 置于后台状态之前调用。

当 Activity 即将显示时 - 但为了回收资源而被销毁 - 它可以使用 onCreate() 方法中的 savedInstanceState 重新创建。你应该处理这种情况。大多数程序员并不关心,这会导致屏幕旋转和长时间不活动后出现奇怪的错误。

您可以将此机制视为一种序列化/反序列化方案,它允许 Android 优化内存使用,丢弃可以按需重新创建的数据(例如 UI 布局)并仅保存无法重新创建的内容,例如UI 状态(输入的文本、复选框状态等)。

由于 Activity 销毁在正常情况下是相当不可预测的,因此 Android 提供了特殊的开发人员选项以始终在可能的情况下销毁 Activity。这使您无需太多努力即可正确处理 Activity 生命周期中的所有极端情况。探索您设备的开发者选项。

您可能想查看这些文章以了解有关该主题的更多信息:

回到您关于单击按钮 50 次的问题……它可能会创建 50 个 Activity 实例,并相互堆叠。 Android 可能会开始销毁第一个 Activity,以便在内存中为新 Activity 腾出空间。假设该设备只有 49 个 Activity 的内存。你开始 49 - 所有都保存在内存中。你从第 50 个开始,第 1 个将被摧毁。她的状态保存在 Bundle 中,因此当您按 49 次返回时,第一个将从这个保存的包中重新创建。

关于Android Intent 和内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27909012/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com