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. MFC无边框窗体不响应任务栏点击问题

    为了提升用户体验,需要隐藏主窗体的边框,使用图片绘制新的标题栏.标题栏绘制之后,发现用户点击任务栏上应用程序的图标,应用程序不会随着点击交替隐藏显示. 分析结果是问题出现窗体风格设置上. 最初为了省事 ...

  2. SqlServer中截取字符串

    SQL Server 中截取字符串常用的函数: .LEFT ( character_expression , integer_expression ) 函数说明:LEFT ( '源字符串' , '要截 ...

  3. 第一天CSS实战培训及笔记及感想

    首先,我很激动...... 3点了,凌晨3点了,我居然还没睡.总共不到3个小时的视频消化了6个小时,今天是培训班第一天,一下子就来高强度的讲课,整个上过基础班的都听得东倒西歪,更别说我这个没上基础班滴 ...

  4. Clean Code – Chapter 2: Meaningful Names

    Use Intention-Revealing Names The name should tell you why it exists, what it does, and how it is us ...

  5. C#通过DllImport引入dll中的C++非托管类(转)

    http://blog.sina.com.cn/s/blog_70a144580100tmj8.html

  6. POJ-3744 Scout YYF I 概率DP

    题目链接:http://poj.org/problem?id=3744 简单的概率DP,分段处理,遇到mine特殊处理.f[i]=f[i-1]*p+f[i-2]*(1-p),i!=w+1,w为mine ...

  7. 100+经典Java面试题及答案解析

    面向对象编程(OOP) Java是一个支持并发.基于类和面向对象的计算机编程语言.下面列出了面向对象软件开发的优点: 代码开发模块化,更易维护和修改. 代码复用. 增强代码的可靠性和灵活性. 增加代码 ...

  8. Java字符流读写数据的两种方式

    第一种方式:逐个字符进行读写操作(代码注释以及详细内容空闲补充) package IODemo; import java.io.FileReader; import java.io.FileWrite ...

  9. A Tour of Go Maps

    A map maps keys to values. Maps must be created with make (not new) before use; the nil map is empty ...

  10. uCos 没有延时Tick滴答定时器测试

    原来学uCos只是表面,今天才发现uCos没有心跳也是可以活的,只是延时功能. 即:OSTimeDly.OSTimexxx 头的功能不能使用. 如果有是用OSTimexxx,任务将会卡死.其实,OST ...