活动界面重复返回

本文介绍了在Android应用开发中如何解决活动重复创建的问题。针对点击按钮后导致同一活动被重复创建的情况,提供了详细的解决方案,包括对不同启动模式的理解及应用。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将最近在开发中遇到的问题记录下来,以免重复再犯!

----------------------------------------------------------------------------------------------------------------

问题:在碎片界面点击按钮“D”进入另一活动E(Activity)后,再按回退键返回到碎片界面,按了回退键发现又重复进入活动E(Activity),即需要两次才能回退到碎片界面。

截图如下:

      

                             “D”                                                              “E”

原因:点击按钮“D”后,活动“E”被重复创建了两个实例。

解决方法:

1、原理:在给出具体解决方法之前,先预习下“活动启动模式”这个知识点,在实际项目中我们应该根据具体的需求来为每个活动指定恰当的启动模式。启动模式一共有4种,分别是standard、singleTop、singleTask和singleInstance,可以在AndroidManifest.xml中通过<activity>标签指定android:launchMode属性来选择启动模式。

· standard模式(即默认情况下),每当启动一个新的活动,它就会在返回栈中入栈,并处于栈顶的位置。对于使用standard模式的活动,系统不会在乎这个活动是否已经在返回栈中存在,每次启动都会创建该活动的一个新的实例。

缺点:活动已经在栈顶,再次启动的时候还要创建一个新的活动实例

· singleTop模式用来解决重复创建栈顶活动问题。在启动活动时如果发现返回栈的栈顶已经是该活动,则认为直接使用它,不会再重新创建新的活动实例。

缺点:如果该活动并没有处于栈顶位置,还是可能会创建多个活动实例

· singleTask模式让某个活动在整个应用程序的上下文中只存在一个实例。当活动指定为singleTask,每次启动该活动时系统首先会在返回栈中检查是否存在该活动的实例,如果发现已经存在则直接使用该实例,并把在这个活动之上的所有活动统统出栈,如果没有发现就会创建一个新的活动实例。

· singleInstance模式启用一个新的返回栈来管理这个活动

2、具体方法:在AndroidManifest.xml中“E”活动下添加android:launchMode="singleTask"即可,具体如下:

<activity android:name=".Activity.EActivity"
          android:launchMode="singleTask"/>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值