欢迎来到天天文库
浏览记录
ID:44781402
大小:152.96 KB
页数:10页
时间:2019-10-28
《Activity地加载模式》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库。
1、实用 Activity就相当于一块块的七巧板,每个应用用这一个个七巧板组合成了美丽的图画,那么,每个应用又是如何将各个Activity组合起来的呢?这就是本文要讲的内容。 通常情况下,一个应用有一个Task,这个Task就是为了完成某个工作的一系列Activity的集合。而这些Activity又被组织成了堆栈的形式。 当一个Activity启动时,就会把它压入该Task的堆栈,而当用户在该Activity中按返回键,或者代码中finish掉时,就会将它从该Task的堆栈中弹出。如果我们没有特别的需求,我们的应用
2、就会呈现出如下图所示的情形(好吧,我承认这个图是document里的): 然而,事实上我们的需求远没有我们想的那么简单。有时候,你可能希望在开启一个Activity时,重新开启一个Task;有时你可能希望将已经存在的一个Activity放到栈顶,而不是重新创建一个... Android为了使我们能够打破默认的堆栈的先后出的模式,提供了两个种方式:一种是在AndroidManifest.xml定义Activity时指定它的加载模式,另一种是在用Intent开启一个Activity时,在Intent中加入标志。如果两种
3、方式都用了,则后者的优先级更高。 两种方式的差别在于,前者在于描述自己,向别的Acttivity等声明你们如何来加载我;而后者则是动态的,指出我要求你(要启动的Activity)如何来加载。本文的重点在于研究在AndroidManifest.xml中声明加载模式。Android为我们定义了四种加载模式,分别是:standard、singleTop、singleTask和singleInstance。 “拿来主义”(有求必应)——standard模式 我们写一段代码来测试一下standard加载模式,如下
4、 AndroidManifest.xml里Activity的设置如下:文档实用1. 4. 5. 6. 5、tegory android:name="android.intent.category.LAUNCHER" /> 7. 8. Activity1的代码如下:1.public class Activity1 extends Activity { 2. @Override 3. public void onCreate(Bundle savedInstanceState) { 4. super.onCreate(savedInst
5、tegory android:name="android.intent.category.LAUNCHER" /> 7.
6、anceState); 5. setContentView(R.layout.main); 6. } 7. 8. /**当点击Activity时,启动另一个Activity1*/ 9. @Override 10. public boolean onTouchEvent(MotionEvent event) { 11. Intent intent = new Intent(this, Activity1.class); 12. startActivity(in
7、tent); 13. return super.onTouchEvent(event); 14. } 15.} 然后我们启动程序,开启Activity1,然后点击Acitivity1,启动另一个Activity1,然后再点击,再点击,再点击...之后我们点返回键。 发生了什么事情?没错,我们按返回键返回一个又一个相同的Activity1。 standard是Activity默认的加载模式,这种方式用一个词来形容的话就是“拿来主义”。使用这种模式的Activity向所有使用它的Task声明:“我这
8、里的这种Activity多着呢,谁需要的话我就给谁”。所以当一个Task请求加载这个Activity时,该Task直接实例化该Activity,并把它放到栈顶。 因此我们的例子就出现了这样的堆栈结构(假设我们点击了4次):Activity1Activity1Activity1Activity1Act
此文档下载收益归作者所有