在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**/
17private List<Activity> activities = new ArrayList<Activity>();
18/**应用实例**/
19private static AppManager instance;
20/**
21*获得实例
22* @return
23*/
24public static AppManager getInstance(){
25return instance;
26}
27/**
28* 新建了一个activity
29* @param activity
30*/
31public void addActivity(Activity activity){
32activities.add(activity);
33}
34/**
35*结束指定的Activity
36* @param activity
37*/
38public void finishActivity(Activity activity){
39if (activity!=null) {
40this.activities.remove(activity);
41activity.finish();
42activity = null;
43}
44}
45/**
46* 应用退出,结束所有的activity
47*/
48public void exit(){
49for (Activity activity : activities) {
50if (activity!=null) {
51activity.finish();
52}
53}
54System.exit(0);
55}
56
57@Override
58public void onCreate() {
59instance = 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
18protected void onCreate(Bundle savedInstanceState) {
19super.onCreate(savedInstanceState);
20//添加到Activity集合
21AppManager.getInstance().addActivity(this);
22//手机端SDK>10,即 android 2.3.x之后在主线程中访问网络需要加入如下代码
23if (AppConfig.getSDKVersionNumber()>10) {
24// 详见StrictMode文档
25StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder()
26.detectDiskReads()
27.detectDiskWrites()
28.detectNetwork()// or .detectAll() for all detectable problems
29.penaltyLog()
30.build());
31StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder()
32.detectLeakedSqlLiteObjects()
33.detectLeakedClosableObjects()
34.penaltyLog()
35.penaltyDeath()
36.build());
37}
38}
39
40@Override
41public void onBackPressed() {
42super.onBackPressed();
43onDestroy();
44}
45
46@Override
47protected void onDestroy() {
48super.onDestroy();
49//结束Activity&从集合中移除
50AppManager.getInstance().finishActivity(this);
51}
52
53 }