android退出应用
2014-04-17 09:49
253 查看
随便写写:
方法1:写一个栈,退出的时候释放掉所有activitys,等的资源,如下:
自定义一个Actiivty 栈,不过利用一个单例模式的Activity栈来管理所有Activity。并提供退出所有Activity的方法。代码如下:
public class ScreenManager {
private static Stack<Activity> activityStack;
private static ScreenManager instance;
private ScreenManager(){
}
public static ScreenManager getScreenManager(){
if(instance==null){
instance=new ScreenManager();
}
return instance;
}
//退出栈顶Activity
public void popActivity(Activity activity){
if(activity!=null){
activity.finish();
activityStack.remove(activity);
activity=null;
}
}
//获得当前栈顶Activity
public Activity currentActivity(){
Activity activity=activityStack.lastElement();
return activity;
}
//将当前Activity推入栈中
public void pushActivity(Activity activity){
if(activityStack==null){
activityStack=new Stack<Activity>();
}
activityStack.add(activity);
}
//退出栈中所有Activity
public void popAllActivityExceptOne(Class cls){
while(true){
Activity activity=currentActivity();
if(activity==null){
break;
}
if(activity.getClass().equals(cls) ){
break;
}
popActivity(activity);
}
}
}
//---------------------------------------------------------------------------------------------------------------------
或者这样:
将下面SysApplication这个类复制到工程里面,然后在每个Acitivity的oncreate方法里面通过SysApplication.getInstance().addActivity(this); 添加当前Acitivity到ancivitylist里面去,最后在想退出的时候调用SysApplication.getInstance().exit();可直接关闭所有的Acitivity并退出应用程序。
附代码:
importjava.util.LinkedList;
importjava.util.List;
importandroid.app.Activity;
importandroid.app.AlertDialog;
importandroid.app.Application;
importandroid.content.DialogInterface;
importandroid.content.Intent;
publicclass SysApplication extends Application{
private List mList = newLinkedList();
private static SysApplicationinstance;
private SysApplication(){
}
public synchronized static SysApplicationgetInstance() {
if (null == instance) {
instance = new SysApplication();
}
return instance;
}
// addActivity
public void addActivity(Activity activity){
mList.add(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)
如:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SysApplication.getInstance().addActivity(this);
}
方法2:
伪退出,不真正删除内存资源等信息,方便用户下次快速使用:
方法1:写一个栈,退出的时候释放掉所有activitys,等的资源,如下:
自定义一个Actiivty 栈,不过利用一个单例模式的Activity栈来管理所有Activity。并提供退出所有Activity的方法。代码如下:
public class ScreenManager {
private static Stack<Activity> activityStack;
private static ScreenManager instance;
private ScreenManager(){
}
public static ScreenManager getScreenManager(){
if(instance==null){
instance=new ScreenManager();
}
return instance;
}
//退出栈顶Activity
public void popActivity(Activity activity){
if(activity!=null){
activity.finish();
activityStack.remove(activity);
activity=null;
}
}
//获得当前栈顶Activity
public Activity currentActivity(){
Activity activity=activityStack.lastElement();
return activity;
}
//将当前Activity推入栈中
public void pushActivity(Activity activity){
if(activityStack==null){
activityStack=new Stack<Activity>();
}
activityStack.add(activity);
}
//退出栈中所有Activity
public void popAllActivityExceptOne(Class cls){
while(true){
Activity activity=currentActivity();
if(activity==null){
break;
}
if(activity.getClass().equals(cls) ){
break;
}
popActivity(activity);
}
}
}
//---------------------------------------------------------------------------------------------------------------------
或者这样:
将下面SysApplication这个类复制到工程里面,然后在每个Acitivity的oncreate方法里面通过SysApplication.getInstance().addActivity(this); 添加当前Acitivity到ancivitylist里面去,最后在想退出的时候调用SysApplication.getInstance().exit();可直接关闭所有的Acitivity并退出应用程序。
附代码:
importjava.util.LinkedList;
importjava.util.List;
importandroid.app.Activity;
importandroid.app.AlertDialog;
importandroid.app.Application;
importandroid.content.DialogInterface;
importandroid.content.Intent;
publicclass SysApplication extends Application{
private List mList = newLinkedList();
private static SysApplicationinstance;
private SysApplication(){
}
public synchronized static SysApplicationgetInstance() {
if (null == instance) {
instance = new SysApplication();
}
return instance;
}
// addActivity
public void addActivity(Activity activity){
mList.add(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)
如:
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
SysApplication.getInstance().addActivity(this);
}
方法2:
伪退出,不真正删除内存资源等信息,方便用户下次快速使用:
相关文章推荐
- Android使用BitmapFactory.Options解决加载大图片内存溢出问题
- The container 'Android Dependencies' references non existing
- Android多窗格布局应用
- Android音乐播放器设置播放进度条
- Android中Bitmap,byte[],Drawable相互转化
- Android常用工具类
- Android入门三之目录结构3
- Android应用程序开发之图片操作(二)——工程图片资源的加载及OOM的处理
- Android中创建和使用数据库
- 代号为“柠檬芝士蛋糕”或是“柠檬酥皮派”的Android 5.0,会有什么新的特点?
- android:TableLayout表格布局详解
- 高通 8x26 andorid light sensor(TSL258x) 开发
- Android多线程下安全访问数据库
- Android中取消标题栏或全屏显示
- Android 自定义Progressbar,任何图片都能当成progressbar转动起来
- android 媒体库数据更新解决办法总结
- android 数据加密——加密的概述
- 【Android中定义图片按钮】
- Android开发常用技术建议
- Android使用monitor监控应用运行时状态(一)