UserManager.java
3.6 KB
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
package com.studymachine.www.manager;
import android.app.Application;
import android.content.Intent;
import com.hjq.http.EasyHttp;
import com.hjq.http.lifecycle.ApplicationLifecycle;
import com.hjq.http.listener.OnHttpListener;
import com.hjq.toast.ToastUtils;
import com.studymachine.www.event.UserInfoEvent;
import com.studymachine.www.http.api.UserInfoApi;
import com.studymachine.www.http.model.HttpData;
import com.studymachine.www.ui.activity.LoginActivity;
import com.studymachine.www.ui.activity.RegisterActivity;
import com.tencent.mmkv.MMKV;
import org.greenrobot.eventbus.EventBus;
/**
* 用户管理
*/
public class UserManager {
private static volatile UserManager userManager;
private final static String TOKEN_TAG = "studyMachineToken";
private final static String USER_INFO_TAG = "studyMachineUserInfo";
private UserInfoApi.Bean userBean;
private String token;
/**
* 注册使用的对象
*/
private RegisterActivity.RegisterBody registerBody;
private UserManager() {
setToken(MMKV.defaultMMKV().decodeString(TOKEN_TAG, null));
setUserBean(MMKV.defaultMMKV().decodeParcelable(USER_INFO_TAG, UserInfoApi.Bean.class));
}
public static UserManager getInstance() {
if (userManager == null) {
synchronized (UserManager.class) {
if (userManager == null) {
userManager = new UserManager();
}
}
}
return userManager;
}
public void logOut() {
setToken(null);
setUserBean(null);
Application application = ActivityManager.getInstance().getApplication();
Intent intent = new Intent(application, LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
application.startActivity(intent);
// 销毁除了登录页之外的 Activity
ActivityManager.getInstance().finishAllActivities(LoginActivity.class);
}
public void getUserInfo() {
getUserInfo(null);
}
public void getUserInfo(OnHttpUserInfo callback) {
EasyHttp.get(new ApplicationLifecycle())
.api(new UserInfoApi())
.request(new OnHttpListener<HttpData<UserInfoApi.Bean>>() {
@Override
public void onSucceed(HttpData<UserInfoApi.Bean> result) {
setUserBean(result.getData());
if (callback != null) {
callback.onSucceed();
}
}
@Override
public void onFail(Exception e) {
ToastUtils.show(e.getMessage());
if (callback != null) {
callback.onFail();
}
}
});
}
public interface OnHttpUserInfo {
void onSucceed();
void onFail();
}
public UserInfoApi.Bean getUserBean() {
return userBean;
}
public void setUserBean(UserInfoApi.Bean userBean) {
this.userBean = userBean;
MMKV.defaultMMKV().encode(USER_INFO_TAG, userBean);
EventBus.getDefault().post(new UserInfoEvent());
}
public String getToken() {
return token;
}
public void setToken(String token) {
this.token = token;
MMKV.defaultMMKV().encode(TOKEN_TAG, token);
}
public RegisterActivity.RegisterBody getRegisterBody() {
return registerBody;
}
public void setRegisterBody(RegisterActivity.RegisterBody registerBody) {
this.registerBody = registerBody;
}
}