- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
Activity 的启动模式
1.4.1 Activity 的任务栈
Task Stack(任务栈)是一个具有栈结构的容器,可以放置多个 Activity 实例。启动一个应用,系统就
会为之创建一个 task,来放置根 Activity;默认情况下,一个 Activity 启动另一个 Activity 时,两个 Activity 21
是放置在同一个 task 中的,后者被压入前者所在的 task 栈,当用户按下 back 键,后者从 task 中被弹出,前者又显示在屏幕前,特别是启动其他应用中的 Activity 时,两个 Activity 对用户来说就好像是属于同一个应用;系统 task 和应用 task 之间是互相独立的,当我们运行一个应用时,按下 Home 键回到主屏,启动另一个应用,这个过程中,之前的 task 被转移到后台,新的 task 被转移到前台,其根 Activity 也会显示到幕前,过了一会之后,再次按下 Home 键回到主屏,再选择之前的应用,之前的 task 会被转移到前台,系统仍然保留着 task 内的所有 Activity 实例,而那个新的 task 会被转移到后台,如果这时用户再做后退等动作,就是针对该 task 内部进行操作了。
任务栈的设计是为了提高用户体验,但是也有其不足的地方。任务栈的缺点如下:1、每开启一次页面都会在任务栈中添加一个 Activity,而只有任务栈中的 Activity 全部清除出栈时,
任务栈被销毁,程序才会退出,这样的设计在某种程度上可能造成了用户体验差,需要点击多次返回才可以把程序退出了。
2、每开启一次页面都会在任务栈中添加一个 Activity 还会造成数据冗余, 重复数据太多, 会导致内存溢出的问题(OOM)。
为了解决任务栈产生的问题,Android 为 Activity 设计了启动模式,那么下面的内容将介绍 Android 中 Activity 的启动模式,这也是最重要的内容之一。
1.4.2 Activity 的启动模式
启动模式(launchMode)在多个 Activity 跳转的过程中扮演着重要的角色,它可以决定是否生成新的
Activity 实例,是否重用已存在的 Activity 实例,是否和其他 Activity 实例共用一个 task。 Activity 一共有以下四种 launchMode:standard、singleTop、singleTask、singleInstance。
我们可以在 AndroidManifest.xml 配置activity的 android:launchMode 属性为以上四种之一即可。下面我们结合实例一一介绍这四种 lanchMode。
一、standard
standard 模式是默认的启动模式,不用为activity配置 android:launchMode 属性即可,当然也可以指定值为 standard。
我们将创建一个 Activity,命名为 FirstActivity,来演示一下标准的启动模式。FirstActivity 代码如下:【文件 1-20】 FirstActivity.java
publicclass FirstActivity extends Activity{
@Override
publicvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.first);
TextViewtextView =(TextView) findViewById(R.id.tv);
textView.setText(this.toString());
Buttonbutton = (Button) findViewById(R.id.bt);
button.setOnClickListener(new View.OnClickListener(){
@Override
publicvoidonClick(Viewv) {
Intentintent = newIntent(FirstActivity.this, FirstActivity.class);
startActivity(intent);
}
});
22
}
}
FirstActivity 界面中的 TextView 用于显示当前 Activity 实例的序列号,Button 用于跳转到下一个 FirstActivity 界面。
然后我们连续点击几次按钮,将会出现下面的现象:
我们注意到都是 FirstActivity 的实例,但序列号不同,并且我们需要连续按后退键两次,才能回到第
您可能关注的文档
最近下载
- 中小学生成式人工智能使用指南(2025年版)解读.pptx
- 2025至2030年中国电子级玻纤布行业市场全景调查及投资策略研究报告.docx
- 【培训课件】TPM_培训.ppt VIP
- 一种检测单纯疱疹病毒1+2型IgM抗体的化学发光免疫分析试剂盒及其制备方法.pdf VIP
- 2024新生儿病室建设与管理指南试行卫医政发.docx VIP
- 2021届高一上学期语文期中检测训练卷(统编版必修上册)01-(原卷版).docx VIP
- 小学科学新教科版一年级下册全册课课练(附参考答案)(2025春).doc VIP
- 《量子力学》全套教学课件.pptx
- 组件安装角度偏差施工记录.docx VIP
- 《老年人能力评估实务》健康养老服务专业全套教学课件.pptx
文档评论(0)