activity被系统回收onDestory会不会在执行以及如何恢复

activity被系统回收onDestory会不会在执行以及如何恢复
摘要由CSDN通过智能技术生成

     关于activity在被系统回收会不会在走onDestory的问题,不管是在开发中,还是在面试过程中经常会遇到或者被问。现在我们先从整个项目上来分析。

 首先一个应用(项目)正常情况下在linux中只会有一个进程(不是绝对的),应用只有在进程存活的情况下才会按照正常的生命周期进行执行,如果进程突然被kill掉,相当于System.exit(0);   进程被杀死,根本不会走(activity,fragment)生命周期。例如安装的一键清理等功能,同样不会被调用。只有在进程不被kill掉,正常情况下才会执行ondestory()方法。

接下来具体讲解一下,如果activity被回收如何恢复。

当系统内存不足时, activity会被回收,我们其实可以覆写onSaveInstanceState()方法。onSaveInstanceState()方法接受一个Bundle类型的参数, 开发者可以将状态数据存储到这个Bundle对象中, 这样即使activity被系统摧毁, 当用户重新启动这个activity而调用它的onCreate()方法时, 上述的Bundle对象会作为实参传递给onCreate()方法, 开发者可以从Bundle对象中取出保存的数据, 然后利用这些数据将activity恢复到被摧毁之前的状态。例如在

//保存需要的状态数据

protected void onSaveInstanceState(Bundle outState) {

super.onSaveInstanceState(outState);

Stringstr= "dddddddddd";

outState.putString("str", str);

}

//在重新创建的时候从Bun

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值