Activity销毁不调用Ondestroy情况以及处理

1、强制回收

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

@Override
protected void onSaveInstanceState(Bundle outState) {
      super.onSaveInstanceState(outState);
      String str= "缓存数据";
      outState.putString("str", str);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
          super.onCreate(savedInstanceState);
          setContentView(R.layout.activity_main);
          if (savedInstanceState != null) {
                   String getStr= savedInstanceState.getString("str");
          }
}

当从从后台强杀时:

1.1:当前仅有一个activity,这时候,强杀,是会执行onDestroy方法的;
1.2:栈里面的第一个没有销毁的activity会执行ondestroy方法,其他的不会执行。
       从Mainctivity跳转到ActivityA(继续从ActivityA再跳转到ActivityB),
       这时候,从后台强杀,只会执行Mainactivity的onDestroy方法,ActivityA(以及ActivityB)的onDestroy方法都不会执行;

2、出现异常

3、一键清理

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值