启动模式 activity-安卓activity启动的奇怪问题

问题描述

安卓activity启动的奇怪问题

sigletask和singleinstance 模式的activityA启动activityB后 按home回桌面,再次打开程序 显示的activityA 这是怎么解释。如何才能在再次打开时直接显示activityB?
现在更蹊跷的是,为activityA加了一个隐藏的侧拉栏,通过拖拽屏幕把侧拉栏显示,从这个侧拉栏上启动activityC,当我们按下home在点击app图标回来时,activityC是存在的,为什么这个activityC没有被回收呢?

解决方案

任务栈保存过了,只是又都被弹出去了而已。
你点击图标,app接收到了intent要启动activityA,然后找到了后台栈中的activityA,因为activityA是singleTask模式,所以在将所在栈转移到前台的同时将栈中activityA之上的所有其他Activity都弹出去了,这样activityA处于栈顶,自然显示的就是它了。

解决方案二:

启动模式为singleInstance的Activity会被单独放在一个栈中。所以当你的启动Activity是singleInstance模式的,点击图标后,它所在的栈会回到前台,因为栈中只有他一个,自然只会显示它。
默认模式和singleTop模式都是直接显示栈顶Activity的。

解决方案三:

解法1:改为fragmentA, fragmentB
解法2:不用singletask和singleInstance
解法3:静态变量记录当前页面,再启动activityA的时候根据静态变量记录的页面重新恢复(最好activityB也为singletask)

解决方案四:

lz的现象是因为,按home回到桌面,然后再打开app的时候,实际上是activity A接收到了intent,然后启动activity A所在的task,而single task的时候,activityB就被迫出栈了 ,而single instance的时候,activity B跟activity A实际上不在一个task里面,所以这两种情况下,是看不到activity B的;要看到,就要换别的启动模式;
以上是个人理解。。。仅供参考

时间: 2024-12-31 07:17:13

启动模式 activity-安卓activity启动的奇怪问题的相关文章

Android中Activity生命周期和启动模式详解_Android

Activity生命周期经典图解: 按键对生命周期的影响: BACK键: 当我们按BACK键时,我们这个应用程序将结束,这时候我们将先后调用onPause()->onStop()->onDestory()三个方法. 再次启动App时,会执行onCreate()->onStart()->onResume() HOME键: 当我们打开应用程序时,比如浏览器,我正在浏览NBA新闻,看到一半时,我突然想听歌,这时候我们会选择按HOME键,然后去打开音乐应用程序,而当我们按HOME的时候,A

Android入门之Activity四种启动模式(standard、singleTop、singleTask、singleInstance)_Android

当应用运行起来后就会开启一条线程,线程中会运行一个任务栈,当Activity实例创建后就会放入任务栈中.Activity启动模式的设置在AndroidManifest.xml文件中,通过配置Activity的属性android:launchMode=""设置. 一.启动模式介绍 启动模式简单地说就是Activity启动时的策略,在AndroidManifest.xml中的标签的android:launchMode属性设置: 启动模式有4种,分别为standard.singleTop.s

Android中Activity启动模式详解,可以控制程序按home键后进来还会调用一个自己不喜欢的界面

其实这是很简单的一个问题.但是这还是要对android中activity的启动模式有相当的理解才行,当点击home键的时候,懂Android的人都知道,他会把当前activity放到后退栈中, 栈(Stack)又称堆栈,它是一种运算受限的线性表,其限制是仅允许在表的一端进行插入和删除运算.人们把此端称为栈顶,栈顶的第一个元素被称为栈顶元素,相对地,把另一端称为栈底.向一个栈插入新元素又称为进栈或入栈,它是把该元素放到栈顶元素的上面,使之成为新的栈顶元素:从一个栈删除元素又称为出栈或退栈,它是把栈

Android activity四种启动模式完全解析

Android使用"任务栈"(也称"back stack")存放启动的各个activity.一般情况下,一个应用只有一个任务栈.特殊情况允许一个应用使用多个任务栈.典型的FILO(First In Last Out)数据结构.点击"back"键,自上至下依次出栈结束activity. activity的四种启动模式分别如下: standard singleTop singleTask singleInstance 通过在AndroidManife

Android开发9——Activity的启动模式

在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. 一.Activity启动模式设置 <activity android:name=".MainActivity" android:launchMode="standard" />     二.Activity的四种启动模式 standard模式启动模式,每次激活A

Activity学习(二):Activity的启动模式(转载)

在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. Android总Activity的启动模式分为四种: [html] view plaincopy Activity启动模式设置:              <activity android:name=".MainActivity" android:launchMode="st

简单介绍Android中Activity的四种启动模式_Android

在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. Activity有四种启动模式: 1. standard,默认的启动模式,只要激活Activity,就会创建一个新的实例,并放入任务栈中,这样任务栈中可能同时有一个Activity的多个实例. 2. singleTop,激活Activity时,如果栈顶是这个Activity,就不会创建新的实例:如果栈顶

Android Activity启动模式全面解析_Android

在android里,有4种activity的启动模式,分别为: "standard" (默认) "singleTop" "singleTask" "singleInstance" 在Android应用中, Activity是最核心的组件, 如何生成一个Activity实例, 可以选择不同的启动模式, 即LaunchMode. 启动模式主要包括: standard, singleTop, singleTask, singleIn

Activity 四种启动模式详细介绍

Activity 四种启动模式详细介绍 在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. Android总Activity的启动模式分为四种: Activity启动模式设置: <activity android:name=".MainActivity" android:launchMode="standard" /&