- 浏览: 1220792 次
- 性别:
- 来自: 荆州
文章分类
- 全部博客 (396)
- Android 基础 (72)
- Java 基础 (42)
- Android(动画效果) (26)
- Android(自定义组件) (13)
- Android(手机服务) (38)
- Android(网络相关) (27)
- Android(多媒体) (12)
- Android(小技巧) (30)
- Android(用户界面) (39)
- 基础概念 (24)
- Android组件学习 (21)
- Android数据库相关 (11)
- 生活杂谈 (10)
- 调试技巧部分 (8)
- Sql Server相关 (1)
- Android(xml相关) (2)
- Android 开发 (12)
- 韩语学习 (4)
- Mac添加环境变量的三种方法 (1)
- iPhone开发 (1)
- Android Studio (1)
最新评论
-
ppfbsar:
下载网络文件到SD卡上 -
851228082:
好文!彻底理解单类型导入与按需导入的区别了。还有一点可以通过 ...
谈java的导入(import) -
麦田的设计者:
老乡啊
sqlite 数据库保存图片 -
sf_dream:
我要是读写list、map之类的集合呢
ObjectOutputStream和ObjectInputStream类的学习 -
xfyunyun:
博主,请问webview加载html字符串时怎么进行缓存处理呢 ...
WebView使用总结2(加载HTML内容形式的String)
ActA.java文件:
ActB.java文件:
AndroidMenifest.xml文件(配置启动模式):
这个url写下供自己参考,当然大伙都可以链过去学习学习:
http://winuxxan.blog.51cto.com/2779763/504047
public class ActA extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView textView = new TextView(this); /** * standard 模式: * <p> * 当使用当前代码块启动Activity时,每次都是新创建了一个Activity实例. * 因为是使用默认启动模式(标准模式),我们可以通过下面TextView文本中 hash code 来识别是否为新Activity * 此时点击back可以依次看到先前启动的Activity实例,类似栈退出操作,而启动过程类似压栈操作 * * singleTop 模式: * <p> * 运行的时候会发现,按多少遍按钮,都是相同的ActiA实例,因为该实例在栈顶,因此不会创建新的实例.如果回退,将退出应用 * singleTop模式,可用来解决栈顶多个重复相同的Activity的问题.如果是A Activity跳转到B Activity,再跳转到 * A Activity,行为就和standard一样了,会在B Activity跳转到A Activity的时候创建A * Activity的新实例,因为当时的 栈顶不是A Activity实例 * * singleTask 模式: * <p> * 当intent到来,需要创建singleTask模式Activity的时候,系统会检查栈里面是否已经有该Activity的实例 * .如果有直接将 intent发送给它. * * singleInstance模式: * <p> * 首先要说一下Task的概念.如果是Swing或者Windows程序,可能有多个窗口可以切换,但是你无法在自己程序中复用人家的窗口. * 注意是直接复用人家的二进制代码,不是你拿到人家api后的源代码级调用.Android可以做到,让别人的程序直接复用你的 * Activity(类似桌面程序的窗口).Android为提供这种机制,就引入了Task的概念. * <p> * Task可以认为是一个栈,可放入多个Activity.比如启动一个应用,那么Android就创建了一个Task, * 然后启动这个应用的入口Activity * ,就是intent-filter中配置为main和launch的那个(见一个APK文件部署产生多个应用安装 * 的效果)这个Activity是根 * (Root)Activity,可能会在它的界面调用其他Activity,这些Activity如果按照上面那三个模式 * ,也会在这个栈(Task)中,只是实例化的策略不同而已. 验证的办法是调用和打印Activity的taskId: * <p> * TextView textView2 = new TextView(this); * textView2.setText("task id: "+this.getTaskId()); * 会发现,无论切换Activity,taskId是相同的 * * 当然也可以在这个单一的Task栈中,放入别人的Activity,比如google地图,这样用户看过地图按回退键的时候, * 会退栈回到调用地图的Activity.对用户来说,并不觉得在操作多个应用.这就是Task的作用. * * 但是,有这样的需求,多个Task共享一个Activity(singleTask是在一个task中共享一个Activity) * 现成的例子是google地图.比如我有一个应用是导游方面的,其中调用的google地图Activity.那么现在我比如按home键, * 然后到应用列表中打开google地图,你会发现显示的就是刚才的地图,实际上是同一个Activity. * * 如果使用上面三种模式,是无法实现这个需求的.google地图应用中有多个上下文Activity,比如路线查询等的, * 导游应用也有一些上下文Activity.在各自应用中回退要回退到各自的上下文Activity中 * * singleInstance模式解决了这个问题(绕了这么半天才说到正题),让这个模式下的Activity单独在一个task栈中. * 这个栈只有一个Activity.导游应用和google地图应用发送的intent都由这个Activity接收和展示. * * 这里又有两个问题: * <p> * 如果是这种情况,多个task栈也可以看作一个应用.比如导游应用启动地图Activity, * 实际上是在导游应用task栈之上singleInstance模式创建的 * (如果还没有的话,如果有就是直接显示它)一个新栈,当这个栈里面的唯一Activity * ,地图Activity回退的时候,只是把这个栈移开了, * 这样就看到导游应用刚才的Activity了;多个应用(Task)共享一个Activity要求这些应用都没有退出 * ,比如刚才强调要用home键从导游应用切换到地图应用.因为,如果退出导游应用 * .而这时地图应用也并未运行的话,那个单独的地图Activity(task)也会退出了 * * 如果还是拿刚才的ActA和ActB的示例,可以把ActB的模式改为singleInstance,ActA为standard,进行一下测试 */ textView.setText("Activity id:" + this + "task Id:" + this.getTaskId()); Button button = new Button(this); button.setText("go ActB"); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClass(ActA.this, ActB.class); startActivity(intent); } }); LinearLayout layout = new LinearLayout(this); layout.setOrientation(LinearLayout.VERTICAL); layout.addView(textView); layout.addView(button); this.setContentView(layout); } }
ActB.java文件:
public class ActB extends Activity { /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); TextView textView = new TextView(this); textView.setText("Activity id:" + this + "task Id:" + this.getTaskId()); Button button = new Button(this); button.setText("go actA"); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClass(ActB.this, ActA.class); startActivity(intent); } }); LinearLayout layout = new LinearLayout(this); layout.setOrientation(LinearLayout.VERTICAL); layout.addView(textView); layout.addView(button); this.setContentView(layout); } protected void onDestory(){ super.onDestroy(); System.out.println("____B ondestory_____"); } }
AndroidMenifest.xml文件(配置启动模式):
<?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.example.model" android:versionCode="1" android:versionName="1.0"> <application android:icon="@drawable/icon" android:label="@string/app_name"> <activity android:name=".ActA" android:label="@string/app_name" android:launchMode="singleTask"> <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter> </activity> <activity android:name=".ActB" android:launchMode="singleInstance" /> </application> </manifest>
这个url写下供自己参考,当然大伙都可以链过去学习学习:
http://winuxxan.blog.51cto.com/2779763/504047
发表评论
-
输入法弹出后,不影响activity原有布局(android:windowSoftInputMode)
2012-07-08 21:03 4371在AndroidManifest.xml文件中的activit ... -
屏幕截图
2012-04-19 18:24 1312直接贴代码,不说话:) ScreenShot.java文件: ... -
Android Bitmap 圆角 倒影
2012-03-13 23:17 1543// 获得带倒影的图片方法 public Bitmap ... -
View进行透明度设置
2012-03-08 23:12 1818对特定View进行透明度设置的代码片段: public v ... -
动态设置GridView宽,高
2012-03-07 14:24 2354这里假设实例Id为mGrid: RelativeLayo ... -
ActivityGroup使用方法
2012-02-15 17:34 7162这个例子是在http://www.anddev.org上看到的 ... -
Android进度条总结
2011-04-08 10:27 16051.在标题栏显示进度条: requestWindowFea ... -
TextView实现多行本文滚动
2011-04-07 21:49 1730Android中我们为了实现文本的滚动可以在ScrollVie ... -
Android 给应用定制皮肤
2011-04-07 21:29 3184在实现程序功能的同时,如果能让程序界面更加美观,有锦上添花之妙 ... -
自定义无标题Dialog
2011-03-18 13:39 22741.主Activity: public class D ... -
手机分辨率和密度的理解
2011-01-24 10:22 2482QVGA,WQVGA屏density=120 HVGA屏den ... -
Android Bitmap 圆角
2011-01-20 10:16 1747第一种是生成圆角背景: Button mView = (B ... -
Dialog自定义方法1
2011-01-13 14:51 1388public class SelfDialog { D ... -
UI方面的一些知识点总结
2010-09-17 16:52 14941.如何获取手机屏幕的分辨率: /* 取得屏幕解析像 ... -
Android中画图总结(2)
2010-09-17 15:41 18901.如何显示一张自定义位图: step 1:先定义一张位图 ... -
Android中画图总结(1)
2010-09-17 15:32 14961.如何获取 res 中的资源 ... -
TextView中style的应用
2010-09-10 14:09 1244<TextView android:layout_w ... -
显示带图片的Toast提示
2010-09-09 14:22 2038ImageView mView01 = new Image ... -
color.xml中各种颜色值整理
2010-09-05 22:07 2418<color name="solid_bl ... -
Dialog属性的Activity使用
2010-09-02 06:09 16181.很简单的一个方式就可以实现用一个activity显示一个布 ...
相关推荐
Activity启动模式是Android系统管理Activity实例的重要机制,它决定了当用户点击一个应用或在应用内部进行跳转时,如何创建和管理Activity的生命周期。本示例项目"Activity启动模式实例"深入探讨了四种主要的...
2. **单实例模式(SingleInstance)**:只有一个Activity实例存在于整个系统,无论多少次启动,都只会返回这个唯一的实例。其他Activity无法与该实例在同一任务栈中。 3. **单任务模式(SingleTask)**:每次启动...
标准模式是最常见的Activity启动模式,每个启动请求都会创建一个新的Activity实例。如果新的实例被叠加到栈顶,那么它会覆盖之前显示的Activity。这种模式适用于大部分Activity,因为它允许灵活的导航和回退操作,...
标准模式是最常见的Activity启动模式,每个启动请求都会创建一个新的Activity实例。如果新的实例被压入到栈顶,那么就会出现多个相同实例的情况。这种模式适用于大多数Activity,因为它们通常不需要特殊的行为管理...
在栈顶检测到已有该Activity实例时,不会创建新的实例,而是重用栈顶的实例,同时调用onNewIntent()方法传递新的Intent。这适用于需要接收广播或持续处理事件,但不希望每次都创建新实例的情况。 5. **启动模式的...
而一些需要独立处理业务的Activity,如登录界面,可能会采用标准模式,保证每次启动都是新的实例。 总之,理解并掌握Activity的启动模式,能够帮助开发者更灵活地控制应用的流程,提升用户体验。通过实验代码的实践...
因此,标准模式可能导致多个相同Activity实例存在于栈中。 2. singleTop(单顶模式) 当Activity设置为singleTop时,如果它在任务栈的顶部已经存在,那么新的启动请求不会创建新的实例,而是重用现有的实例。但是,...
在standard模式下,每当用户通过意图(Intent)启动Activity时,系统都会创建一个新的Activity实例并将其添加到当前任务的任务栈中。这意味着,如果用户多次启动同一个Activity,任务栈中将会有多个该Activity的实例...
2. **单例模式(singleTop)**:如果Activity实例已经位于栈顶,那么新的启动请求不会创建新的实例,而是复用栈顶的实例,同时调用`onNewIntent()`方法传递新意图。 3. **单任务模式(singleTask)**:这种模式下,...
standard是最常见的启动模式,每个启动请求都会创建一个新的Activity实例。如果栈中已有该Activity的实例,那么新的实例会被压入栈顶。这种模式适合那些每次启动都需要新实例的Activity,例如主屏幕或者登录页面。 ...
- **FLAG_ACTIVITY_SINGLE_TOP**:这个标志与singleTop模式类似,但通常用于Intent中,强制Activity不创建新实例,而是使用栈顶的实例,即使这个模式不是Activity的默认启动模式。 了解并合理使用这些启动模式,...
这是Activity的默认启动模式,每次启动时都会创建一个新的Activity实例。无论是在当前任务栈中还是其他任务栈中,只要启动了该Activity,就会生成新的实例。如果目标Activity已经在栈中,系统仍然会创建新的实例并放...
在“ActivityLaunchModeDemo”项目中,开发者可以体验到每种启动模式的实际效果,通过查看和分析task ID和Activity实例,了解不同模式下Activity如何被创建和管理。通过实践,开发者可以更好地理解和掌握如何根据...
标准模式是Activity的默认启动模式,每次启动都会创建一个新的Activity实例。如果栈中已经存在该Activity,那么系统会将新的实例压入栈顶,形成多个实例。这种模式适用于大多数情况,但可能导致内存消耗增加。 2. ...
Activity的启动模式(LaunchMode)是Android系统管理和控制Activity实例的关键特性,它决定了Activity如何响应用户的操作以及系统如何创建和管理Activity的实例。本示例代码详细展示了Activity的四种启动模式:标准...
单栈顶模式与标准模式类似,每次启动都会创建新的Activity实例,但有一个关键区别:如果目标Activity已经在栈顶,系统不会创建新的实例,而是重用已有的。这就避免了创建不必要的Activity实例,提高了性能。例如,...
首次启动时,系统会创建一个新的任务,并在此任务中创建Activity实例。如果已存在该Activity的实例,系统会将当前任务跳转到该实例所在的任务,并清除该任务栈中位于它之上的所有Activity。这常用于主屏幕或者导航...
当启动一个SingleTask模式的Activity时,如果任务栈中不存在该Activity,则创建一个新的任务栈,并在其底部创建Activity实例。如果任务栈已存在该Activity,系统会将该任务栈上方的所有Activity出栈,然后调用...