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
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
|
package com.macaroon.piztor;
import java.util.HashMap;
import android.annotation.SuppressLint;
import android.content.Intent;
import android.os.Handler;
@SuppressLint("UseSparseArrays")
public class AppMgr {
// Status
public enum ActivityStatus {
create, start, resume, restart, stop, pause, destroy
}
static ActivityStatus status;
static PiztorAct nowAct;
// TODO fix
static Handler fromTransam, fromGPS;
static Transam transam = null;
static Tracker tracker = null;
static Thread tTransam, tGPS;
// Event
final static int noToken = 101;
final static int loginSuccess = 102;
final static int errorToken = 103;
final static int hasToken = 104;
static HashMap<Class<?>, HashMap<Integer, Class<?>>> mp;
static void setStatus(ActivityStatus st) {
status = st;
}
static void trigger(int event) {
Intent i = new Intent();
System.out.println(nowAct.id + " : " + event);
if (mp.get(nowAct.getClass()) == null)
System.out.println("first");
else if (mp.get(nowAct.getClass()) == null)
System.out.println("second");
i.setClass(nowAct, mp.get(nowAct.getClass()).get(event));
if (event == errorToken)
UserInfo.token = null;
nowAct.startActivity(i);
}
static void add(Class<?> a, Integer event, Class<?> b) {
if (mp.containsKey(a))
mp.get(a).put(event, b);
else {
HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
h.put(event, b);
mp.put(a, h);
}
}
static void addTransition(Class<?> a, int i, Class<?> b) {
if (mp.containsKey(a)) {
HashMap<Integer, Class<?>> h = mp.get(a);
h.put(i, b);
mp.put(a, h);
} else {
HashMap<Integer, Class<?>> h = new HashMap<Integer, Class<?>>();
h.put(i, b);
mp.put(a, h);
}
}
static void addStatus(Class<?> a) {
mp.put(a, new HashMap<Integer, Class<?>>());
}
static void init() {
mp = new HashMap<Class<?>, HashMap<Integer, Class<?>>>();
fromTransam = new Handler();
transam = new Transam(UserInfo.ip, UserInfo.port, fromTransam);
fromGPS = new Handler();
tracker = new Tracker(nowAct.getApplicationContext(), fromGPS);
tTransam = new Thread(transam);
tTransam.start();
tGPS = new Thread(tracker);
tGPS.start();
System.out.println("!!!!!!");
addStatus(InitAct.class);
addStatus(Login.class);
addStatus(Main.class);
addTransition(InitAct.class, noToken, Login.class);
addTransition(Login.class, loginSuccess, Main.class);
addTransition(Main.class, errorToken, Login.class);
addTransition(Settings.class, errorToken, Login.class);
addTransition(InitAct.class, hasToken, Main.class);
addTransition(InitAct.class, errorToken, Login.class);
}
}
|