实现随时随地一键退出所有Activity

实现随时随地一键退出所有Activity

现在很多应用都拥有很多界面,然而页面加载多了,退出是一个很头疼的问题启动了多少次界面就需要按多少次返回键,非常的不方便。按Home键虽然把程序挂起了,但是并没有退出程序。相信这个问题早就引起你的注意,现在很多程序都有一键退出、注销的功能该怎么实现呢?所以要有一个随时随地都能够退出的方案才行。

其实解决思路也很简单,只需要用一个专门的集合类对所有的活动进行管理就可以了,,下面我们就来实现一下。

新建一个ActivityCollector类作为活动管理器,代码如下所示:

import java.util.ArrayList;import java.util.List;import android.app.Activity;/** * @author YLBF * * @category 类说明 Activity集合 * @version 修改时间 2015年3月5日下午4:04:05 * @version 版本号 1.0.0.0 */{public static List<Activity> activities = new ArrayList<Activity>();/*** 添加Activity** @param activity*/(Activity activity) {activities.add(activity);}/*** 移除Activity** @param activity*/(Activity activity) {activities.remove(activity);}/*** 移除所有Activity** @param activity*/() {for (Activity activity : activities) {if (!activity.isFinishing()) {activity.finish();}}}}

在活动管理器中,我们通过一个List集合来暂存活动,然后提供一个addActivity()方法用于向List中添加一个活动,提供了一个removeActivity()方法用于从List中移除活动,最后提供了一个finishAllActivity()方法用于将List中存储的活动全部销毁。

接下来建立BaseActivity类,代码如下所示:

import android.app.Activity;import android.os.Bundle;import android.util.Log;/** * @author YLBF * * @category 类说明 Activity基类 以后所有的Activity都继承此类 * @version 修改时间 2015年3月5日下午4:20:31 * @version 版本号 1.0.0.0 */{public static String TAG = “BaseActivity”;(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Log.d(TAG, getClass().getSimpleName());ActivityCollector.addActivity(this);}() {super.onDestroy();ActivityCollector.removeActivity(this);}/*** 显示短消息提示* @param pMsg 提示消息内容*/(String pMsg) {Toast.makeText(this, pMsg, Toast.LENGTH_SHORT).show();}}

在BaseActivity的onCreate()方法中调用了ActivityCollector的addActivity()方法,表明将当前正在创建的活动添加到管理器里,然后再BaseActivity中重写onDestroy()方法,并调用了ActivityCollector的removeActivity()方法,表明将一个马上要销毁的活动从活动管理器里移除。

从此以后,不管你想在什么地方退出程序,只要调用ActivityCollector的finishAllActivity()方法就可以了。比如想要点击返回键两次直接退出程序,只需要按照如下的方法来处理就可以了。代码如下所示:

private boolean finishFlag = true;private long oldTime;() {if (finishFlag) {finishFlag = !finishFlag;showShortToast(“再按一次退出程序!”);oldTime = System.currentTimeMillis() / 1000;} else {finishFlag = !finishFlag;long newTime = System.currentTimeMillis() / 1000;if ((newTime – oldTime) < 2) {ActivityCollector.finishAllActivity();// 强制杀死当前进程//android.os.Process.killProcess(android.os.Process.myPid());}}}

当然还可以在销毁所有活动的代码后面再加上杀掉当前进程的代码,以保证该程序完全退出。

无神的瞳孔,我迫切想逃离这周遭被钢筋混凝土堆架的城市,

实现随时随地一键退出所有Activity

相关文章:

你感兴趣的文章:

标签云: