android如何在activity中启动同一activity并finish自己

问题是这样的,假如在acitivityA中startActivityB,同时调用A.finish(),是正常的,栈中只有一个B。但是,如果在acitivityA中star... 问题是这样的,假如在acitivity A中startActivity B,同时调用A.finish(),是正常的,栈中只有一个B。
但是,如果在acitivity A中startActivity A(同一activity),同时调用A finish(),发现原来的A是不finish的,栈中有两个A。这是为什么呢?
这个问题已经解决了:在我的应用中,A是一个搜索Activity,是通过点击键盘的“搜索”键并侦听onKeyListener进入的,这种方法有错误,会一下打开两个Activity,所以栈中会出现连个A。应该侦听TextView.OnEditorActionListener.
展开
 我来答
QQMSD8
2016-05-05 · 知道合伙人软件行家
QQMSD8
知道合伙人软件行家
采纳数:6788 获赞数:13239
没有做不到,只有想不到,帮助别人的同时也是对自己的提升

向TA提问 私信TA
展开全部
Activity启动模式有4种,分别为standard、singleTop、singleTask、singleInstance。

1.standard 默认模式,可以不用写配置。在这个模式下,都会默认创建一个新的实例。因此,在这种模式下,可以有多个相同的实例,也允许多个相同Activity叠加。

2.singleTop 可以有多个实例,但是不允许多个相同Activity叠加。即,如果Activity在栈顶的时候,启动相同的Activity,不会创建新的实例,而会调用其onNewIntent方法。
3.singleTask 只有一个实例。在同一个应用程序中启动他的时候,若Activity不存在,则会在当前task创建一个新的实例,若存在,则会把task中在其之上的其它Activity destory掉并调用它的onNewIntent方法。
4.singleInstance只有一个实例,并且这个实例独立运行在一个task中,这个task只有这个实例,不允许有别的Activity存在。
更多追问追答
追问
我的activity是standard的,问的是这种情况下的表现为什么是这样的。
追答
默认的话,你每次startActivity,android都会创建一个新的activity
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式