Welcome 微信登录

首页 / 操作系统 / Linux / Android 2.2使用广播机制完全退出程序

最近在开发Android2.2平台上的一款软件,期间遇到了如何完全退出应用程序的问题。在网上找了不少方法,比如:使用ActivityManager的killBackgroundProcesses方法;使用ActivityManager的restartPackage方法;使用android.os.Process.killProcess方法;使用System.exit(0)方法等等。结果在自己的程序中试了之后发现上述几种方法都不起作用。。。。正在我感到束手无策的时候,我在网上发现了一种使用广播机制退出程序的方法,自己试了试发现可以完全退出程序,现将该方法总结如下:基本思路     在你的每个Activity里,注册一个特定的Broadcast,当你想退出程序时,就send一个特定的Broadcast,这样所有还没有finish的activity都可以接收到这个broadcast,接收到broadcast后,就finish掉Activity。这样该程序的所有Activity就finish了,也就达到了退出程序的效果。示例代码     实现过程中,为了优化程序,首先写一个父类继承Activity,其他的Activity都继承此父类(你也可以在每个Activity中实现其中的代码,不过相比这种有点麻烦),代码如下:
  1. import android.app.Activity;  
  2. import android.content.BroadcastReceiver;  
  3. import android.content.Context;  
  4. import android.content.Intent;  
  5. import android.content.IntentFilter;  
  6.   
  7. public class ApplicationActivity extends Activity {  
  8.     private BroadcastReceiver receiver = new BroadcastReceiver() {  
  9.         @Override  
  10.         public void onReceive(Context context, Intent intent) {  
  11.             finish();  
  12.         }  
  13.     };  
  14.       
  15.     @Override  
  16.     public void onResume() {  
  17.         super.onResume();  
  18.         // 在当前的activity中注册广播   
  19.         IntentFilter filter = new IntentFilter();  
  20.         filter.addAction("Exit");  
  21.         this.registerReceiver(this.receiver, filter);  
  22.     }  
  23.   
  24. }  
     然后在需要退出的Activity中添加close方法,然后在要进行退出程序操作的地方调用close方法即可。代码如下:
  1. <pre name="code" class="java">private void close() {  
  2.     Intent intent = new Intent();  
  3.     intent.setAction("ExitApp");  
  4.     this.sendBroadcast(intent);  
  5.     super.finish();  
  6. }  
特别说明 如果你的程序中的Activity比较少,那么建议你不要使用这种方法;上述方法在Activity比较多的情况下比较凑效。