Activity的启动模式及回退栈的概念
Activity的启动模式
standard 正常模式
在创建一个新的activity的时候,直接在栈顶创建一个新的activity
singleTop 顶部单个
在创建一个新的activity的时候,如果当前栈的顶部有该类型的activity,不会创建新的activity,直接用 如果当前栈的顶部没有改类型的activity,会创建一个新的activity任务栈中其他类型的activity不受影响,一个栈中可以有多个,但是不能连续
singleTask 单个任务
在创建一个新的activity的时候,如果当前栈中没有该类型的activity时,会创建一个新的activity
如果当前栈的顶部有该类型的activity,不会新的activity,直接用,一个栈中只有一个该类型的activity
singleInstance 单实例
在创建一个新的activity的时候, 会创建一个新的栈,会把该activity放在新的栈中,不会放在启动的栈中,如果再次需要创建,不会新创建,会直接用新的栈中的该类型的activity
/**
* 1.task 任务
去完成一项任务所涉及到的所有的activity的集合
特点: 1.可以有多个任务
2.启动的过程: 当我们在系统的桌面上点击app图标的的时候,会开启一个任务
如果这个任务已经启动,会直接进入到上次任务最后显示的activity
如果这个任务没有启动,会新建一个任务,启动第一个activity,这个activity通常称为主activity,根activity,栈低的activity 2.回退栈
1.开启一个任务的时候就会有一个任务栈
2.打开一个activity的时候,如果是该任务刚打开,该activity会放在栈低, 如果已经有activity已经打开了,新的acivity会放在栈顶(之前在栈顶的生命周期 onpase -- onstop)
3.当点击返回的按钮的时候,会将栈顶的activity移除 (onpase---onstop ---ondestory),在栈顶下面的 --onrestart--onstart--onresume
如果在栈低的activity上按返回键,会关闭任务
** 4.后进先出
layouta.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#ff00ff" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="跳转到activitya"
android:onClick="gotoAActivity"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="跳转到activityb"
android:onClick="gotoBActivity"/>
</LinearLayout>
layoutb.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
android:background="#ffffff" >
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="跳转到activitya"
android:onClick="gotoAActivity"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="跳转到activityb"
android:onClick="gotoBActivity"/>
</LinearLayout>
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.example.day06_task"
android:versionCode="1"
android:versionName="1.0" > <uses-sdk
android:minSdkVersion="17"
android:targetSdkVersion="17" /> <application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<activity
android:name="com.example.day06_task.AActivity"
android:label="@string/app_name" >
<intent-filter>
<action android:name="android.intent.action.MAIN" /> <category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name="com.example.day06_task.BActivity"
android:launchMode="singleInstance"> </activity>
</application> </manifest>
AActivity.java
package com.example.day06_task; import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View; * @author my
*
*/
public class AActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layouta);
}
public void gotoBActivity(View v){
Log.i("info", "跳转到BActivity");
startActivity(new Intent(AActivity.this, BActivity.class)); }
public void gotoAActivity(View v){
Log.i("info", "跳转到AActivity");
startActivity(new Intent(AActivity.this, AActivity.class)); } }
BActivity.java
package com.example.day06_task; import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.View; public class BActivity extends Activity { @Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.layoutb);
}
public void gotoBActivity(View v){
Log.i("info", "跳转到BActivity");
startActivity(new Intent(BActivity.this, BActivity.class)); }
public void gotoAActivity(View v){
Log.i("info", "跳转到AActivity");
startActivity(new Intent(BActivity.this, AActivity.class)); }
}
Activity的启动模式及回退栈的概念的更多相关文章
- Activity LauchMode启动模式(转载)
转载于:http://www.cnblogs.com/plokmju/p/android_ActivityLauncherMode.html 在一个Android应用中,不可避免的会包含多个Activ ...
- 06 Activity的启动模式 Intent的七大属性的总结
1.Task以及back stack >Task(任务) 为了完成一个功能 多个Activity的集合, 当你的应用程序启动时 系统会自动创建Task用于管理Activity ...
- Activity的启动模式--总结
3. Activity的任务栈Task以及启动模式与Intent的Flag详解? 2,Activity次级页面和主页间来回跳转,防止重复创建Activity实例 1, activity的启动模式: / ...
- android Activity的启动模式
Android中Activity启动模式详解 在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启 ...
- activity的启动模式和栈管理
在学习Android的过程中,Intent是我们最常用Android用于进程内或进程间通信的机制,其底层的通信是以Binder机制实现的,在物理层则是通过共享内存的方式实现的. Intent ...
- Activity之启动模式
在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. Ac ...
- Activity学习(二):Activity的启动模式(转载)
在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. An ...
- 关于activity的启动模式
在Android中每个界面都是一个Activity ,界面的切换实际上是对不同Activity实例化的过程.而启动模式就决定Activity启动运行方式. 1.设置方式它是在主配置文件中,Activi ...
- 无废话Android之activity的生命周期、activity的启动模式、activity横竖屏切换的生命周期、开启新的activity获取他的返回值、利用广播实现ip拨号、短信接收广播、短信监听器(6)
1.activity的生命周期 这七个方法定义了Activity的完整生命周期.实现这些方法可以帮助我们监视其中的三个嵌套生命周期循环: (1)Activity的完整生命周期 自第一次调用onCrea ...
随机推荐
- HDU 1163 Eddy's digital Roots
Eddy's digital Roots Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Oth ...
- 编程精粹:编写高质量的C语言代码———笔记一
第一章 假想的编译程序 要记得对空语句进行处理,最好使用NULL使其明显可见 char * strcpy(char* pchTo, char* pchFrom) { char* pchStart = ...
- Python脚本控制的WebDriver 常用操作 <十八> 获取测试对象的css属性
测试用例场景 当你的测试用例纠结细枝末节的时候,你就需要通过判断元素的css属性来验证你的操作是否达到了预期的效果.比如你可以通过判断页面上的标题字号以字体来验证页面的显示是否符合预期.当然,这个是强 ...
- 十款PHP开发框架对比
PHP开发框架近来在PHP社区中成为讨论的热点,几乎每天都在推出新的框架.面对市面上超过四十种的开发框架,你很难判断究竟哪一款最适合你,尤其是在这些框架所提供的功能不尽相同的时候. 本文将引导你 ...
- Ubuntu 12.04 安装Scrapy爬虫框架
转自:http://www.cnblogs.com/HelloPython/ 亲测有效 根据Scrapy安装指南(http://doc.scrapy.org/en/latest/intro/insta ...
- ASIHTTPRequest 编码问题
今天在模拟登陆时,中文的用户名一直登陆不上,对用户名进行了各种转码还是不能解决. 在这个问题上一直卡了半个多小时,最终才发现根本不是用户名的编码问题,而是使用的第三方网络插件的ASIHTTPReque ...
- NOIP 2014 无线网络发射器选址
水题..直接暴力 #include<cstdio> #include<algorithm> using namespace std; const int inf = 0x3f3 ...
- Crash的旅行计划
除草了.. Crash的旅行计划 [问题描述] 过不了多久,Crash就要迎来他朝思暮想的暑假.在这个暑假里,他计划着到火星上旅游.在火星上有N个旅游景点,Crash用1至N这N个正整数对这些景点标号 ...
- Delphi监视进程并结束进程
监视进程并结束进程在很多地方都用到这里借前人的经验写了个小例子: 以QQ的进程qq.exe为例 关键代码如下: function CheckTask(ExeFileName: string): Boo ...
- A Tour of Go Mutating Maps
Insert or update an element in map m: m[key] = elem Retrieve an element: elem = m[key] Delete an ele ...