Android Activity启动模式之standard实例详解

本文实例讲述了Android Activity启动模式之standard。分享给大家供大家参考,具体如下:

Android的活动是通过任务Task来进行管理的,一个任务就是一组放在栈里的活动的集合,即所谓的返回栈(Back Stack)。栈具有先进后出、后进先出的特性。当启动一个活动时,活动会在返回栈中入栈,处于栈顶位置,当按下返回键或者调用finish方法会销毁一个活动,此时栈顶活动会出栈,届时又会有新的活动处于栈顶位置。

在Android中,活动的启动模式有四种,根据不同的需求可以为活动设置不同的启动模式。在这里介绍standard模式。

standard模式是活动启动的默认模式,当为活动设置了此模式,每次启动都会创建一个新的实例,而不在乎该活动是否已经在返回栈中存在。

(1)新建Android项目TestLaunchMode

创建完成后,修改activity_main.xml如下

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" android:orientation="vertical" > <Button android:id="@+id/button1" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="MainActivity Button" /> </LinearLayout>

(2)修改onCreate方法

@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); //打印当前对象 Log.d("MainActivity", this.toString()); //去掉title requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); //获取button1 Button button1 = (Button) findViewById(R.id.button1); //添加点击事件 button1.setOnClickListener(new OnClickListener() { @Override public void onClick(View view) { //为了测试standard启动模式,当点击按钮时,启动MainActivity活动 Intent intent = new Intent(MainActivity.this,MainActivity.class); //启动活动 startActivity(intent); } }); }

在该方法中,打印了当前活动对象,同时为按钮添加点击事件:启动本身活动。

(3)查看日志

发布android项目,为了查看效果,连续点击按钮3次,看到如下内容:

从图中可以看出,总共打印了4次(活动启动+3次点击按钮),每次的活动实例都不用,从而验证了活动启动模式standard。

此时栈中有4个MainActivity实例,连续按Back键4次才能退出应用程序。

更多关于Android Activity相关内容感兴趣的读者可查看本站专题:《Android编程之activity操作技巧总结》

希望本文所述对大家Android程序设计有所帮助。

时间: 2024-10-25 08:50:39

Android Activity启动模式之standard实例详解的相关文章

求教android activity启动模式singleInstance

问题描述 求教android activity启动模式singleInstance 下面这个例子里,为什么第一个例子有2个task第二个有3个task ? 我觉得都是2个... 谢谢! 程序有三个ActivityD1D2D3,三个Activity可互相启动,其中D2为singleInstance模式.那么程序从D1开始运行,假设D1的taskId为200,那么从D1启动D2时,D2会新启动一个task,即D2与D1不在一个task中运行.假设D2的taskId为201,再从D2启动D3时,D3的

Android开发之Animations动画用法实例详解_Android

本文实例讲述了Android开发之Animations动画用法.分享给大家供大家参考,具体如下: 一.动画类型 Android的animation由四种类型组成:alpha.scale.translate.rotate XML配置文件中 alpha 渐变透明度动画效果 scale 渐变尺寸伸缩动画效果 translate 画面转换位置移动动画效果 rotate 画面转移旋转动画效果 Java Code代码中 AlphaAnimation 渐变透明度动画效果 ScaleAnimation 渐变尺寸

Android编程中context及全局变量实例详解_Android

本文实例讲述了Android编程中context及全局变量的用法.分享给大家供大家参考,具体如下: 今天在研究context的时候,对application和activity context有了一定的了解,下面是从网上复制过来的资料 Application context和Activity context的区别: 这是两种不同的context,也是最常见的两种.第一种中context的生命周期与Application的生命周期相关的,context随着Application的销毁而销毁,伴随ap

Android Activity的跳转与传值详解

Android Activity的跳转与传值详解 Activity跳转与传值,主要是通过Intent类来连接多个Activity,以及传递数据. Intent是Android一个很重要的类.Intent直译是"意图",什么是意图呢?比如你想从这个Activity跳转到另外一个Activity,这就是一个意图.Intent类在Android系统中的作用很大,在此不详细说了,后面有文章介绍! Activity跳转,无返回结果 这是最简单的Activity跳转方式.从一个Activity启动

Android 自定义imageview实现图片缩放实例详解

Android 自定义imageview实现图片缩放实例详解 觉得这个自定义的imageview很好用 性能不错  所以拿出来分享给大家  因为不会做gif图  所以项目效果 就不好贴出来了  把代码贴出来 1.项目结构图 2.Compat.class package com.suo.image; import android.os.Build.VERSION; import android.os.Build.VERSION_CODES; import android.view.View; pu

Android Studio 修改应用包名实例详解

Android Studio 修改应用包名实例详解 我们平时新建项目有些朋友可能当时就是随意写的一个包名,然后在项目过程中, 又感觉这个包名不太好,所以就要对包名进行修改,根据我们正常的修改方式,是这样的. 在种情况是只能修改最外层的那个名称, 如果我们现在是需要修改中间的某一个,这里就行不通了. 那么我们来看一下如何修改成你最终要的包名. 操作图如下: 看到没有,我们只需要在setting里面,把 compact empty middle packages 这个选项去掉,这样,我们的包的层次结

Android 拦截返回键事件的实例详解

Android 拦截返回键事件的实例详解 KeyEvent类 Android.View.KeyEvent类中定义了一系列的常量和方法,用来描述Android中的 按键事件和返回键有关的常量和方法有. KeyEvent.KEYCODE_BACK: 表示key类型为返回键 KeyEvent.ACTION_DOWN:表示事件为按下key,如果一直按住不放,则会不停产生此事件. KeyEvent.ACTION_UP:表示事件为为放开key,一次点击key过程只会调用一次. public final in

Android 消息分发使用EventBus的实例详解

Android 消息分发使用EventBus的实例详解 1. AndroidStudio使用 dependencies { //最新版本 compile 'org.greenrobot:eventbus:3.0.0' //可以翻倍提高EventBus使用效率 provided 'de.greenrobot:eventbus-annotation-processor:3.0.0-beta1' } 2. 在基类Activity中配置 /** * Activity基类 */ protected Eve

Android 通过网络图片路径查看图片实例详解

Android 通过网络图片路径查看图片实例详解 1.在项目清单中添加网络访问权限 <!--访问网络的权限--> <uses-permission android:name="android.permission.INTERNET"/> 2.获取网络图片数据 /** * 获取网络图片的数据 * @param path 网络图片路径 * @return * @throws Exception */ public static byte[] getImage(Str