Activity启动模式、Intent重复传递
来源:互联网 发布:张家港美工设计培训 编辑:程序博客网 时间:2024/06/06 14:17
初始情形
1. 三个Activity循环调用,默认启动模式失效,详细学习启动模式。2. 页面跳转需要传递数据,使用SingleTask模式,后面传递的Intent需要刷新,否则是第一个intent数据。
四种模式
1. standard
activity默认的启动模式,即每次调用都创建一个新的实例压入栈顶。因此,可以重复调用,在栈中叠加。如图:反复调用自身,每次都创建实例,进行压栈。A 为 standard 模式。
2. singleTop
栈顶不重复叠加模式,即相同的activity叠加不创建新的实例入栈。因此,可以间隔叠加形成循环,但不能自身调用自身。如图,自身调用自身,不重复创建,并调用onNewIntent方法刷新intent。A 为 singleTop 模式,B 为 standard 模式
3. singleTask
单栈单实例模式,即栈中只会存在一个activity的实例,重复调用将栈中实例弹至栈顶。因此,重复调用不创建新实例,弹栈至该实例位于栈顶,即重复调用时之前实例上的所有实例都会被弹出。如图,重复调用,销毁掉实例上的所有其他实例,并调用onNewIntent方法刷新intent。A 为 singleTask 模式, B 为 standard 模式
4. singleInstance
多栈单实例模式,即为此模式的activity单独创建任务栈,只存放其实例。因此,调用就会创建新的任务栈。如图,调用singleInstance模式的activity时,会单独开辟一个任务栈,只放入A实例。A 为 singleInstance 模式, B 为 standard 模式
特殊情况参数传递
1. singleTop 反复调用自身2. singleTask 重复调用这两种情况都会存在,intent数据刷新问题。例如:A是singleTask 模式,B为standard模式。 AB可以互相跳转,且B到A会传递数据intent。 执行如下过程: B -> A -> B -> A 如图。
.
重写方法如下,刷新intent数据
@Override protected void onNewIntent(Intent intent) { super.onNewIntent(intent); setIntent(intent); }
1 0
- Activity启动模式、Intent重复传递
- Activity启动模式及Intent传递对象
- Intent传递数据与Activity启动模式singleTask的关系。
- Activity生命周期,启动模式LaunchMode,碎片Fragment,Intent跳转传递
- activity开启一个启动模式为SingleTask的activity,intent传递数据为空的解决方法
- Activity启动模式intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
- 使用Intent启动Activity传递数据
- Intent startActivityForResult 启动 与 Activity启动模式
- Activity生命周期,显示隐式启动和四种启动模式,activity之间通过Intent传递数据
- 关于Activity的启动模式(launchMode) 接收不到Intent传递的参数
- Intent启动活动以及Intent传递数据&activity的生命周期
- 用Intent启动Activity,并在Activity之间传递数据
- 使用 Intent 启动 Activity和Activity之间的数据传递
- Activity 启动模式及Intent的Flags
- Activity启动模式、Intent Flags、栈
- Activity启动模式 及 Intent Flags
- android Activity启动模式与intent Flags
- Activity启动模式及Intent 常用Flag
- C++字符串和字符串结束标志
- mybatis 多对多
- 重构代码的原则
- ubuntu安装jdk
- 练习
- Activity启动模式、Intent重复传递
- Android仿ios对话框
- 解决VB.net使用COM控件加载Excel文件速度慢的问题
- 详解公钥、私钥、数字证书的概念
- 程序员的几大痛点
- 2.7
- java hasNextInt判断是否为数字
- CMake&yacc&lex
- 公钥、密钥、SSL、会话密钥的简单解释