现在的位置: 首页 > 综合 > 正文

Android—如果应用中每个页面都有“首页”“退出” 处理方法

2013年04月13日 ⁄ 综合 ⁄ 共 1952字 ⁄ 字号 评论关闭

所以为了通用想到了另外一种方法,就是当我们点击“退出程序”菜单时,可以从当前Activity跳转到主Activity(就是我们打开程序最先启动的那个Activity),通过Intent告诉主Activity我要退出程序,然后主Activity调用finish()方法即可。由于这一过程很短暂,以致于我们没观察到Activity有任何切换就退出程序了!

同样为了让大家更容易理解,我做了一个Demo.为了省事,程序运行时我直接就从MainActivity跳转到BActivity,在BActivity有个“退出程序”菜单,点击会退出程序。具体过程如下:

定义一个工具类Sysutil用来退出程序,这样定义好处可以在多个Activity的时候复用,代码如下:

其中: intent.setFlag(Intent.FLAG_ACTIVITY_CLEAR_TOP) 表示,开启目标activity时,会清理栈中的其他activity. 

在应用中如果要回到首页,也可以用这这个flag.

  1. package com.tutor.exit;  
  2. import android.app.ActivityManager;  
  3. import android.content.Context;  
  4. import android.content.Intent;  
  5. public class SysUtil {  
  6.     public static final int  EXIT_APPLICATION = 0x0001;  
  7.       
  8.     private Context mContext;  
  9.       
  10.     public SysUtil(Context context){  
  11.         this.mContext = context;  
  12.     }  
  13.       
  14.     //完全退出应用  
  15.     public void exit(){  
  16.           
  17. //      1.5 - 2.1之前下面两行是ok的,2.2之后就不行了,所以不通用  
  18. //      ActivityManager am = (ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE);  
  19. //      am.restartPackage("com.tutor.exit");  
  20.           
  21.         Intent mIntent = new Intent();  
  22.         mIntent.setClass(mContext, MainActivity.class);  
  23.         //这里设置flag还是比较 重要的  
  24.         mIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  
  25.         //发出退出程序指示  
  26.         mIntent.putExtra("flag", EXIT_APPLICATION);  
  27.         mContext.startActivity(mIntent);  
  28.     }  
  29. }  

 

修改MainActivity.java,代码如下:

  1. package com.tutor.exit;  
  2. import android.app.Activity;  
  3. import android.content.Intent;  
  4. import android.os.Bundle;  
  5. public class MainActivity extends Activity {  
  6.     @Override  
  7.     public void onCreate(Bundle savedInstanceState) {  
  8.         super.onCreate(savedInstanceState);  
  9.         setContentView(R.layout.main);       
  10.     }  
  11.       
  12.    //这里用来接受退出程序的指令   
  13.     @Override  
  14.     protected void onStart() {  
  15.         int flag = getIntent().getIntExtra("flag"0);  
  16.         if(flag == SysUtil.EXIT_APPLICATION){  
  17.             finish();  
  18.         }  

抱歉!评论已关闭.