Android如何优雅的销毁多个activity

在Android开发中,为了防止用户回退到之前的步骤,如注册流程中的各个页面,需要在跳转时销毁多个activity。文章探讨了使用ArrayList管理activity引用(可能导致内存泄漏)和广播通知activity销毁(效率低)的传统方法,并介绍了两种更优雅的解决方案:1) 结合FLAG_ACTIVITY_CLEAR_TASK和FLAG_ACTIVITY_NEW_TASK,启动新activity时清除整个任务栈;2) 使用FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_NEW_TASK,只移除目标activity上方的activity,保留目标activity本身。这两种方法能有效且高效地完成activity的销毁操作。
摘要由CSDN通过智能技术生成

在开发过程中,我们可能会遇到一种需求,那就是在跳转到新的activity的同时销毁之前打开的任意个activity。

比如,注册功能。一般来说,注册需要分为多个步骤,1、填写手机号,输入验证码;2、填写基本资料;3、设置头像或密码等。

如果这三个步骤每一个都使用一个activity,那么在注册流程结束时,我们需要销毁这三个activity,不然的话,当我们返回时,看到的还是注册界面,显然不对。

如果销毁一个activity,显然很简单,只需要启动新activity的时候调用finish()就ok了,那销毁多个activity又该怎么办呢?

网上有人给出的方案是使用一个ArrayList<Activity>来管理Activity的引用,需要销毁时只需要遍历这个集合然后对每一个元素调用finish()即可。这样虽然可以实现,但是存在内存泄漏的风险,因为如果集合中引用Activity的元素不清空的话,Activity对象就没办法被垃圾回收器回收,造成内存泄露。 

网上还有一种方案就是往需要销毁的activity发送广播,activity收到广播之后就自行销毁,这种实现方式效率不高,个人感觉也不优雅。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值