Android程序的退出终于完美解决,兼容所有SDK
上网学了好多方法,关于Android的Activity如何退出。好多方法都不行啦,试了各种方法,下面这种方法就是我最喜欢的,简单又容易懂。
使用单例模式创建一个Activity管理对象,该对象中有一个Activity容器(具体实现自己处理,使用LinkedList等)专门负责存储新开启的每一个Activity,并且容易理解、易于操作,非常不错!
MyApplication类(储存每一个Activity,并实现关闭所有Activity的操作
public class MyApplication extends Application {
private List activityList = new LinkedList();
private static MyApplication instance;
private MyApplication()
{
}
//单例模式中获取唯一的MyApplication实例
public static MyApplication getInstance()
{
if(null == instance)
{
instance = new MyApplication();
}
return instance;
}
//添加Activity到容器中
public void addActivity(Activity activity)
{
activityList.add(activity);
}
//遍历所有Activity并finish
public void exit()
{
for(Activity activity:activityList)
{
activity.finish();
}
System.exit(0);
}
}
在每一个Activity中的onCreate方法里添加该Activity到MyApplication对象实例容器中
MyApplication.getInstance().addActivity(this);
在需要结束所有Activity的时候调用exit方法
MyApplication.getInstance().exit();
1 楼
administrator1616
2011-08-24
2 楼
marquis
2011-09-02
3 楼
jayaaaiii
2011-09-16
真的非常感谢你。。我纠结4天的问题终于解决了。。。
4 楼
ghy511024
2011-09-25
大神
5 楼
cyilinycc
2011-10-10
非常感谢你提供的这个方法,但我经过测试之后,发现这个方法存在弊端,就是没有及时清空列表的activity记录,造成程序的内存只增无减。
比方说我有20个activity,那我跳转了100次,这个记录是100,但我只需要20,另外80个就是强占用内存的罪魁祸首!
通过MAT工具发现这个问题,建议在里面建立一个clearActivity的函数,负责remove某个被finish的activity,这样才能实现回收。
6 楼
jk138
2011-10-11
谢谢各位的评论,楼下的建议很好,值得大家注意了.
7 楼
myg_315
2011-11-25
我也在调查这个问题,谢谢!