正文  基础知识 > 生命周期/运行原理 >

Android完全退出的方法

在Android开发过程中,经常有Activity 忘记finish了,退出后,再启动时,就会跳转到未结束的Activity。所以我在自己写的Application中加了一个方法。01 package xidian.wwf.app;02 03 import java.util.Ar......

在Android开发过程中,经常有Activity 忘记finish了,退出后,再启动时,就会跳转到未结束的Activity。所以我在自己写的Application中加了一个方法。
01 package xidian.wwf.app;
02
03 import java.util.ArrayList;
04 import java.util.List;
05
06 import xidian.wwf.R; <span></span> import android.app.Activity;
07 import android.app.Application;
08
09
10 /**
11 * 应用配置类
12 * @author WWF
13 *
14 */
15 public class AppManager extends Application{
16    /**打开的activity**/
17    private List<Activity> activities = new ArrayList<Activity>();
18    /**应用实例**/
19    private static AppManager instance;
20    /**
21     *  获得实例
22     * @return
23     */
24    public static AppManager getInstance(){
25        return instance;
26    }
27    /**
28     * 新建了一个activity
29     * @param activity
30     */
31    public void addActivity(Activity activity){
32        activities.add(activity);
33    }  
34    /**
35     *  结束指定的Activity
36     * @param activity
37     */
38    public void finishActivity(Activity activity){
39        if (activity!=null) {
40            this.activities.remove(activity);
41            activity.finish();
42            activity = null;
43        }
44    }  
45    /**
46     * 应用退出,结束所有的activity
47     */
48    public void exit(){
49        for (Activity activity : activities) {
50            if (activity!=null) {
51                activity.finish();
52            }
53        }
54        System.exit(0);
55    }      
56    
57    @Override
58    public void onCreate() {
59            instance = this;          
60    }      
61 }<span></span>
    然后我写了一个BaseActivity,以后的Activity 都继承这个Activity,如下
 
   
 
01 package xidian.wwf.activity;
02
03 import xidian.wwf.app.AppConfig;
04 import xidian.wwf.app.AppManager;
05 import android.app.Activity;
06 import android.os.Bundle;
07 import android.os.StrictMode;
08
09 /**
10 * 基本Activity
11 * @author WWF
12 * @date 2013-1-26 下午6:24:47
13 * @version
14 */
15 public class BaseActivity extends Activity{
16    
17    @Override
18    protected void onCreate(Bundle savedInstanceState) {
19        super.onCreate(savedInstanceState);
20        //添加到Activity集合
21        AppManager.getInstance().addActivity(this);
22        //手机端SDK>10,即 android 2.3.x之后在主线程中访问网络需要加入如下代码
23        if (AppConfig.getSDKVersionNumber()>10) {
24            // 详见StrictMode文档
25            StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
26                    .detectDiskReads()
27                    .detectDiskWrites()
28                    .detectNetwork()   // or .detectAll() for all detectable problems
29                    .penaltyLog()
30                    .build());
31            StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
32                    .detectLeakedSqlLiteObjects()
33                    .detectLeakedClosableObjects()
34                    .penaltyLog()
35                    .penaltyDeath()
36                    .build());
37        }
38    }
39    
40    @Override
41    public void onBackPressed() {
42        super.onBackPressed();
43        onDestroy();
44    }
45    
46    @Override
47    protected void onDestroy() {
48        super.onDestroy();
49        //结束Activity&从集合中移除
50        AppManager.getInstance().finishActivity(this);
51    }
52
53 }