Android中Activity的引导方式launcherMode的四种方式。

         在Android系统中活动Activity的加载模式是大致可以分为四种,分别是:standard、singleTop、singleTask、singleInstance。而针对于Activity的不同的加载模式直接决定着相应的Activity的生命周期。设置Activity的加载模式实在AndroidManifest.xml中<activity>的配置中加入Android:launcherModel="xxxxxxx".

1.standard

standard 是android Activity的默认加载模式,所以使用标准加载模式时可以不进行配置设置,同样你也可以进行相应的配置。

看下面一个实例:下面展示的MainActivity得代码:

package com.example.testlaunchermodel;

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

public class MainActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		TextView text = (TextView) findViewById(R.id.textView1);
		text.setText(this.toString());
		Button but = (Button) findViewById(R.id.button1);
		but.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				Intent intent = new Intent();
				intent.setClass(MainActivity.this, MainActivity.class);
				startActivity(intent);
			}});
	}

	@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;
	}

}
SecendActivity的代码结构如下:

package com.example.testlaunchermodel;

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

import android.widget.Button;
import android.widget.TextView;

public class SecendActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_secend);
		TextView text  = (TextView) findViewById(R.id.threadId);
		text.setText(this.toString());
		Button but = (Button)findViewById(R.id.secendButton);
		but.setOnClickListener(new OnClickListener(){

			@Override
			public void onClick(View arg0) {
				// TODO Auto-generated method stub
				Intent intent = new Intent();
				intent.setClass(SecendActivity.this, MainActivity.class);
				startActivity(intent);
				
			}});
	}

	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		// Inflate the menu; this adds items to the action bar if it is present.
		getMenuInflater().inflate(R.menu.secend, menu);
		return true;
	}

}
分别在MainAcitivy和SecendActivity的布局上添加一个TextView和Button。TextView用于显示现在的Activity的序列号,button的事件用来完成不同的Activity之间的跳转活动。

从MainActivity跳转到SecendActivity再跳转回来这个循环的过程会发现每次创建的活动的序列号都是不一样的从而说明:

standard的加载模式不管是否已经存在Activity都会再次创建一个Acitivy,同时将新创建的Activity加入栈顶。所以在这种加载模式下需要多次返回才能退出。

下面我不再一一介绍具体的代码,只需在上述代码基础修改相应的Activity的加载模式就好。就可以看到相应的效果。

2.singleTop

singleTop模式就是在Activity处在栈顶时直接利用不在栈顶时创建新的Activity压入栈。

3.singleTask

singleTask模式如果发现有对应的Activity实例,则使此Activity实例之上的其他Activity实例统统出栈,使此Activity实例成为栈顶对象,显示到幕前。

4.singleInstance

singleInstance模式较为特殊:他会每次创建时创建一个新的栈用于存储自己。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值