尝试过System.exit(0)和android.os.Process.killProcess(android.os.Process.myPid())两种方法都失败了。这两个应该均只能退出单activity

    最后终于找到一个相对靠谱的方法,即重写activity,通过broadcast的方法解决这个问题。方法如下:      

  1. public class BaseActivity extends Activity {  
  2.     public Activity aty;  
  3.     public ExitAllBroadCast exitAllBroadCast;  
  4.     /** Called when the activity is first created. */  
  5.     @Override  
  6.     public void onCreate(Bundle savedInstanceState) {  
  7.         super.onCreate(savedInstanceState);  
  8.         aty = BaseActivity.this;  
  9.         exitAllBroadCast = new ExitAllBroadCast();  
  10.          
  11.     }  
  12.     /* (non-Javadoc) 
  13.      * @see android.app.Activity#onStart() 
  14.      */  
  15.     @Override  
  16.     protected void onStart() {  
  17.         IntentFilter filter = new IntentFilter();// 创建IntentFilter对象  
  18.         filter.addAction("com.kg.exit.broadcast");  
  19.         registerReceiver(exitAllBroadCast, filter);// 注册Broadcast Receiver  
  20.         super.onStart();  
  21.     }  
  22.    class ExitAllBroadCast extends BroadcastReceiver{  
  23.   
  24.     @Override  
  25.     public void onReceive(Context context, Intent intent) {  
  26.         // TODO Auto-generated method stub  
  27.         aty.finish();  
  28.     }  
  29.          
  30.    }  
  31.     @Override  
  32.     protected void onDestroy() {  
  33.         // TODO Auto-generated method stub  
  34.         super.onDestroy();  
  35.         unregisterReceiver(exitAllBroadCast);  
  36.     }  
  37.  

    直接贴过来了,需要调用退出的部分:

  1.             Intent myIntent = new Intent();// 创建Intent对象  
  2.             myIntent.setAction("com.kg.exit.broadcast");  
  3.             sendBroadcast(myIntent);// 发送广播  

    即可。有关全局变量,我只能在退出时调用OnCreate方法恢复初始值,其他的暂时还没有找到更好的方法。

    转载自http://blog.csdn.net/kingsonl/article/details/7577058