android编程中,application这样的名词似乎变得那样的不常见,而让大家更为熟悉的是activity、intent、provider、broadcast和service。但其实android中的application也有着它自身的用处。打开manifest文件,会看到有一个application配置标签,这就是有关application的使用了。

就是说application是用来保存全局变量的,并且是在package创建的时候就跟着存在了。所以当我们需要创建全局变量的时候,不需要再像j2se那样需要创建public权限的static变量,而直接在application中去实现。只需要调用Context的getApplicationContext 或者Activity的getApplication 方法来获得一个application对象,再做出相应的处理。





退出按钮实现


首先,创建Application来存储所有打开的Activity的list。代码如下:


1.  package com.deaboway.view;
2.  import java.util.ArrayList;
3.  import java.util.List;
4.  import android.app.Activity;
5.  import android.app.Application;
6.  public class Deaboway extends Application {

7.          private List<Activity> mainActivity = new ArrayList<Activity>();
8.          public List<Activity> MainActivity() {

9.                  return mainActivity;
10.          }
11.          public void addActivity(Activity act) {

12.                  mainActivity.add(act);
13.          }
14.          public void finishAll() {

15.                  for (Activity act : mainActivity) {

16.                          if (!act.isFinishing()) {

17.                                  act.finish();
18.                          }
19.                  }
20.                  mainActivity = null;
21.          }
22.  }


复制代码

其次,在所有Activity的   @Override    public void onCreate(Bundle savedInstanceState) {}方法中加上:


  1.    
1. public void onCreate(Bundle savedInstanceState) {

2.          super.onCreate(savedInstanceState);
3.                  Deaboway appState = (Deaboway)this.getApplication();
4.                  appState.addActivity(this);
5.          setContentView(R.layout.main);
6.         。。。。。。。
7.      }


复制代码

第三,在退出按钮的地方调用:


1. OnClickListener() {

2.                          public void onClick(View v) {

3.                                  Deaboway appState = (Deaboway)getApplicationContext();
4.                                  appState.finishAll();
5.                          }
6.                  }


复制代码

最后,要记得在manifest中的application标签中添加 android:name=".Deaboway"

   

Intent startMain = new Intent(Intent.ACTION_MAIN);
 startMain.addCategory(Intent.CATEGORY_HOME); 
 startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
 startActivity(startMain); 
 System.exit(0);

更简单的方法,可以应用于2.2以上android版本的程序使用