activity资源释放的一点思考

引子

先来温习一下activity的生命周期
onCreate() >> onStart() >> onResume() >> onPause() >> onStop() >> onDestory()

清理资源的思路一般是在页面不在前台,即onPause() >> onStop() >> onDestory()几个方法中进行处理。通常做法是在onDestory()进行资源的释放,比如反注册、移除监听,变量置空等,比较简单的页面此逻辑不会有问题。

那有点复杂的呢?
页面添加了监听,退出的时候还没走到onDestory()此时收到了监听执行了相应的逻辑,清理资源已是不及时。

更加复杂
若activity页面是跳转而不是关闭
A:onPause() >> B:onCreate() >> B:onStart() >> B:onResume() >> A:onStop() ,此时虽然走了onPause()和onStop()方法,但页面并不是销毁。

继续复杂
若activity的启动模式是singleTask呢,此时不会走isFinishing(),页面跳转,在出入栈的时候已经调用了onPause()和onStop(),但因为栈中单例模式此时activity会直接走onDestory(),完美避开前面的资源清理。

几种处理方法

onDestory()清理资源

此方法试用于业务逻辑简单,无需及时释放资源的场景

@Override
    protected void onDestroy() {
   
   
        super.onDestroy<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值