文档详情

基础总结篇之二Activity的四种launchMode.doc

发布:2017-06-20约6.35千字共10页下载文档
文本预览下载声明
合抱之木,生於毫末;九層之台,起於累土;千里之行,始於足下。《老子》 今天在社区看到有朋友问“如何在半年内成为顶级架构师”,有网友道“关灯睡觉,不用半年的...”,的确,做梦还来的快一些。作为一个程序员,树立远大的目标是值得欣赏的,但不能只去空想,要一步一步地实践才行。成大事者,须从小事做起;万事起于忽微,量变引起质变。 我们今天要讲的是Activity的四种launchMode。 launchMode在多个Activity跳转的过程中扮演着重要的角色,它可以决定是否生成新的Activity实例,是否重用已存在的Activity实例,是否和其他Activity实例公用一个task里。这里简单介绍一下task的概念,task是一个具有栈结构的对象,一个task可以管理多个Activity,启动一个应用,也就创建一个与之对应的task。 Activity一共有以下四种launchMode: 1.standard 2.singleTop 3.singleTask 4.singleInstance 我们可以在AndroidManifest.xml配置activity的android:launchMode属性为以上四种之一即可。 下面我们结合实例一一介绍这四种lanchMode: 1.standard standard模式是默认的启动模式,不用为activity配置android:launchMode属性即可,当然也可以指定值为standard。 我们将会一个Activity,命名为FirstActivity,来演示一下标准的启动模式。FirstActivity代码如下: [java]?view plaincopy package?com.scott.launchmode;?? ?? import?android.app.Activity;?? import?android.content.Intent;?? import?android.os.Bundle;?? import?android.view.View;?? import?android.widget.Button;?? import?android.widget.TextView;?? ?? public?class?FirstActivity?extends?Activity?{?? ????@Override?? ????public?void?onCreate(Bundle?savedInstanceState)?{?? ????????super.onCreate(savedInstanceState);?? ????????setContentView(R.layout.first);?? ????????TextView?textView?=?(TextView)?findViewById(R.id.textView);?? ????????textView.setText(this.toString());?? ????????Button?button?=?(Button)?findViewById(R.id.button);?? ????????button.setOnClickListener(new?View.OnClickListener()?{?? ????????????@Override?? ????????????public?void?onClick(View?v)?{?? ????????????????Intent?intent?=?new?Intent(FirstActivity.this,?FirstActivity.class);?? ????????????????startActivity(intent);?? ????????????}?? ????????});?? ????}?? }?? 我们FirstActivity界面中的TextView用于显示当前Activity实例的序列号,Button用于跳转到下一个FirstActivity界面。 然后我们连续点击几次按钮,将会出现下面的现象: 我们注意到都是FirstActivity的实例,但序列号不同,并且我们需要连续按后退键两次,才能回到第一个FristActivity。standard模式的原理如下图所示: 如图所示,每次跳转系统都会在task中生成一个新的FirstActivity实例,并且放于栈结构的顶部,当我们按下后退键时,才能看到原来的FirstActivity实例。 这就是standard启动模式,不管有没有已存在的实例,都生成新的实例。 2.singleTop 我们在上面的基础上为activity指定属性android:launchMode=single
显示全部
相似文档