Skip to content

Commit ad8d576

Browse files
author
tangsiyuan
committed
整理Home 跨模块调用interaction的例子
1 parent 6902f7f commit ad8d576

12 files changed

Lines changed: 329 additions & 22 deletions

File tree

app/src/main/AndroidManifest.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@
2222
<category android:name="android.intent.category.LAUNCHER" />
2323
</intent-filter>
2424
</activity>
25+
<activity android:name=".feature.Home.view.HomeActivity"></activity>
2526
</application>
2627

2728
</manifest>
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
package com.tsy.baseandroidproject.feature.Home.contract;
2+
3+
import com.tsy.baseandroidproject.Base.BasePresenter;
4+
import com.tsy.baseandroidproject.Base.BaseView;
5+
6+
/**
7+
* Created by tsy on 16/8/30.
8+
*/
9+
public interface HomeContract {
10+
11+
interface View extends BaseView {
12+
13+
}
14+
15+
interface Presenter extends BasePresenter {
16+
void onPost();
17+
}
18+
19+
interface Interactor {
20+
21+
}
22+
}
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
package com.tsy.baseandroidproject.feature.Home.interactor;
2+
3+
import com.tsy.baseandroidproject.feature.Home.contract.HomeContract;
4+
5+
/**
6+
* Created by tsy on 16/8/30.
7+
*/
8+
public class HomeInteractor implements HomeContract.Interactor {
9+
}
Lines changed: 40 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,40 @@
1+
package com.tsy.baseandroidproject.feature.Home.presenter;
2+
3+
import com.tsy.baseandroidproject.feature.Home.contract.HomeContract;
4+
import com.tsy.baseandroidproject.feature.Home.interactor.HomeInteractor;
5+
import com.tsy.baseandroidproject.feature.login.contract.LoginContract;
6+
import com.tsy.baseandroidproject.feature.login.interactor.LoginInteractor;
7+
8+
/**
9+
* Created by tsy on 16/8/30.
10+
*/
11+
public class HomePresenter implements HomeContract.Presenter {
12+
13+
private HomeContract.View mView;
14+
private HomeContract.Interactor mInteractor;
15+
private LoginContract.Interactor mLoginInteractor;
16+
17+
public HomePresenter(HomeContract.View view) {
18+
mView = view;
19+
mInteractor = new HomeInteractor();
20+
mLoginInteractor = new LoginInteractor();
21+
}
22+
23+
@Override
24+
public void start() {
25+
26+
}
27+
28+
@Override
29+
public void onPost() {
30+
//判断用户有没有登录
31+
if(!mLoginInteractor.isLogin()) {
32+
// 跳转登录
33+
// TODO: 16/8/30
34+
return;
35+
}
36+
37+
//跳转发帖页面
38+
// TODO: 16/8/30
39+
}
40+
}
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
package com.tsy.baseandroidproject.feature.Home.view;
2+
3+
import android.os.Bundle;
4+
5+
import com.tsy.baseandroidproject.Base.BaseActivity;
6+
import com.tsy.baseandroidproject.R;
7+
import com.tsy.baseandroidproject.feature.Home.contract.HomeContract;
8+
import com.tsy.baseandroidproject.feature.Home.presenter.HomePresenter;
9+
10+
import butterknife.ButterKnife;
11+
import butterknife.OnClick;
12+
13+
public class HomeActivity extends BaseActivity implements HomeContract.View {
14+
15+
private HomeContract.Presenter mPresnter;
16+
17+
@Override
18+
protected void onCreate(Bundle savedInstanceState) {
19+
super.onCreate(savedInstanceState);
20+
setContentView(R.layout.activity_home);
21+
ButterKnife.bind(this);
22+
23+
mPresnter = new HomePresenter(this);
24+
}
25+
26+
@OnClick(R.id.btnPost)
27+
public void onPost() {
28+
mPresnter.onPost();
29+
}
30+
31+
@Override
32+
public void showToast(String msg) {
33+
34+
}
35+
}
Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,15 @@
11
package com.tsy.baseandroidproject.feature.login.bean;
22

3+
import java.io.Serializable;
4+
35
/**
46
* Created by tsy on 16/8/30.
57
*/
6-
public class UserInfo {
8+
public class UserInfo implements Serializable {
9+
10+
private static final long serialVersionUID = 1L; // 定义序列化ID
11+
712
public String uid;
813
public String userName;
14+
public String token;
915
}

app/src/main/java/com/tsy/baseandroidproject/feature/login/contract/LoginContract.java

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,5 +38,17 @@ interface LoginCallback {
3838
void onSuccess(UserInfo user_info);
3939
void onFailure(String msg);
4040
}
41+
42+
/**
43+
* 是否登录
44+
* @return
45+
*/
46+
boolean isLogin();
47+
48+
/**
49+
* 获取当前登录用户
50+
* @return
51+
*/
52+
UserInfo getLoginUser();
4153
}
4254
}

app/src/main/java/com/tsy/baseandroidproject/feature/login/interactor/LoginInteractor.java

Lines changed: 31 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,17 +2,28 @@
22

33
import android.os.Handler;
44

5+
import com.tsy.baseandroidproject.GlobalApp;
56
import com.tsy.baseandroidproject.feature.login.bean.UserInfo;
67
import com.tsy.baseandroidproject.feature.login.contract.LoginContract;
8+
import com.tsy.sdk.acache.ACache;
9+
import com.tsy.sdk.myokhttp.MyOkHttp;
10+
import com.tsy.sdk.myutil.StringUtils;
711

812
/**
913
* Login Interactor层
1014
* Created by tsy on 16/8/30.
1115
*/
1216
public class LoginInteractor implements LoginContract.Interactor {
1317

14-
public LoginInteractor() {
18+
private MyOkHttp mApi;
19+
private ACache mCache;
20+
21+
//缓存key
22+
private final String CACHE_KEY_USERINFO = "CACHE_KEY_USERINFO";
1523

24+
public LoginInteractor() {
25+
mApi = MyOkHttp.get();
26+
mCache = ACache.get(GlobalApp.getInstance().getContext());
1627
}
1728

1829
@Override
@@ -27,8 +38,27 @@ public void run() {
2738
UserInfo userInfo = new UserInfo();
2839
userInfo.uid = "1212121";
2940
userInfo.userName = "tsy12321";
41+
userInfo.token = "wqw13w12312wsqw12";
42+
43+
//存入缓存
44+
mCache.put(CACHE_KEY_USERINFO, userInfo);
45+
3046
callback.onSuccess(userInfo);
3147
}
3248
}, 2000);
3349
}
50+
51+
@Override
52+
public boolean isLogin() {
53+
UserInfo userInfo = (UserInfo) mCache.getAsObject(CACHE_KEY_USERINFO);
54+
if(!StringUtils.isEmpty(userInfo.uid) && !StringUtils.isEmpty(userInfo.token)) {
55+
return true;
56+
}
57+
return false;
58+
}
59+
60+
@Override
61+
public UserInfo getLoginUser() {
62+
return (UserInfo) mCache.getAsObject(CACHE_KEY_USERINFO);
63+
}
3464
}

app/src/main/java/com/tsy/baseandroidproject/feature/login/view/LoginActivity.java

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,13 @@
11
package com.tsy.baseandroidproject.feature.login.view;
22

3+
import android.content.Intent;
34
import android.os.Bundle;
45
import android.widget.EditText;
56

67
import com.tsy.baseandroidproject.Base.BaseActivity;
78
import com.tsy.baseandroidproject.GlobalApp;
89
import com.tsy.baseandroidproject.R;
10+
import com.tsy.baseandroidproject.feature.Home.view.HomeActivity;
911
import com.tsy.baseandroidproject.feature.login.contract.LoginContract;
1012
import com.tsy.baseandroidproject.feature.login.presenter.LoginPresenter;
1113
import com.tsy.sdk.myutil.ToastUtils;
@@ -57,5 +59,9 @@ public void showToast(String msg) {
5759
public void goHome() {
5860
//跳转Home页面
5961
ToastUtils.showShort(GlobalApp.getInstance().getContext(), "登录成功, 跳转Home页面");
62+
63+
Intent intent = new Intent(this, HomeActivity.class);
64+
startActivity(intent);
65+
finish();
6066
}
6167
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
3+
xmlns:tools="http://schemas.android.com/tools"
4+
android:layout_width="match_parent"
5+
android:layout_height="match_parent"
6+
android:paddingBottom="@dimen/activity_vertical_margin"
7+
android:paddingLeft="@dimen/activity_horizontal_margin"
8+
android:paddingRight="@dimen/activity_horizontal_margin"
9+
android:paddingTop="@dimen/activity_vertical_margin"
10+
android:orientation="vertical"
11+
tools:context="com.tsy.baseandroidproject.feature.Home.view.HomeActivity">
12+
13+
<Button
14+
android:id="@+id/btnPost"
15+
android:layout_width="200dp"
16+
android:layout_height="80dp"
17+
android:layout_gravity="center_horizontal"
18+
android:text="发帖"/>
19+
20+
</LinearLayout>

0 commit comments

Comments
 (0)