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 ...
随机推荐
- Web API-如何将Controller的返回值转换成HTTP response消息
https://www.asp.net/web-api/overview/formats-and-model-binding/json-and-xml-serialization https://co ...
- xmbc 资源
http://raspberrypi.diandian.com/post/2013-02-25/40048470423 http://blog.csdn.net/lincyang/article/de ...
- 用通俗的例子解释OAuth和OpenID的区别【原】
什么是OAuth(Wiki) 什么是OpenID(Wiki) 详细的定义可以看wiki,下面举个例子说说我的理解 现在很多网站都可以用第三方的账号登陆,比如,现在我要登录淘宝买东西,而如果我没有淘宝的 ...
- htmlcss笔记--a
a标签 1.下载:href里面放一个文件或者压缩包时,会下载: 2.锚点:跳转到锚点: href="#id" 跳转到的模块添加一个id,点击id就会跳转到该模块. html标签: ...
- OpenSSH 密钥管理:RSA/DSA 认证(转载)
我们中有许多人把优秀的 OpenSSH用作古老的 telnet 和 rsh 命令的替代品,OpenSSH 不仅是安全的而且是加密的. OpenSSH 更加吸引人的特性之一是它能够使用基于一对互补的数字 ...
- android获取根视图
android获取根视图 activity.getWindow().getDecorView()
- [Objective-c 基础 - 1.3] OC带返回值的类方法
/* 计算器类 1>返回π 2>计算两个整数的平方 3>计算两个整数的和 */ #import <Foundation/Foundation.h> @interface ...
- vss2005使用
http://www.cnblogs.com/nianyuwen/archive/2012/06/13/2547588.html 签出状态的文件别人无法使用:
- 第1组UI组件:布局管理器
1 布局管理的来源 为了让UI在不同的手机屏幕上都能运行良好----不同手机屏幕的分辨率/尺寸并不完全相同,如果让程序手动控制每个组件的大小.位置,会给编程带来巨大的麻烦.为了解决这个问题.andro ...
- JS基础DOM篇之一:何为DOM?
近日在园子看了一篇文章,一位前端负责人问应聘者何为DOM事件流的三个阶段,我当时一看也是懵圈,于是强迫症复发,遂想要搞清楚它.谁知在查资料的过程中发现有好多关于DOM的概念也是模糊不清,便决定继续延伸 ...