我想知道一件简单的事情。我正在制作一个android应用程序,我开始问自己有关内存使用情况的信息。
当我调用新的Intent时,Android OS会做什么?
想象一下,我只有一个按钮的意图,而这个按钮的onclick方法正在使同一活动具有新的意图。
如果单击,我会这样做??
Intent activityN = new Intent(Activity.this,Activity.class);
startActivity(activityN);
是firstActivity被杀死还是android保留了它?
如果我单击50次?
谢谢你的回答
活动生命周期是一个棘手的话题。
在大多数情况下,活动会保留在内存中,但在某些情况下,Android可能会决定销毁该活动以回收资源。您无法控制此行为,此行为可能会在OS版本甚至硬件配置之间发生变化。不要试图与之抗争-拥抱它。
活动状态保存在中onSaveInstanceState(Bundle)
,在将活动置于背景状态之前会调用。
当活动将要显示时-但被销毁以回收资源时-可以使用savedInstanceState
inonCreate()
方法重新创建。您应该处理这种情况。大多数程序员不在乎,这会导致屏幕旋转以及长时间不活动后出现奇怪的错误。
您可能会将此机制视为序列化/反序列化方案,该机制允许Android优化内存使用情况,丢弃可按需重新创建的数据(例如UI布局),并仅保存无法重新创建的内容(例如UI状态(输入的文字,复选框的状态等)。
由于Activity
在正常情况下破坏是很难预测的,因此Android提供了特殊的开发人员选项,始终在可能的情况下破坏活动。这样,您就可以在活动生命周期内正确处理所有极端情况,而无需付出太多努力。探索设备的开发者选项。
您可能需要查看这些文章,以了解有关该主题的更多信息:
回到有关单击按钮50次的问题...这可能会创建50个活动实例,彼此叠加。可能是Android开始销毁第一个活动以为新活动腾出内存的情况。假设该设备仅可存储49个活动。您从49开始-所有内容都保存在内存中。您从第50个开始,第1个将被销毁。她的状态保存在中Bundle
,因此当您按回49次时,将从已保存的包中重新创建第一个。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句