Activity 的启动模式
好久没用过那几种activity的启动模式了,如今看到singletop竟然傻了眼,完全忘记了这几种启动模式的区别!隧将两年前的总结翻出来,通读一遍那晦涩难懂的记录,又理解了一遍,在以前记录的基础上,重新调整一下语句顺序和用词,并增加一些用来助记的理解。
首先,澄清一个概念,android中一组逻辑上在一起的activity被叫做task,自己认为可以理解成一个activity堆栈。在xml中可以配置那几种令人头大的启动模式(launch mode),不同的启动模式就决定了新的activity实例的逻辑位置。
我们先来介绍两个启动模式,他们分别是standard和singletop, 以这两种模式启动新的activity,新activity将属于当前的task,除非我们特殊指定了要放置在新的task中,这可以用设置FLAG_ACTIVITY_NEW_TASK 标志的方式实现。
除了以上介绍的两种启动模式,我们还有singletask和singleinstance两种模式,这两种的模式的activity只能存在于新的task中,就好像是天然地拥有FLAG_ACTIVITY_NEW_TASK 标志,从字面意义上看singletask是指新的activity实例只会存在于单独的task中,而singleinstance的字面意义上理解是只能存在单独的实例,在其所在的task中,不能有其他activity实例,很霸道吧!singletask就没这样的要求,它可以和别的activity的实例挤在同一个task中,但是自己的实例也只能有一个。
在接到新的intent请求时候,不同的启动模式的activity有不同的表现,standard模式的activity会生成新的实例来处里请求,而singletop的activity如果有实例在task的最顶端,那么它将会复用这个实例来处里请求,否则,产生新的实例,这可能是singletop名字的来历吧!singleinstance因为其所在task中只有它自己一个实例,所以可以轻松复用。至于singletask,如果新的intent请求到来时,singletask的实例在task的最顶端,那么复用此实例,如果没有,则不响应此请求,但是singletask的实例会被调到前台显示。
PS: 在代码中找不到设置launchmode的地方,只能在xml中设置它,这是为了保证在运行时一个activity的launchmode是不变的。
Activity 的启动模式的更多相关文章
- 关于activity的启动模式
在Android中每个界面都是一个Activity ,界面的切换实际上是对不同Activity实例化的过程.而启动模式就决定Activity启动运行方式. 1.设置方式它是在主配置文件中,Activi ...
- 无废话Android之activity的生命周期、activity的启动模式、activity横竖屏切换的生命周期、开启新的activity获取他的返回值、利用广播实现ip拨号、短信接收广播、短信监听器(6)
1.activity的生命周期 这七个方法定义了Activity的完整生命周期.实现这些方法可以帮助我们监视其中的三个嵌套生命周期循环: (1)Activity的完整生命周期 自第一次调用onCrea ...
- android Activity的启动模式与flag的见解
最近做一个安卓项目,想要实现的效果就是:当打开一个按钮的时候,启动了一个A功能,当用户返回到桌面再继续进去的时候,不过之前在哪个Activity,都会先跳转到A功能的那个界面,当用户点击返回的时候,再 ...
- android Activity的启动模式
Android中Activity启动模式详解 在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启 ...
- Activity的启动模式(android:launchMode)
在android里,有4种activity的启动模式,分别为: “standard” (默认) “singleTop” “singleTask” “singleInstance” 它们主要有如下不同: ...
- 4种activity的启动模式
在android里,有4种activity的启动模式,分别为: “standard” (默认) “singleTop” “singleTask” “singleInstance” 它们主要有如下不同: ...
- Activity的启动模式及回退栈的概念
Activity的启动模式 standard 正常模式 在创建一个新的activity的时候,直接在栈顶创建一个新的activity singleTop 顶部单个 在创建一个新的activity的时候 ...
- Activity LauchMode启动模式(转载)
转载于:http://www.cnblogs.com/plokmju/p/android_ActivityLauncherMode.html 在一个Android应用中,不可避免的会包含多个Activ ...
- Android开发艺术2之Activity的启动模式
Activity是Android的四大组件之一,他的重要性毋庸置疑,对于这么重要的一个组件,我们首先要知道这些都是由系统进行管理和回调的,要理解Activity的启动模式,我们首先来了解一下Andro ...
随机推荐
- [codility]Equi-leader
http://codility.com/demo/take-sample-test/equileader 一开始想到从左和右两边开始扫取众数,但求众数又要重新扫一遍,这样复杂度就是O(n^2)了.此题 ...
- [jobdu]第一个只出现一次的字符
刚开始还在想双指针,完全没必要.然后最土的可以扫两遍O(n),用一个数组记录出现次数.然后想到如果数组里记录出现的位置,可以只扫一遍O(n),第二遍扫字符集就行了. #include <iost ...
- C内存管理
一般而言,分配给进程的内存有四个概念上不同的区域,分别为:代码段.数据段.堆和栈,其中数据段又可以细分为初始化为非零的数据和初始化为零的数据.如下图所示: 1.栈区(stack)— 由编译器自动分配释 ...
- 常用的SQL分页算法及对比
SQL Server 2005引入的新方法. SELECT * FROM (SELECT ROW_NUMBER() OVER(ORDER BY keyField DESC) AS rowNum, * ...
- 【HDOJ】1297 Children’s Queue
递推,最近发现自己做递推的题总是没有思路.下周多练习.对于f(n)可以在第n个位置为男生,此时共有f(n-1)种情况:若在第n个位置为女生,因此第n-1个位置也必须为女生.此时有两种情况,一种情况是在 ...
- 【Python】代码行数统计
两级目录,可扩展为N级. # Count the line of dir or file import os, fnmatch, fileinput def ChkFileType(lst): tmp ...
- Formatting is Specified but argument is not IFormattable
private void DeviceSetText(TextBox textBox, string text) { //处理text的显示值 ") //小数位后保留2位 { //小数点后保 ...
- Android开发之AlertDialog
http://www.cnblogs.com/Gaojiecai/archive/2011/12/10/2283156.html http://www.2cto.com/kf/201205/13187 ...
- WebService优点和缺点小结
最近做的几个项目都用到了webservice,通过自己的实践和网上资料的汇总,现在做个小结: 当前WebService是一个热门话题.但是,WebService究竟是什么?,WebSer ...
- Tdxtreelist 行变色
ACanvas.Font.Color := clRed; //如果有加印的 变颜色