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));
}
});
}
}
运行结果可以看到: