Android-Activity的启动模式-IntentFlag

Activity的启动模式-IntentFlag

Android:taskAffinity
指出它希望进入的task
如果一个Activity没有显示的指名该Activity的taskAffinity,那么它的这个属性就等于Application指明的taskAffinity
如果Application也没有指名,那么该taskAffinity的值就等于包名
Task也有自己的affinity属性,它的值等于它的根Activity的taskAffinity的值

IntentFlag的常用值
1.FLAG_ACTIVITY_NEW_TASK
系统会寻找或创建一个新的task来放置目标Activity,寻找时依据目标Activity的taskAffinity属性进行匹配,如果找到一个task的taskAffinity与之相同,就将目标Activity压入此task中,如果查找无果,则创建一个新的task,并将该task的taskAffinity设置为目标Activity的taskAffinity,将目标Activity放置于此task

2.FLAG_ACTIVITY_SINGLE_TOP
当task中存在目标Activity实例并且位于栈的顶端时,不再创建一个新的,直接利用这个实例

3.FLAG_ACTIVITY_CLEAR_TOP
如果要激活的那个Activity在任务栈中存在该实例,则不需要创建,只需要把此Activity放入栈顶,并把该Activity以上的Activity实例都出栈

4.FLAG_ACTIVITY_REORDER_TO_FRONT
如果栈里已经存在,则将它拿到栈顶,不会启动新Activity

设置IntentFlag的方法
Intent intent = new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

package com.maizi.launchmode;

import android.app.Activity;
import andorid.os.Bundle;

public class MainActivity extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(saveInstanceState);
    setContentView(R.layout.activity_main);

    Log.e("MainActivity", "当前处于的taskId = "+getTaskId());

    Button bthStart = (Button) findViewById(R.id.bth_start);
     bthStart.setOnClickListener(new View.OnClickListener(){
        @Override
        public void onClick(View v){
            //指定IntentFlag来启动SecondActivity;
            Intent intent = new Intent(MainActivity.this, SecondActivity.class);

            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);
        }
    });
}

}

package com.maizi.launchmode;

import android.app.Activity;
import android.os.Bundle;

public class SecondActivity extends Activity{

@Override
protected void onCreate(Bundle savedInstanceState){
    super.onCreate(saveInstanceState);
    setContentView(R.layout.activity_second);

    Log.e("SecondActivity", "当前处于的taskId = "+getTaskId());
}

}


   
       
           
           
       
   
   
   

你可能感兴趣的:(Android)