2 ypceclipse ypceclipse 于 2016.04.14 10:57 提问

求教android中如何控制一个activity在内存中的实例个数

项目中有个需求,一个activity中有个按钮可以打开自己的另一个实例,那么这样就会出现不停的点,不停的创建这个activity实例的情况出现,有没有方法可以控制这个activity实例的个数啊,比如只保留最近打开的三个这个activity实例,有没有方法可以实现的啊,求教大神们

9个回答

CSDNXIAOD
CSDNXIAOD   2016.04.14 11:05

android 让自己的Activity只创建一个实例
----------------------biu~biu~biu~~~在下问答机器人小D,这是我依靠自己的聪明才智给出的答案,如果不正确,你来咬我啊!

ypceclipse
ypceclipse   2016.04.14 11:09

机器人的回答没有用啊,需要是保存3个实例,不是一个啊

bdmh
bdmh   Ds   Rxr 2016.04.14 11:18

把这个activity的lunchmode设置为singletop,或者singletask

stven_king
stven_king singletop还会存在多个的情况,用singletask吧,用的时候注意affinity
一年多之前 回复
bdmh
bdmh   Ds   Rxr 2016.04.14 11:19

如果你非得控制数量,那就用一个Map,记录每个Activity的数量,每次oncreate时,push进去

ypceclipse
ypceclipse 大神,记录了后如果我打开第四个,如果才能把第一个干掉呢?
一年多之前 回复
qq_31524549
qq_31524549   2016.04.14 11:58

监听点击次数,当超过一定数量就不要响应事件。或者用LinkedList这个集合,先进先出原则

ypceclipse
ypceclipse   2016.04.14 14:10

额,搞定了,直接在application中增加了个ArrayList,保存打开的activity实例,每次创建将activity实例保存到list中,保存前判断是否超过规定数额,超过的直接调用list中第一个的finish方法

ypceclipse
ypceclipse   2016.04.14 14:21

finish方法中在将本实例从list中移除,防止泄漏

denglxsc
denglxsc   2016.04.15 14:03

非要限制个数的话就用一个list把Activity装进去。每次要添加之前都去遍历一下这个list,把其中的实例取出来,拿到类名,如果和当前类名一样且超过3个,就不添加

SEU_Calvin
SEU_Calvin   2016.10.30 19:40

finish方法里的逻辑在异常情况下并不可靠,建议在application中做整体的Activity实例获取操作。

Csdn user default icon
上传中...
上传图片
插入图片