您的位置:首页 > 移动开发 > Android开发

Android应用实现退出时关闭所有Activity

2016-01-24 17:25 656 查看
<p><span style="font-family: KaiTi_GB2312; font-size: 18px;">在我的Android项目中,添加了用户注册申请界面之后,在主程序界面确定退出时,没想到居然是退到之前的登陆界面,这让我很苦恼,查找了相关资料和解决办法,主程序退出时确实应该是退出到登陆界面,因为,每打开一个Activity都会被记录下来,每次退出当前Activity时都将退到上一个Activity。</span></p><p><span style="font-family: KaiTi_GB2312; font-size: 18px;">网上有很多这类问题的解决方法,但有的方法并不能解决问题,我试过了并没用,不过有一个方法还是挺不错的,至少我是解决了问题。下面是我解决问题的方法:</span></p><p><span style="font-family: KaiTi_GB2312; font-size: 18px;"><span style="color: rgb(51, 51, 51); line-height: 28px; text-indent: 28px;">使用单例模式创建一个Activity管理对象,该对象中有一个Activity容器。定义一个Application类来存储Activity对象的引用。代码如下:</span></span></p>
/**
* 一个类 用来结束所有后台activity
* @author Administrator
*
*/
public class SysApplication extends Application {
//运用list来保存们每一个activity是关键
private List<Activity> mList = new LinkedList<Activity>();
//为了实现每次使用该类时不创建新的对象而创建的静态对象
private static SysApplication instance;
//构造方法
private SysApplication(){}
//实例化一次
public synchronized static SysApplication getInstance(){
if (null == instance) {
instance = new SysApplication();
}
return instance;
}
// add Activity
public void addActivity(Activity activity) {
mList.add(activity);
}
//关闭每一个list内的activity
public void exit() {
try {
for (Activity activity:mList) {
if (activity != null)
activity.finish();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
System.exit(0);
}
}
//杀进程
public void onLowMemory() {
super.onLowMemory();
System.gc();
}
}
然后在每个Activity的onCreate()方法中添加下面代码:

SysApplication.getInstance().addActivity(this); 

在需要结束所有Activity的时候调用exit方法:

SysApplication.getInstance().exit();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: