- 浏览: 263183 次
- 性别:
- 来自: 济南
文章分类
- 全部博客 (303)
- c (31)
- c++ (16)
- java (18)
- c# (1)
- python (3)
- java web (6)
- oracle (7)
- sqlserver (2)
- mysql (2)
- android (24)
- android系统 (15)
- android多媒体部分 (15)
- android游戏 (12)
- linux (26)
- javaScript (1)
- ajax (1)
- node JS (2)
- html (5)
- apache (3)
- jboss (1)
- weblogic (0)
- 通信协议 (10)
- 云计算 (1)
- 分布式 (5)
- ejb (1)
- webservice (5)
- 设计模式 (16)
- JNI (6)
- swing (13)
- 版本控制 (1)
- UML (1)
- xml (4)
- spring (5)
- hibernate (5)
- struts1 (3)
- struts2 (4)
- ibatis (0)
- tomcat (2)
- 心得体会 (1)
- css (1)
- 嵌入式 (41)
- arm体系结构 (10)
Activity之间的跳转,或者说加载一个新的Activity,一般对于开发者来说,都不是一个太难的问题。直到后来随着不断的深入,才发现原来Activity的加载还分为四种不同加载模式,让我突然有了一种别有洞天的感觉。灵活的使用合适的加载模式,可以避免产生大量的重复的Activity,从而优化性能,减少系统资源消耗。
四种加载模式具体为:
standard: 标准模式,一调用startActivity()方法就会产生一个新的实例。
singleTop: 检查是否已经存在了一个实例位于Activity Stack的顶部,如果存在就不产生新的实例,反之则调用Activity的newInstance()方法产生一个新实例。
singleTask: 在一个新的Task中产生这个实例,以后每次调用都会使用此实例,而避免产生新的实例。
singleInstance: 这个基本上跟singleTask一样,只是有一点不同,那就是在这个模式下的Activity实例所处的Task中,只能有这一个Activity实例,而不能有其他的实例。
这些启动模式可以Android清单文件AndroidManifest.xml中,通过<activity>中的launchMode属性进行设置,如:
AndroidManifest.xml
<activity android:name="MainActivity" android:launchMode="singleTop">
<intent-filter>
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
另外也可以在代码中通过一些标志进行设置。如:
Java Code
1 Intent intent = new Intent(SrcActivity.this, TargetActivity.class);
2 intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
3 startActivity(intent);
四种加载模式的区别如下:
一、 所属Task的区别:
一般情况下,,“standard”和”singleTop”两种加载模式源Activity(即new Intent(arg0,arg1)中的第一个参数)和目标Activity(即new Intent(arg0,arg1)中的第二个参数)在同一个Task内,除非Intent包括了参数FLAG_ACTIVITY_NEW_TASK,如包含了此参数,目标Activity会起动到新的Task里;
“singleTask”和“singleInstance” 总是把目标Activity作为一个Task的根元素,他们不会被启动到一个其他Task里。
二、 是否允许多个实例的区别:
standard”和”singleTop”可以允许有多个实例,并且可以位于不同的Task中;
singleTop要求如果Activity Stack顶部已经有目标Activity实例,则直接讲Intent发送给该实例,而不创建新实例。如Activity Stack没有该实例,则创建新实例;
“singleTask”和”singleInstance”则只产生一个实例,并且是Task的根元素。“standard”和”singleTop”可以被实例化多次,并且是可以存在于不同的task中;这种实例化时一个task可以包括一个activity的多个实例;“singleTask”和”singleInstance”则限制只生成一个实例,并且是task的根元素。
三、 是否允许其他Activity存在于本Task内的区别:
“singleInstance”独占一个Task,其他Activity均不能存在于此Task中,如果它启动一个新的Activity,不管新的Activity的launch mode如何,新的Activity都将运行于其他Task里;
另外三种模式则可以和其他Activity共存。
四、 是否每次都生成新实例的区别:
“standar”模式每次都生成一个新的Activity实例;
“singleTop”的Activity如果在Task的Activity Stack顶部则不生成新实例,直接使用此实例,否则生成一个新实例。
“singleeInstance”是其所在Task的Activity Stack里的唯一Activity实例,它每次都会被重用。
“singleTask”如果在Task的Activity Stack的顶部,则接收intent,否则该intent会被丢弃,但仍然会该Task返回前台。
发表评论
-
NDK环境搭建学习笔记
2013-05-12 13:39 1110本地native方法实现步骤 ... -
即时通信学习笔记
2013-05-18 09:56 805下载安装文件 openfire_3_6_4.exe spark ... -
android 代码混淆
2013-03-20 19:47 1055在项目文件下,自动生成了文件:proguard-projec ... -
android 即时通信学习笔记一
2012-11-04 15:49 830下载安装文件 openfire_3_6_4.exe spa ... -
andriod 源码下载
2012-11-02 14:36 886git 是版本控制工具 安装方法: sudo apt-g ... -
android应用的适配常用方法
2012-09-03 14:48 413屏幕大小: small normal large ... -
android 蓝牙学习笔记
2012-09-07 09:56 929蓝牙部分学习 蓝牙之间的通信需要四部分: 1 设置蓝牙设备 ... -
取得手机 IP地址
2012-09-07 09:57 634public String getLocalIpAddress ... -
android动画Scale+Translate
2012-09-07 10:14 753/** * 移动缩小动画 * @author 岳振华 * ... -
android中ActionBar +Fragment
2012-09-07 10:18 1112/** * 测试tab标题栏 * * @time 下午0 ... -
android ArcGIS学习笔记一
2012-09-08 18:18 3480动态操作地图服务 1.动态添加一个地图服务String ur ... -
android 启动流程
2012-09-10 15:45 708bootload 加载linux 内核 挂载ramd ... -
android 修改开机动画
2012-09-10 16:41 946framebuffer驱动里可以定制开机界面 开机过程中屏 ... -
Framebuffer Driver
2012-09-10 16:42 704Framebuffer Driver 中 ... -
android 简单服务实现
2012-09-14 16:06 697/** * 测试服务 * * @time 下午02:40 ... -
android 常用命令
2012-09-26 16:03 7001 显示设备列表 adb devices 2 在指定模拟器 ... -
android 调用webservice
2012-10-13 22:43 915web服务端 package cn.yue.lsp.ph ... -
android handler和looper
2012-10-25 16:58 7071 消息在主线程执行 handler = new Handl ... -
android 动画
2012-10-25 17:05 677tween xml 代码如下: <?xm ... -
NDK学习笔记
2012-10-27 15:40 707工具下载: cygwin 1.7或以上版本 awk升级 ...
相关推荐
总之,Android的四种Activity加载模式提供了一种灵活的方法来管理Activity实例和任务,帮助开发者实现更高效、更流畅的应用体验。在设计应用程序的导航流程时,充分理解和利用这些模式是非常重要的。
Activity 的四种加载模式对于应用程序的导航和行为有着显著的影响。理解这些模式对于优化用户体验和避免意外的行为至关重要: 1. standard 模式是最常见的,每次启动 Activity 都会创建新的实例。这可能导致 Task ...
Android系统中Activity的四种加载模式 Android系统中的Activity是一种非常重要的组件,它是Android应用程序的基本组成单元之一。在实际的Android应用程序中,一个Android软件往往包含多个Activity,每个Activity...
### Android 四种加载模式详解 在Android应用开发中,理解Activity的加载模式至关重要,它直接关系到应用程序的性能和用户体验。本篇文章将深入解析四种加载模式:`standard`、`singleTop`、`singleTask`和`...
本示例"Activity加载模式demo"将深入探讨四种不同的Activity加载模式,并通过代码演示如何实现它们。 1. **标准模式(Standard)** 标准模式是最常见的Activity加载模式,也是默认模式。在这种模式下,每次启动...
本文档主要讲述的是Android四种Activity的加载模式;每个Activity的状态是由它在Activity栈(是一个后进先出LIFO,包含所有正在运行Activity的队列)中的位置决定的。Activty的生命周期的也就是它所在进程的生命周期...
接下来,我们将详细讨论Android Activity的四种加载模式:standard、singleTop、singleTask和singleInstance,并通过示例分析它们之间的区别。 1. **standard(标准模式)** 这是Activity的默认加载模式,不需要在...
本文将详细解析Android编程中的四种Activity加载模式:standard、singleTop、singleTask和singleInstance,帮助开发者更好地理解和掌握Activity的生命周期及切换逻辑。 首先,Activity的状态主要有四种:活动的...
ActivityTask是怎么进行设计的,以及Activity四种加载模式。
`Activity`的属性和加载模式对于理解Android应用的行为至关重要。这篇博客文章可能深入探讨了这些概念。 首先,让我们来了解一下`Activity`的一些基本属性: 1. **标签(Label)**:这是显示在用户界面上的文本,...
有四种模式可供选择:`MODE_NIGHT_NO`(默认模式)、`MODE_NIGHT_YES`(夜间模式)、`MODE_NIGHT_FOLLOW_SYSTEM`(跟随系统设置)和`MODE_NIGHT_UNDEFINED`(未定义)。 ```java public void toggleNightMode() { ...
在Android应用开发中,Activity是用户界面的基本组件,它负责展示和交互。本文将深入探讨Activity的加载模式以及其...阅读提供的"Activity加载模式及生命周期"文档,将有助于你深入理解这些概念,并将其应用于实践中。
而“Android-skin-sprite”库提供了一种无需重启Activity就能实现夜间模式切换的解决方案。这个库主要用于动态改变Android应用的主题和皮肤,使得用户可以在不同光线环境下舒适地使用应用。 首先,我们来理解...
在Android系统中,动态加载Activity是一项关键的技术,它允许应用程序在运行时动态地加载和启动新的Activity,从而实现模块化和插件化的功能。本文将深入解析Android动态加载Activity的原理,帮助开发者理解和掌握这...
`Dialog`是Android提供的一种轻量级窗口,通常用于显示简短的信息或让用户做出选择。然而,当对话框需要包含大量内容、多个输入字段或者自定义布局时,`Dialog`可能无法满足需求,这时我们可以考虑使用`Activity`。 ...
总的来说,"ViewPager加载Activity"是一种特殊的设计模式,它结合了ViewPager的滑动特性与Activity的功能,提供了独特的用户体验。但请注意,这并不是最佳实践,因为它可能带来额外的复杂性和潜在的问题。在大多数...
5. Activity的四种加载模式: - 标准模式(Standard):每次启动都会创建新的实例,可以放入任何Task。 - 单实例模式(SingleInstance):在整个系统中只有一个实例,且总是在新的Task中启动。 - 单任务模式...
实现了日夜模式的切换.(不重启 Acitivity ) 解决了因为快速点击 View 导致的多次响应点击事件. 内部实现了 Android 5.0 的CircularReveal效果. 优点: 布局中直接使用 Android 默认的控件就可以.在解析以后会根据...
在Android应用开发中,"九宫格模式"是一种常见的用户界面设计,通常用于展示一系列功能或选项。这种设计使得用户可以方便地通过点击九个图标中的任一个来启动不同的Activity,实现不同功能间的快速切换。在本文中,...