在AndroidManifest中Activity的launchMode有四种类型:
1.standard
2.singleTop
3.singleTask
4.singleInstance
今天就简单介绍一下,附上一个参考地址,人家写的牛逼http://blog.csdn.net/moreevan/article/details/6788048
下面还是看代码吧,都放到注释里了:
package com.mxy;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.View;
/**
* 进程 参考http://blog.csdn.net/niu_gao/article/details/7202300
* Activity四种启动模式
* standard 按照栈先进后出的顺序存储
* 例如 依次点开 act1 act2 act1 act2 点击返回的时候就是 act2 act1 act2 act1 虽然里面有两个act1 两个act2 但却都不相同
*
* singleTop 当进入的Activity已经在栈顶了,不会再创建新的Activity放入栈中,而是复用栈顶的activity,但是会调用onResume方法
* 例如 act2是singleTop的 依次点击 act1 act1 act2 act2 act2 这时候栈中存着的就是act1 act1 act2 点击返回的饿时候就是act2 act1 act1
* 在浏览器中得书签会用到该模式
*
* SingleTask 一般和singleTop操作模式类似,如果他发现任务栈里面已经有了要启动的这个Activity,他会清空这个Activity所在的任务栈上面的所有Activiy,然后直接复用这个已经存在的Activity 。
* 例如 act2是SingleTask的 依次进入 act1 act2 act1 act2 act1 act2这时候栈中存在的是act1 act2 点击返回的时候就是act2 act1
*
* singleinstance 被设置了singleinstance得Activity,会放入一个独自的任务栈,然后其他未设置为singleinstance的任务栈,如果设置了singleinstance得Activity
* 被请求了,那这时候这个任务栈的优先级就比另一个普通的任务栈的级别高,就会被运行,如果其他的Activity被请求,就会降低该任务栈的优先级
* 例如 act2是singleinstance的 这时候我们
* 点击act1 后
* 任务栈 优先级 栈中数据(左边表示栈顶)
* 普通 低 act1
*点击act2后
* 普通 低 act1
* 单例 高 act2
* 点击act3后
* 普通 高 act1 act3
* 单例 低 act2
*点击act2后
* 普通 低 act1 act3
* 单例 高 act2
* @author mxy
*
*/
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
@Override
protected void onResume() {
Log.i("mxy", "MainActivity");
super.onResume();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public void click(View view){
Intent intent = new Intent(this,SecondActivity.class);
startActivity(intent);
}
}
例子源码地址:http://download.csdn.net/detail/mengxiangyue/7262467