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的启动模式及回退栈的概念的更多相关文章

  1. Activity LauchMode启动模式(转载)

    转载于:http://www.cnblogs.com/plokmju/p/android_ActivityLauncherMode.html 在一个Android应用中,不可避免的会包含多个Activ ...

  2. 06 Activity的启动模式 Intent的七大属性的总结

    1.Task以及back stack     >Task(任务)  为了完成一个功能  多个Activity的集合,     当你的应用程序启动时 系统会自动创建Task用于管理Activity ...

  3. Activity的启动模式--总结

    3. Activity的任务栈Task以及启动模式与Intent的Flag详解? 2,Activity次级页面和主页间来回跳转,防止重复创建Activity实例 1, activity的启动模式: / ...

  4. android Activity的启动模式

    Android中Activity启动模式详解   在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启 ...

  5. activity的启动模式和栈管理

     在学习Android的过程中,Intent是我们最常用Android用于进程内或进程间通信的机制,其底层的通信是以Binder机制实现的,在物理层则是通过共享内存的方式实现的.     Intent ...

  6. Activity之启动模式

    在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. Ac ...

  7. Activity学习(二):Activity的启动模式(转载)

    在Android中每个界面都是一个Activity,切换界面操作其实是多个不同Activity之间的实例化操作.在Android中Activity的启动模式决定了Activity的启动运行方式. An ...

  8. 关于activity的启动模式

    在Android中每个界面都是一个Activity ,界面的切换实际上是对不同Activity实例化的过程.而启动模式就决定Activity启动运行方式. 1.设置方式它是在主配置文件中,Activi ...

  9. 无废话Android之activity的生命周期、activity的启动模式、activity横竖屏切换的生命周期、开启新的activity获取他的返回值、利用广播实现ip拨号、短信接收广播、短信监听器(6)

    1.activity的生命周期 这七个方法定义了Activity的完整生命周期.实现这些方法可以帮助我们监视其中的三个嵌套生命周期循环: (1)Activity的完整生命周期 自第一次调用onCrea ...

随机推荐

  1. java类加载器学习2——自定义类加载器和父类委托机制带来的问题

    一.自定义类加载器的一般步骤 Java的类加载器自从JDK1.2开始便引入了一条机制叫做父类委托机制.一个类需要被加载的时候,JVM先会调用他的父类加载器进行加载,父类调用父类的父类,一直到顶级类加载 ...

  2. e2e 自动化集成测试 架构 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step (三) SqlServer数据库的访问

    上一篇文章“e2e 自动化集成测试 架构 京东 商品搜索 实例 WebStorm Node.js Mocha WebDriverIO Selenium Step by step 二 图片验证码的识别” ...

  3. iOS生命周期

    1.application didFinishLaunchingWithOptions:当应用程序启动时执行,应用程序启动入口,只在应用程序启动时执行一次.若用户直接启动,lauchOptions内无 ...

  4. 在Windows操作系统中,如何终止占有的8080端口的tomcat进程

    在Windows操作系统中,我们在启动一个tomcat服务器时,经常会发现8080端口已经被占用的错误,而我们又不知道如何停止这个tomcat服务器. 本文将通过命令来强行终止这个已经运行的tomca ...

  5. rsync 的安装

    Server setup 0)yum -y install xinetd vi /etc/xinetd.d/rsync and ensure following:        disable = n ...

  6. SecureCRT配置显示的字符集

  7. 转载 VPN介绍

    转载原地址:  http://aajs800.blog.51cto.com/519255/239724  原作者 aajs800 原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者 ...

  8. (二) win8+XAML Binding(数据绑定)

    第一次接触Binding是用到listview的时候,ListView中如果要动态显示一些内容,我一开始想的就是动态生成一个item,然后插入... 其实用Binding就不用在代码中涉及listvi ...

  9. DataTable 基本转换简单实例

    var query = from dt in tblProduct.AsEnumerable() where dt.Field<string>("StockNo") = ...

  10. CentOS下系统时间同步和时区的修改和设置(用的这个)

    一.修正时区 rm -rf /etc/localtime #删除当前默认时区www.kwx.gd ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localt ...