Android Activity的4种启动模式详解(代码+截图)

本文详细探讨了Android Activity的standard、singleTop、singleTask和singleInstance四种启动模式,结合启动顺序和返回退出的实例,阐述了每种模式下Activity的创建与管理。了解这些模式有助于更好地控制Activity的生命周期和数据传递。
摘要由CSDN通过智能技术生成

最近研究android内核,学习到android activity的启动模式,掌握好启动模式,对activity的处理例如关闭和开启,以及数据间的传输有很大的帮助。

看此博文前,请花点时间先看一下一个博主写的:http://www.cnblogs.com/lwbqqyumidi/p/3771542.html,有助于下面理解。。

我们同4个activity的启动来看其中的原理。。。。。。

下面是xml文件(很简单):

first.xml

其他的类似。。。。

通过standard启动:

4个activity的定义:

public class Activity1 extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		Log.v("Standard", "activity1 oncreate");
		setContentView(R.layout.first);
		TextView textView=(TextView) findViewById(R.id.textView1);
		TextView textIdView=(TextView) findViewById(R.id.textIdView1);
		textView.setText(this.toString());
		textIdView.setText("current task id:"+this.getTaskId());
		Button bt=(Button) findViewById(R.id.button1);
		bt.setOnClickListener(new View.OnClickListener() {
			
			@Override
			public void onClick(View v) {
				Intent intent=new Intent(Activity1.this,Activity2.class);
				startActivity(intent);
			}
		});
	}

	@Override
	protected void onStart() {
		super.onStart();
		Log.v("Standard", "activity1 onStart");
	}

	@Override
	protected void onPause() {
		super.onPause();
		Log.v("Standard", "activity1 onPause");
	}

	@Override
	protected void onStop() {
		super.onStop();
		Log.v("Standard", "activity1 onStop");
	}

	@Override
	protected void onDestroy() {
		super.onDestroy();
		Log.v("Standard", "activity1 onDestroy");
	}

}


public class Activity2 extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.second);
		Log.v("SingleInstance", "activity2 oncreate");
		TextView textView=(TextView) findViewById(R.id.textView2);
		TextView textIdView=(TextView) findViewById(R.id.textIdView2);
		textView.setText(this.toString());
		textIdView.setText("current task id:"+this.getTaskId());

		Button bt = (Button) findViewById(R.id.button2);
		bt.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				Intent intent = new Intent(Activity2.this, Activity3.class);
				startActivity(intent);
			}
		});
	}

	@Override
	protected void onStart() {
		super.onStart();
		Log.v("SingleInstance", "activity2 onStart");	
	}

	@Override
	protected void onPause() {
		super.onPause();
		Log.v("SingleInstance", "activity2 onPause");	
	}

	@Override
	protected void onStop() {
		super.onStop();
		Log.v("SingleInstance", "activity2 onStop");	
	}

	@Override
	protected void onDestroy() {
		super.onDestroy();
		Log.v("SingleInstance", "activity2 onDestroy");	
	}

}

public class Activity3 extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.third);
		Log.v("SingleInstance", "activity3 oncreate");
		TextView textView=(TextView) findViewById(R.id.textView3);
		TextView textIdView=(TextView) findViewById(R.id.textIdView3);
		textView.setText(this.toString());
		textIdView.setText("current task id:"+this.getTaskId());

		Button bt = (Button) findViewById(R.id.button3);
		bt.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				Intent intent = new Intent(Activity3.this, Activity4.class);
				startActivity(intent);
			}
		});
	}

	@Override
	protected void onStart() {
		super.onStart();
		Log.v("SingleInstance", "activity3 onStart");	
	}

	@Override
	protected void onPause() {
		super.onPause();
		Log.v("SingleInstance", "activity3 onPause");	
	}

	@Override
	protected void onStop() {
		super.onStop();
		Log.v("SingleInstance", "activity3 onStop");	
	}

	@Override
	protected void onDestroy() {
		super.onDestroy();
		Log.v("SingleInstance", "activity3 onDestroy");	
	}

}

public class Activity4 extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.forth);
		Log.v("SingleInstance", "activity4 oncreate");
		TextView textView = (TextView) findViewById(R.id.textView4);
		TextView textIdView = (TextView) findViewById(R.id.textIdView4);
		textView.setText(this.toString());
		textIdView.setText("current task id:"+this.getTaskId());

		Button bt = (Button) findViewById(R.id.button4);
		//bt.setText("forth go to forth");
		bt.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				//Intent intent = new Intent(Activity4.this, Activity4.class);
				Intent intent = new Intent(Activity4.this, Activity1.class);
				startActivity(intent);
			}
		});
	}

	@Override
	protected void onStart() {
		super.onStart();
		Log.v("SingleInstance", "activity4 onStart");
	}

	@Override
	protected void onPause() {
		super.onPause();
		Log.v("SingleInstance", "activity4 onPause");
	}

	@Override
	protected void onStop() {
		super.onStop();
		Log.v("SingleInstance", "activity4 onStop");
	}

	@Override
	protected void onDestroy() {
		super.onDestroy();
		Log.v("SingleInstance", "activity4 onDestroy");
	}

}
AndroidManifest.xml的配置:

<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值