activity的启动模式
来源:互联网 发布:易语言文本处理源码 编辑:程序博客网 时间:2024/06/05 09:21
Activity的启动模式
STANDARD
我们平时直接创建的Activity都是这种模式的Activity,这种模式的Activity的特点是:只有你创建了activity实例,一旦激活该Activity,则会向任务栈中加入新创建的实例,退出Actiivty则会在任务栈中销毁实例。
实例:
`protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
activityTV= (TextView) findViewById(R.id.tv_activity); standardBtn= (Button) findViewById(R.id.btn_standard); activityTV.setText(this.toString()); standardBtn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent=new Intent(MainActivity.this ,MainActivity.class); startActivity(intent); } });}`
其中的MainActivity就是标准启动模式,每次启动一次MainActivity都会去创建一个新的MainActivity
SingleTop模式
这种模式会考虑当前要激活的Activity实例在任务栈中是否处于栈顶,如果处于栈顶则无需重新创建新的实例,会重用已存在的实例,否则会在任务栈中创建新的实例。
分两种情况来看:第一种是A Activity启动A Activity:
`protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.act_b);
textView= (TextView) findViewById(R.id.tv_activity); button= (Button) findViewById(R.id.btn); button1= (Button) findViewById(R.id.btn_1); textView.setText(this.toString()); Log.e("wj",this.toString()); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { Intent intent = new Intent(BAct.this, BAct.class); startActivity(intent); } });`
会发现如果A Activity位于栈顶,那么从A Activity启动A Activity的时候不会去创建新的A Activity 。会直接使用位于栈顶的Activity
第二种情况,A Activity的启动模式是SingleTop ,Activity的启动顺序是A–>B—>A,这时候发现B启动的A Activity是一个新的A Activity,并不是栈中存在的第一个A Activity,栈中存在的Activity一次是ABA。
因此,SingleTop启动模式当且仅当当且Activity在栈顶的时候,启动当且的Activity不会去重新实例化此Activity,如果要启动的Activity不在栈顶,那么跟Standard启动模式没有区别。
SingleTask模式
如果任务栈中存在该模式的Actiivty实例,则把栈中该实例以上的Activity实例全部移除,调用该实例的onNewIntent()方法重用该Activity,使该Activity处于栈顶位置,否则就重新创建一个新的Activity实例。
注意此处重新启动已有的Activity的时候并不会调用该Activity的onCreate()方法,直接调用onNewIntent()方法
SingleInstance模式
当该模式Activity实例在任务栈中创建后,只要该实例还在任务栈中,即只要激活的是该类型的Activity,都会通过调用实例的onNewIntent()方法重用该Activity,此时使用的都是同一个Activity实例,它都会处于任务栈的栈顶,此模式一般用于加载较慢的,比较耗性能且不需要每次都重新创建的Activity。
- activity的启动模式
- Activity的启动模式
- Activity的启动模式
- Activity的启动模式
- Activity的启动模式
- Activity的启动模式
- activity的启动模式
- Activity的启动模式
- Activity的启动模式
- Activity的启动模式
- Activity 的启动模式
- Activity的启动模式
- Activity的启动模式
- Activity的启动模式
- Activity的启动模式
- Activity的启动模式
- activity的启动模式
- Activity的启动模式
- jquery html5 视频播放控制
- 面向对象——类设计(六)——算法类
- input checkbox 复选框的操作示例
- XML概述
- 如何在终端输出带颜色的字体?PHP CLI输出颜色
- activity的启动模式
- Linux开启mysql远程连接的设置步骤
- Android消息推送1----原始的socket长链接
- HDU1285拓扑排序实例分析
- IOS学习 UIDatePicker 包含时间格式转换
- strlen()与sizeof
- linux 进程的虚拟地址和内核中的虚拟地址有什么关系
- class.getResource()用法
- FTP 服务器搭建