Android开发之Activity四大启动模式



Android的四种启动模式

standard:每次调用startActivity()启动时都会创建一个新的Activity放在栈顶

singleTop:如果启动Activity时。指定的Activity不再栈顶就创建。如在栈顶则不再创建

singleTask:如果启动的Activity不存在就创建。如果存在直接跳转到指定的Activity所在位置。在他上面的全部销毁

singleInstance:如果启动Activity不存在就创建。如果存在就将指定的Activity移动到栈顶(单独栈)

下面让我们用具体的实例来看看:

每种启动模式均在注册文件中注册:

      <activity
            android:name="com.brucecheng.fourstart.StandardMode"
            android:label="@string/app_name" >

                   </activity>
        <activity
            android:name="com.brucecheng.fourstart.SingleTop"
            android:label="@string/app_name"
            android:launchMode="singleTop" >

                  </activity>
        <activity
            android:name="com.brucecheng.fourstart.SingleTask"
            android:label="@string/app_name"
            android:launchMode="singleTask" >
                  </activity>
          <activity
            android:name="com.brucecheng.fourstart.SingleInstance"
            android:label="@string/app_name"
            android:launchMode="singleInstance" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
         <activity
            android:name="com.brucecheng.fourstart.TestActivity"
            android:label="@string/app_name"
            android:launchMode="singleTask" >
        </activity>

第一种:Standard:

package com.brucecheng.fourstart;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class StandardMode extends Activity {

	//寻找控件
	Button btn_standard;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_start_mode);
		//实例化控件
		btn_standard=(Button) findViewById(R.id.btn_standard);
		//设置监听事件
		btn_standard.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				StandardMode.this.startActivity(new Intent(
						StandardMode.this,StandardMode.class));
			}
		});
	}
}

第二种启动模式:singleTop

package com.brucecheng.fourstart;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class SingleTop extends Activity {
 //寻找控件
  Button btn_singletop,btn_skip;
  @Override
  protected void onCreate(Bundle savedInstanceState) {
   super.onCreate(savedInstanceState);
   setContentView(R.layout.singletop);
   //实例化控件
   btn_singletop=(Button) findViewById(R.id.btn_singletop);
   btn_skip=(Button) findViewById(R.id.btn_skip);
   //设置监听事件
   btn_singletop.setOnClickListener(new OnClickListener() {
    
    @Override
    public void onClick(View v) {
     SingleTop.this.startActivity(new Intent(
       SingleTop.this,SingleTop.class));
    }
   });
   btn_skip.setOnClickListener(new OnClickListener() {
    
    @Override
    public void onClick(View v) {
     SingleTop.this.startActivity(new Intent(
       SingleTop.this,TestActivity.class));
    }
   });
  }
}

第三种模式:Single Instance

package com.brucecheng.fourstart;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class SingleInstance extends Activity {
	//寻找控件
	Button btn_singleinstance;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.singleinstance);
		//实例化控件
		btn_singleinstance=(Button) findViewById(R.id.btn_singleinstance);
		//设置监听事件
		btn_singleinstance.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				SingleInstance.this.startActivity(new Intent(
						SingleInstance.this,SingleTop.class));
			}
		});
	}
}

第四种模式:Single Task

package com.brucecheng.fourstart;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class SingleTask extends Activity {
	//寻找控件
			Button btn_singletask;
			@Override
			protected void onCreate(Bundle savedInstanceState) {
				super.onCreate(savedInstanceState);
				setContentView(R.layout.singletask);
				//实例化控件
				btn_singletask=(Button) findViewById(R.id.btn_singletask);
				//设置监听事件
				btn_singletask.setOnClickListener(new OnClickListener() {
					
					@Override
					public void onClick(View v) {
						SingleTask.this.startActivity(new Intent(
								SingleTask.this,SingleTop.class));
					}
				});
			}
}

下面是测试类:

package com.brucecheng.fourstart;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class TestActivity extends Activity{

	//寻找控件
	Button btn_test,btn_skip;
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.test);
		//实例化控件
		btn_test=(Button) findViewById(R.id.btn_test);
		btn_skip=(Button) findViewById(R.id.btn_skip);
		//设置监听事件
		btn_skip.setOnClickListener(new OnClickListener() {
			@Override
			public void onClick(View v) {
				TestActivity.this.startActivity(new Intent(
						TestActivity.this,SingleInstance.class));
			}
		});
	}
}

运行结果可以看到:







  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

BruceCheng夏夏

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值