【Android】20、活动的启动模式——singleTop
来源:互联网 发布:女鞋设计软件 编辑:程序博客网 时间:2024/05/21 19:44
本篇博文最后修改时间:2016年5月17日,23:00。
一、简介
本篇介绍活动的启动模式——singleTop。
二、实验平台
系统版本:Windows7 家庭普通版 32位操作系统。
三、版权声明
博主:思跡
声明:喝水不忘挖井人,转载请注明出处。
原文地址:http://blog.csdn.net/omoiato
联系方式:315878825@qq.com
Java零基础入门交流群:541462902
四、singleTop
可能在有些情况下,我们会觉得standard 模式不太合理。
活动明明已经在栈顶了,为什么再次启动的时候还要创建一个新的活动实例呢?
别着急,这只是系统默认的一种启动模式而已,我们完全可以根据自己的需要进行修改,
比如说使用singleTop 模式。当活动的启动模式指定为singleTop,
在启动活动时如果发现返回栈的栈顶已经是该活动,
则认为可以直接使用它,不会再创建新的活动实例。
1、修改AndroidManifest.xml 中FirstActivity 的启动模式
<activity android:name=".FirstActivity" android:launchMode="singleTop" android:label="This is FirstActivity" > <intent-filter> <action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" /> </intent-filter></activity>
2、重新运行程序,查看LogCat 会看到已经创建了一个FirstActivity 的实例
但是之后不管你点击多少次按钮都不会再有新的打印信息出现,
因为目前FirstActivity已经处于返回栈的栈顶,
每当想要再启动一个FirstActivity 时都会直接使用栈顶的活动,
因此FirstActivity 也只会有一个实例,仅按一次Back 键就可以退出程序。
不过当FirstActivity 并未处于栈顶位置时,这时再启动FirstActivity,
还是会创建新的实例的。
3、修改FirstActivity 中onCreate()方法的代码
<pre class="java" name="code"><pre name="code" class="java" style="color: rgb(85, 85, 85); font-size: 18px; line-height: 35px;">@Overrideprotected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d("FirstActivity", this.toString()); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.first_layout); Button button1 = (Button) findViewById(R.id.button_1); button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(FirstActivity.this, SecondActivity.class); startActivity(intent); } });}
4、然后修改SecondActivity 中onCreate()方法的代码
protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.d("SecondActivity", this.toString()); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.second_layout); Button button2 = (Button) findViewById(R.id.button_2); button2.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(SecondActivity.this,FirstActivity.class); startActivity(intent); } }); }
这次我们点击按钮后启动的是SecondActivity。
我们在SecondActivity 中的按钮点击事件里又加入了启动FirstActivity 的代码。
5、重新运行程序,在FirstActivity 界面点击按钮进入到SecondActivity
6、在SecondActivity 界面点击按钮,又会重新进入到FirstActivity
系统创建了两个不同的FirstActivity 实例,这是由于在SecondActivity 中再次启动FirstActivity 时,
栈顶活动已经变成了SecondActivity,因此会创建一个新的FirstActivity实例。
现在按下Back 键会返回到SecondActivity,再次按下Back 键又会回到FirstActivity,
再按一次Back 键才会退出程序。
- 【Android】20、活动的启动模式——singleTop
- Android活动Acitivity启动模式之singleTop
- Android活动Acitivity启动模式之singleTop
- Android活动Acitivity启动模式之singleTop
- Android Studio 活动的启动模式 standard singleTop singleTask singleInstance 第一行代码
- Android活动的四种启动模式--standard、singleTop、singleTask、singleInstance
- android——活动的启动模式
- 活动——活动的启动模式
- Android -- 启动模式(singleTop启动模式)
- Android activity的启动模式 singletop singletask singleinstance
- android的启动模式standard、singletop、singletask、singleinstance
- Android中Activity启动模式-SingleTop模式
- Android活动的四种启动方式(standard singleTop singleTask singleInstance)
- 最明白的Android——活动的启动模式
- android学习笔记——活动的启动模式
- Android 基础 —— 活动的启动模式
- 【Android】19、活动的启动模式——standard
- 【Android】21、活动的启动模式——singleTask
- wireshark
- Android中自动跳转到系统设置界面
- 五种复制文件
- 步步学习之用python实战机器学习1-kNN (K-NearestNeighbors)算法(a)
- 查询字符串中某字符的个数
- 【Android】20、活动的启动模式——singleTop
- LINUX SHELL控制结构while
- 2.Redis数据类型
- 初进测试——培训
- HTML5线性图表iGrapher 功能非常强大
- linux shell编程学习--循环流程while,for,until命令
- 内部类
- shell 中的% #
- 家庭仿真之任务场景截取改进