732003684

导航

Android之退出整个应用方法

两种

一、广播方式

把所有Activity通过继承基类或调用函数的方式记录下来,退出时逐一finish;通过使用广播机制退出整个应用,我们首先自定义一个抽象的MyActivity继承系统的Activity,然后在这个自定义的MyActivity中添加退出的方法,然后在整个应用中的所有Activity都继承我们自定义的MyActivity,当我们需要完全退出的时候,就可以调用这个close()方法,实现完全退出

 

public abstract class MyActivity extends Activity {  
   
    // 写一个广播的内部类,当收到动作时,结束activity   
    private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() {  
        @Override  
        public void onReceive(Context context, Intent intent) {  
            close();  
        }  
    };  
       
    @Override  
    protected void onCreate(Bundle savedInstanceState) {  
        super.onCreate(savedInstanceState);  
            // 在onCreate中注册广播   
        IntentFilter filter = new IntentFilter();  
        filter.addAction(Attribute.PAGENAME);  
        registerReceiver(this.broadcastReceiver, filter); // 注册   
    }  
   
    /** 
     * 关闭 
     */  
    public void close() {  
        Intent intent = new Intent();  
        intent.setAction(Attribute.PAGENAME); // 说明动作   
        sendBroadcast(intent);// 该函数用于发送广播   
        finish();  
    }  
    @Override  
    protected void onDestroy() {  
        super.onDestroy();  
        unregisterReceiver(broadcastReceiver);// 在onDestroy注销广播。   
    }  
}  

 

二、用application的方式

使用单例模式创建一个Activity管理对象,该对象中有一个Activity容器(具体实现自己处理,使用LinkedList等)专门负责存储新开启的每一个Activity,并且容易理解、易于操作,非常不错!
MyApplication类(储存每一个Activity,并实现关闭所有Activity的操作)
public class MyApplication extends Application {

private List<Activity> activityList = new LinkedList<Activity>(); 
private static MyApplication instance;

            private MyApplication()
            {
            }
             //单例模式中获取唯一的MyApplication实例 
             public static MyApplication getInstance()
             {
                            if(null == instance)
                          {
                             instance = new MyApplication();
                          }
                 return instance;             
             }
             //添加Activity到容器中
             public void addActivity(Activity activity)
             {
                            activityList.add(activity);
             }
             //遍历所有Activity并finish
             public void exit()
             {
                          for(Activity activity:activityList)
                         {
                           activity.finish();
                         }
                           System.exit(0);
            }
}
在每一个Activity中的onCreate方法里添加该Activity到MyApplication对象实例容器中
MyApplication.getInstance().addActivity(this);
在需要结束所有Activity的时候调用exit方法
MyApplication.getInstance().exit();

 

 

 

posted on 2013-01-15 11:56  732003684  阅读(196)  评论(0)    收藏  举报