android文档程序,有关Android文档的说明

不幸的是,文档在很多方面都不是很清楚.这是其中之一.

理论上,如果Android在停止时销毁你的活动,那么它将调用onDestroy()并且GC将回收内存.实际上,Android从不会破坏个人活动以释放内存.它实际上做的是它取代整个操作系统进程.在这种情况下,onDestroy()永远不会被调用进程中的任何活动. GC无需清理任何东西,因为VM(虚拟机)会立即与进程中的其他所有内容一起死亡,并且操作系统会回收进程使用的全部内存量.

当您的用户导航回您的应用程序时,Android会为您的应用程序创建一个全新的流程,然后它将创建您的活动的新实例.在这种情况下,它当然会为实例获得一个全新的内存块.您还将看到构造函数被调用,并且还将调用onCreate().但是,由于Android保存了活动视图的状态,因此活动将通过调用super.onCreate()来恢复该状态.

在某些情况下,Android会销毁某个活动的实例并自动创建一个新活动.例如,这在配置(即:方向)改变期间完成.在这种情况下,Android会在旧实例上调用onDestroy()并创建活动的新实例.新实例获取旧实例的已保存状态,因此可以恢复视图的状态.在这种情况下,由于正在创建一个新实例,它当然会在内存中具有不同的地址.

一旦组件被销毁,它就会死亡,GC正在回收它所使用的内存. Android永远不会复活死机.

希望这能为您澄清情况.

编辑添加更多详细信息

Android会在自己的内部数据结构中跟踪这些任务中的任务和活动.对于每个活动,它保留启动活动的Intent的副本,发送给该活动的最新Intent,并保留包含该活动的已保存状态的Bundle. Android在活动上调用onSaveInstanceState(),以便活动有机会保存在Android决定杀死活动时恢复活动所需的任何内容. onSaveInstanceState()的默认实现保存了所有活动视图的状态.如果Android被杀死并重新创建(无论出于何种原因),您的实现需要保存活动恢复自身所需的任何其他内容.您的活动的私有成员变量和静态变量不会在Bundle中自动保存和恢复,因此如果您需要这些变量和异常,您必须使用onSaveInstanceState()提供的Bundle自行保存它们.静态变量将在应用程序进程的生命周期内保持不变,但由于Android可以随时终止进程(以回收资源),而无需警告,您也不能依赖于始终具有预期值的静态变量(在Android的情况下)杀死并重建了你的过程).

如果您的活动(或流程)被Android杀死,并且用户稍后导航回您的活动,则Android会使用其内部数据结构中的信息来创建活动的新实例.然后它在新实例上调用onCreate(),将保存的实例状态Bundle作为参数传递.然后,可以将其用于将活动恢复到原始实例被杀死之前的状态. Android也会在调用onStart()之后调用onRestoreInstanceState(),这样如果你不想在onCreate()中执行它,你也可以在该方法中恢复状态.

注意:请记住,要在Bundle中保存/恢复的任何内容必须是基元(int,boolean等),或者必须实现Serializable或Parcelable.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值