Android开发之Activity的启动模式

黑发不知勤学早,白首方悔读书迟。——《劝学》

今天花了整个下午+晚上的的时间学习了Activity的启动模式,本来以为这个知识点很简单,但是在学习的过程中发现,Activity的启动模式并没有自己想象的那么简单,下面我们一起来看看这Activity的四种启动模式吧,如有疑问欢迎留言,如有谬误欢迎大家批评指正,谢谢

Activity的启动模式共有四种

1.standard

2.singleTop

3.singleTask

4.singleInstance

如图所示:

LaunchMode在多个Activity跳转的过程中扮演着重要的角色,它可以决定是否生成新的Activity实例,是否重用已存在的Activity实例,是否和其他Activity实例公用一个task里。这里简单介绍一下task的概念,task是一个具有栈结构的对象,一个task可以管理多个Activity,启动一个应用,也就创建一个与之对应的task。

下面我们就依次来说说这几种启动模式

1.standard

standard模式是Activity默认的启动模式,当我们在没有配置activity的launchMode时它就会按照standard方式去启动,

下面通过一个实例来解释下这种启动模式

FirstActivity代码如下:

package com.example.activitylauchmodepractice;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;import android.widget.TextView;public class FirstActivity extends Activity {private Button btn_jumpToSecondActivity;private TextView tv_showViewClass;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_first);tv_showViewClass=(TextView) findViewById(R.id.tv_showViewClass);tv_showViewClass.setText(FirstActivity.this.toString());btn_jumpToSecondActivity=(Button) findViewById(R.id.btn_jumpToSecondActivity);btn_jumpToSecondActivity.setOnClickListener(new OnClickListener() {@Overridepublic void onClick(View v) {Intent intent=new Intent(FirstActivity.this,FirstActivity.class);startActivity(intent);}});}}启动后的界面

此时它所对应的任务栈如下

在此基础上我们点击按钮再次启动Activity此时的界面如下

此时的任务栈变化过程如下

我们再次点击按钮跳转到FirstActivity界面如下

此时的任务栈的变化过程如下

好了到这我们就可以分析一下了,在上述过程中我们点击了三次按钮它实例化了三个FirstActivity

这就是standard模式的特点:不管任务栈中有没有实例存在它都会实例化一个Activity

当我们点击返回按钮时它会依次把最上面的Activity出栈,上面的过程中一共实例化了三个Activity因此我们需要点击三次返回按钮应用才能退出。

2.singleTop

还用上面那个例子,此时我们给FirstActivity的属性指定为:android:launchMode="singleTop"

启动后的界面

此时的任务栈如下

我们接着点击按钮发现无论点击几次界面都没变说明它只实例化一次,此时的任务站始终是一个Activity此时点击一次返回键便可退出应用。

这是只有一个Activity的情况,下面我们说说多个Activity的情况

流过泪的眼睛更明亮,滴过血的心灵更坚强!

Android开发之Activity的启动模式

相关文章:

你感兴趣的文章:

标签云: