android退出应用

来源:互联网 发布:Linux dlsym 编辑:程序博客网 时间:2024/05/16 18:13

随便写写:

方法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:

伪退出,不真正删除内存资源等信息,方便用户下次快速使用:

private void showTips() {
 
        AlertDialog alertDialog =new AlertDialog.Builder(this).setTitle("提醒")
                .setMessage("是否退出程序")
                .setPositiveButton("确定",new DialogInterface.OnClickListener() {
 
                    publicvoid onClick(DialogInterface dialog,int which) {
                        Intent intent =new Intent(Intent.ACTION_MAIN); 
                        intent.addCategory(Intent.CATEGORY_HOME); 
                        intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
                        startActivity(intent); 
                    android.os.Process.killProcess(android.os.Process.myPid());
                    }
 
                }).setNegativeButton("取消",
 
                newDialogInterface.OnClickListener() {
                    publicvoid onClick(DialogInterface dialog,int which) {
                        return;
                    }
                }).create();// 创建对话框
        alertDialog.show();// 显示对话框
    }

0 0