Activity的启动模式LaunchMode以及使用场景

一、前言

有关Activity的启动模式其实以前做过一些研究总结,好像是13年那会看过前辈mars还是黎活明的视频去了。可以说这也是我们Android工程师面试题中经常被问到的,最近项目有用到就想着把这块知识的代码、笔记给整理一下,废话不多说,如下图这是以前总结的代码,为了方便说明查阅单独写成一篇博文吧!

Activity的启动模式LaunchMode以及使用场景_第1张图片

二、Activity的四种启动模式

1、简介

Activity的启动模式LaunchMode以及使用场景_第2张图片                                                                                                                    

说明一下:这个任务栈其实就是一个对象,专门用来存放实例的一个对象。当你第一次打开应用的时候,就会新建一个进程,那么进程里面就会开一个任务栈,任务栈是一个对象,它是用来存放Activity实例的。

2、standard模式

步骤1:

Activity的启动模式是声明在清单文件AndroidManifest.xml文件里面的,如下图:

Activity的启动模式LaunchMode以及使用场景_第3张图片

步骤2:   

写布局文件main.xml




    

    
     

strings.xml文件代码




    Hello World, MainActivity!
    LaunchMode
    激活standard模式Activity

MainActivity.java文件代码

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        TextView textView = (TextView) this.findViewById(R.id.textView);
        //把该对象引用值,显示出来(如果创建新的实例,引用值就会不同)
        textView.setText(MainActivity.this.toString());
    
    }
    
    /**
     * 此方法在xml文件中,已经注册了点击事件.
     * 注:方法的View对象参数不能少
     * @param view
     */
    public void openStandardActivity(View view){
    	//跳转激活MainActivity自身。
    	//点击,启动激活自己,看会不会重用原有实例
    	startActivity(new Intent(this, MainActivity.class));
    	
    	//此时MainActivity的启动模式为默认的,即standard模式
    	//现在我们观察,当点击每次激活,会不会创建新的MainActivity实例,放在stack里面?
    	
    	//结果:
    	//你将会看到,每次激活textView显示的引用值都会不同
    	//即每次都会创建新的MainActivity实例
    	
    	//验证:
    	//点击后退键,要点击多次,说明生成了多个Activity界面,
    	//点击后退键,stack就会依次关掉顶部的activity,
    	//最后退出,任务stack就被干掉了
    }
    
}

步骤3:

运行程序分析:我们点击按钮,这里我点击三次测试,如下图:

Activity的启动模式LaunchMode以及使用场景_第4张图片 图3.1 Activity的启动模式LaunchMode以及使用场景_第5张图片 图3.2

 

Activity的启动模式LaunchMode以及使用场景_第6张图片 图3.3 Activity的启动模式LaunchMode以及使用场景_第7张图片 图3.4 任务栈

每次该对象引用值都不一样。说明每次激活标准启动模式的Activity,它都会创建一个新的实例。如果你点击后退键你会发现,它会按照出栈规则先进后出,依次显示图3.2、图3.1,直至程序退出,任务栈被关闭。

 

更新中。。。。。。。

 

 

你可能感兴趣的:(安卓开发)