Android基础篇-常用的退出连串跳转的Activtiy,以及双击退出

直接代码,不说废话

1.创建一个MyApplication继承自Application,如下:

public class MyApplication extends Application {
	private List<Activity> oList;// 用于存放所有启动的Activity的集合

	public void onCreate() {
		super.onCreate();
		oList = new ArrayList<Activity>();
	}

	/**
	 * 添加Activity
	 */
	public void addActivity_(Activity activity) {
		// 判断当前集合中不存在该Activity
		if (!oList.contains(activity)) {
			oList.add(activity);// 把当前Activity添加到集合中
		}
	}

	/**
	 * 销毁单个Activity
	 */
	public void removeActivity_(Activity activity) {
		// 判断当前集合中存在该Activity
		if (oList.contains(activity)) {
			oList.remove(activity);// 从集合中移除
			activity.finish();// 销毁当前Activity
		}
	}

	/**
	 * 销毁所有的Activity
	 */
	public void removeALLActivity_() {
		// 通过循环,把集合中的所有Activity销毁
		for (Activity activity : oList) {
			activity.finish();
		}
	}
}

2.立即去manifest文件中在Application中添加name,如下:
这里写图片描述

3.写一个基类Activity继承自Activity,如下:

public class BaseActivity extends Activity {

	private MyApplication application;
	private BaseActivity oContext;

	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);

		if (application == null) {
			// 得到Application对象
			application = (MyApplication) getApplication();
		}
		oContext = this;// 把当前的上下文对象赋值给BaseActivity
		addActivity();// 调用添加方法
	}

	// 添加Activity方法
	public void addActivity() {
		application.addActivity_(oContext);// 调用myApplication的添加Activity方法
	}

	// 销毁当个Activity方法
	public void removeActivity() {
		application.removeActivity_(oContext);// 调用myApplication的销毁单个Activity方法
	}

	// 销毁所有Activity方法
	public void removeALLActivity() {
		application.removeALLActivity_();// 调用myApplication的销毁所有Activity方法
	}

	/* 把Toast定义成一个方法 可以重复使用,使用时只需要传入需要提示的内容即可 */
	public void show_Toast(String text) {
		Toast.makeText(oContext, text, Toast.LENGTH_SHORT).show();
	}
}

4.将那些连串跳转的Activity继承自BaseActivity,下面我是从MainActivity跳到One再到One2再到MainActivity,最后在MainActivity中实现双击退出以及退出所有连续的Activity如下:

public class MainActivity extends BaseActivity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
	}
	public void btnBack(View view)
	{
		Intent intent=new Intent(MainActivity.this,One.class);
		startActivity(intent);
	}
	// 重写onKeyDown方法
	public boolean onKeyDown(int keyCode, KeyEvent event) {
		// 判断当点击的是返回键
		if (keyCode == event.KEYCODE_BACK) {
			exit();// 退出方法
		}
		return true;
	}

	private long pre_time = 0;

	// 退出方法
	private void exit() {
		long curr_time=System.currentTimeMillis();
		// 如果在两秒大于2秒
		if (curr_time - pre_time > 2000) {
			show_Toast("再点击一次退出应用程序");
			// 获得当前的时间
			pre_time = curr_time;
		} else {
			// 点击在两秒以内
			removeALLActivity();// 执行移除所以Activity方法
		}

	}
}

public class One extends BaseActivity{

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setTitle("one");
		setContentView(R.layout.activity_main);
	}
	public void btnBack(View view)
	{
		Intent intent=new Intent(One.this,One2.class);
		startActivity(intent);
	}
}
public class One2 extends BaseActivity{

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setTitle("one2");
		setContentView(R.layout.activity_main);
	}
	public void btnBack(View view)
	{
		Intent intent=new Intent(One2.this,MainActivity.class);
		startActivity(intent);
	}
}

过程就是So Easy,最后别忘记在manifest中声明所有的Activity哦

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

有头发的猿

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

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

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

打赏作者

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

抵扣说明:

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

余额充值