Android的Activity管理

可能你会遇到这种场景:

  1. 界面A–>界面B–>…–>界面N,停留在界面N的时候,提交数据,才会把界面N之前的界面A、B… finish掉;
  2. 登录、注册,最后的提交后,直接进入App主界面,这个时候就要把注册界面finish掉;
  3. 等等
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
import java.util.LinkedList;  
import java.util.List;

import android.app.Activity;
import android.app.Application;

/**
* activity管理
*
* @author Liujy
*/

public class KYActivityMannger extends Application {
private List<Activity> mList = new LinkedList<Activity>();
private List<Activity> mLogoutList = new LinkedList<Activity>();
private static KYActivityMannger instance;

private KYActivityMannger() {
}

public synchronized static KYActivityMannger getInstance() {
if (null == instance) {
instance = new KYActivityMannger();
}
return instance;
}

/**
* add Activity save mList
* @param activity
*/

public void addActivity(Activity activity) {
mList.add(activity);
}

/**
* add Activity save mLogoutList
* @param activity
*/

public void addLogoutActivity(Activity activity) {
mLogoutList.add(activity);
}

/**
* 退出
*/

public void exit() {
try {
for (Activity activity : mList) {
if (activity != null)
activity.finish();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
android.os.Process.killProcess(android.os.Process.myPid());
System.exit(0);
}
}

/**
* 注销
*/

public void logout() {
try {
for (Activity activity : mLogoutList) {
if (activity != null)
activity.finish();
}
} catch (Exception e) {
e.printStackTrace();
} finally {
System.gc();
}
}

public void onLowMemory() {
super.onLowMemory();
System.gc();
}
}

在需要对Activity管理的onCreate()添加:

1
2
KYActivityMannger.getInstance().addActivity(this);  
KYActivityMannger.getInstance().addLogoutActivity(this);

调用

1
2
3
4
// 注销不退出App
KYActivityMannger.getInstance().logout();
// 退出并退出App
KYActivityMannger.getInstance().exit();