`
810364804
  • 浏览: 782962 次
文章分类
社区版块
存档分类
最新评论

Android自学笔记-16-任务栈

 
阅读更多

在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
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics