手机移动程序开发Android开发程序员

Activity 的启动模式

2017-11-14  本文已影响34人  lennasu

Activity 作为四大组件之首,实在是太重要了。而且,Activity的启动模式是个难点,那是因为Activity的四种启动模式和标志位很容易引起混淆,那下面我们就来好好的来分析他,一点一点啃掉这块骨头。^ - ^

为什么goole要求我们使用启动模式呢,由于我们的需求多样化,用户的体验感,以及产品经理的强制要求,真是为难我们开发者了。但是为了我们产品的用户体验感我们还得去做,goole老大哥为了我们开发者能搞出多样化的需求,就设定了Activity的启动模式。好了,步入正题。

··· 我们来理解一下Activity什么怎么被系统管理的:管理Activity的是用栈,如果学习过《数据结构》的同学应该都理解。下面我们给出一个图
[图片上传失败...(image-ff931a-1510631155062)]

栈只有出口和入口共同用一个,意思就是同一时刻做一个操作,他的原理就是先进后出,后进先出。那么我们创建Activity时就会把这个Activity的实例插入到这个栈中,当我们销毁一个Activity时就会从这个栈中pop掉。如果这个栈中没有任何Activity的实例时,系统就会回收这个栈。目前,goole老大哥给出的有四种启动模式:1.standard 2.singleTop 3.singleTask 4.singleInstance.下面来介绍一下。

standard 启动模式

singleTop启动模式

singleTask启动模式

singleInstance启动模式

介绍了这四种启动模式,那么我们怎么在开发中使用呢,有两种,
1.在AndroidMenifest中设定
<pre>
<code>
android:name=".ar.arvideo.ArVideoActivity"
android:configChanges="screenLayout"
android:launchMode="singleTask"
</code>
</pre>
2.在代码中设置
<pre>
<code>
Intent intent=new Intent();
intent.setClass(this,FaceTestActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
</code>
</pre>
第二种的优先级比第一种优先级高。
下面介绍一些Activity的Flags

  1. FLAG_ACTIVITY_NEW_TASK:
    作用是指定Activity的启动模式为“singleTask”

  2. FLAG_ACTIVITY_SINGLE_TOP:
    设置Activity的启动模式为“singleTop”

  3. FLAG_ACTIVITY_CLEAR_TOP:
    意思就是使用这个标记位时,处于这个Activity以上的都会被清除栈,这个要和“singleTask”一起使用。


好了内容就介绍到这里了,有什么不足之处,希望大家指出,小强同志

上一篇 下一篇

猜你喜欢

热点阅读