Android意图和内存

1020rpz

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

当我调用新的Intent时,Android OS会做什么?

想象一下,我只有一个按钮的意图,而这个按钮的onclick方法正在使同一活动具有新的意图。

如果单击,我会这样做??

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

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

如果我单击50次?

谢谢你的回答

依扎夸里

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

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

活动状态保存在中onSaveInstanceState(Bundle),在将活动置于背景状态之前会调用。

当活动将要显示时-但被销毁以回收资源时-可以使用savedInstanceStateinonCreate()方法重新创建您应该处理这种情况。大多数程序员不在乎,这会导致屏幕旋转以及长时间不活动后出现奇怪的错误。

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

由于Activity在正常情况下破坏是很难预测的,因此Android提供了特殊的开发人员选项,始终在可能的情况下破坏活动。这样,您就可以在活动生命周期内正确处理所有极端情况,而无需付出太多努力。探索设备的开发者选项。

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

回到有关单击按钮50次的问题...这可能会创建50个活动实例,彼此叠加。可能是Android开始销毁第一个活动以为新活动腾出内存的情况。假设该设备仅可存储49个活动。您从49开始-所有内容都保存在内存中。您从第50个开始,第1个将被销毁。她的状态保存在中Bundle,因此当您按回49次时,将从已保存的包中重新创建第一个。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

Android:意图和活动的错误

来自分类Dev

Android Chrome 和意图检测

来自分类Dev

Android和内部存储内存

来自分类Dev

通过意图传递字符串和图像之间的区别(就内存使用而言)

来自分类Dev

Android意图同时打开Waze和Google地图

来自分类Dev

使用显式和隐式意图启动android服务

来自分类Dev

在Android中使用意图共享文本和多个图像

来自分类Dev

在Android屏幕关闭时接收事件和意图

来自分类Dev

带有小部件和多个待定意图的Android问题

来自分类Dev

Android相机和照片选择器的意图

来自分类Dev

Android上的活动结果始终返回0和空意图

来自分类Dev

带有意图和textView的android新活动

来自分类Dev

Android警报管理器和待定意图

来自分类Dev

如何在Android中从意图中添加和检索数据

来自分类Dev

Android Espresso:意图匹配器和 androidx PreferenceFragments

来自分类Dev

android内存使用和对象引用

来自分类Dev

Android 应用程序和内存泄漏

来自分类Dev

android:通过意图发送意图

来自分类Dev

Android启动Twitter意图

来自分类Dev

Android意图与消息效率?

来自分类Dev

Android分享意图问题

来自分类Dev

Android Facebook动作意图

来自分类Dev

Android TV屏保意图

来自分类Dev

Android:意图与全球

来自分类Dev

Android软件意图

来自分类Dev

Android中的待定意图

来自分类Dev

Android意图混淆

来自分类Dev

DukeScript:Android启动意图

来自分类Dev

NFC标签-为什么要在Android中使用AAR和LaunchApp而不是URL意图?