Skip to content

Commit 3355c69

Browse files
AriesHoo@126.comAriesHoo@126.com
AriesHoo@126.com
authored and
AriesHoo@126.com
committed
1、新增BasisHelper及BasisViewHelper方便快速创建通用View及资源回收管理
1 parent b05b3ae commit 3355c69

File tree

11 files changed

+273
-28
lines changed

11 files changed

+273
-28
lines changed

app/src/main/java/com/aries/library/fast/demo/helper/CheckVersionHelper.java

Lines changed: 8 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,9 @@
33
import android.app.Activity;
44
import android.text.TextUtils;
55

6+
import androidx.appcompat.app.AlertDialog;
7+
8+
import com.aries.library.fast.BasisHelper;
69
import com.aries.library.fast.basis.BasisActivity;
710
import com.aries.library.fast.demo.R;
811
import com.aries.library.fast.demo.entity.UpdateEntity;
@@ -25,7 +28,6 @@
2528
import java.util.HashMap;
2629
import java.util.Map;
2730

28-
import androidx.appcompat.app.AlertDialog;
2931
import io.reactivex.annotations.NonNull;
3032

3133
/**
@@ -34,29 +36,25 @@
3436
* Function: 检查版本升级的工具类--该处只做下载演示开发者可根据自己项目情况进行调整
3537
* Description:
3638
*/
37-
public class CheckVersionHelper {
39+
public class CheckVersionHelper extends BasisHelper {
3840

3941
private FastDownloadObserver mDownloadObserver;
40-
private SoftReference<BasisActivity> mActivity;
42+
private SoftReference<Activity> mActivity;
4143
private boolean mIsLoading = false;
4244

43-
private CheckVersionHelper(BasisActivity activity) {
45+
public CheckVersionHelper(Activity activity) {
46+
super(activity);
4447
this.mActivity = new SoftReference<>(activity);
4548
}
4649

47-
public static CheckVersionHelper with(BasisActivity activity) {
48-
return new CheckVersionHelper(activity);
49-
}
50-
51-
5250
/**
5351
* Function:开放平台监测版本升级
5452
*
5553
* @param
5654
* @return
5755
*/
5856
public void checkVersion(boolean loading) {
59-
BasisActivity activity = mActivity.get();
57+
BasisActivity activity = (BasisActivity) mActivity.get();
6058
mIsLoading = loading;
6159
if (activity == null) {
6260
return;

app/src/main/java/com/aries/library/fast/demo/module/main/HomeFragment.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,13 +7,16 @@
77
import android.widget.ImageView;
88
import android.widget.LinearLayout;
99

10+
import androidx.appcompat.app.AlertDialog;
11+
1012
import com.aries.library.fast.FastManager;
1113
import com.aries.library.fast.demo.App;
1214
import com.aries.library.fast.demo.R;
1315
import com.aries.library.fast.demo.adapter.WidgetAdapter;
1416
import com.aries.library.fast.demo.constant.GlobalConstant;
1517
import com.aries.library.fast.demo.constant.SPConstant;
1618
import com.aries.library.fast.demo.entity.WidgetEntity;
19+
import com.aries.library.fast.demo.helper.CheckVersionHelper;
1720
import com.aries.library.fast.demo.helper.TitleBarViewHelper;
1821
import com.aries.library.fast.demo.module.WebViewActivity;
1922
import com.aries.library.fast.demo.module.main.sample.FastViewActivity;
@@ -44,7 +47,6 @@
4447
import java.util.List;
4548
import java.util.concurrent.TimeUnit;
4649

47-
import androidx.appcompat.app.AlertDialog;
4850
import cn.bingoogolapple.bgabanner.BGABanner;
4951
import cn.bingoogolapple.bgabanner.transformer.TransitionEffect;
5052

@@ -141,6 +143,7 @@ public int getContentLayout() {
141143
@Override
142144
public void initView(Bundle savedInstanceState) {
143145
LoggerManager.d(TAG, "initView");
146+
new CheckVersionHelper(mContext).checkVersion(false);
144147
listTransitionEffect.add(TransitionEffect.Default);
145148
listTransitionEffect.add(TransitionEffect.Alpha);
146149
listTransitionEffect.add(TransitionEffect.Rotate);

app/src/main/java/com/aries/library/fast/demo/module/main/MainActivity.java

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,9 @@
55
import android.os.Bundle;
66
import android.text.TextUtils;
77

8+
import androidx.appcompat.app.AlertDialog;
9+
810
import com.aries.library.fast.demo.R;
9-
import com.aries.library.fast.demo.helper.CheckVersionHelper;
1011
import com.aries.library.fast.demo.module.WebViewActivity;
1112
import com.aries.library.fast.demo.module.activity.ActivityFragment;
1213
import com.aries.library.fast.demo.module.mine.MineFragment;
@@ -23,7 +24,6 @@
2324
import java.util.ArrayList;
2425
import java.util.List;
2526

26-
import androidx.appcompat.app.AlertDialog;
2727
import butterknife.BindView;
2828

2929
/**
@@ -85,8 +85,6 @@ public void beforeInitView(Bundle savedInstanceState) {
8585

8686
@Override
8787
public void initView(Bundle savedInstanceState) {
88-
CheckVersionHelper.with(this)
89-
.checkVersion(false);
9088
RxJavaManager.getInstance().setTimer(2000)
9189
.compose(bindUntilEvent(ActivityEvent.DESTROY))
9290
.subscribe(new FastObserver<Long>() {

app/src/main/java/com/aries/library/fast/demo/module/mine/MineFragment.java

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@
1414
import androidx.core.view.ViewCompat;
1515

1616
import com.allen.library.SuperTextView;
17-
import com.aries.library.fast.basis.BasisActivity;
1817
import com.aries.library.fast.demo.App;
1918
import com.aries.library.fast.demo.R;
2019
import com.aries.library.fast.demo.helper.CheckVersionHelper;
@@ -270,7 +269,7 @@ public void onViewClicked(View view) {
270269
// updateEntity.url = "http://gdown.baidu.com/data/wisegame/008c0de8d4355b41/wangzherongyao_35011414.apk";
271270
// CheckVersionHelper.with((BasisActivity) mContext)
272271
// .downloadApk(updateEntity, "king_glory.apk", true);
273-
CheckVersionHelper.with((BasisActivity) mContext)
272+
new CheckVersionHelper(mContext)
274273
.checkVersion(true);
275274
// new PgyUpdateManager.Builder()
276275
// .setForced(false) //设置是否强制提示更新

app/src/main/res/values/arrays.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -122,7 +122,7 @@
122122
<item>https://github.com/trello/RxLifecycle</item>
123123
<item>https://github.com/CymChad/BaseRecyclerViewAdapterHelper</item>
124124
<item>https://github.com/bingoogolapple/BGASwipeBackLayout-Android</item>
125-
<item>https://github.com/AriesHoo/TabLayout</item>
125+
<item>https://github.com/AriesHoo/UIWidget</item>
126126
<item>https://github.com/Bakumon/StatusLayoutManager</item>
127127
<item>https://github.com/AriesHoo/UIWidget</item>
128128
<item>https://github.com/scwang90/SmartRefreshLayout</item>

library/build.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ android {
5454
}
5555
dependencies {
5656
compileOnly 'com.google.android.material:material:'.concat(supportVersion)
57-
compileOnly 'androidx.appcompat:appcompat:'.concat(supportVersion)
57+
// compileOnly 'androidx.appcompat:appcompat:'.concat(supportVersion)
5858
compileOnly 'androidx.recyclerview:recyclerview:'.concat(supportVersion)
5959
//万能适配器
6060
compileOnly 'com.github.CymChad:BaseRecyclerViewAdapterHelper:2.9.45-androidx'
@@ -65,7 +65,9 @@ dependencies {
6565
//图片加载
6666
compileOnly 'com.github.bumptech.glide:glide:4.8.0'
6767
//常用UI控件(TitleBarView、RadiusView等)
68-
api 'com.github.AriesHoo.UIWidget:widget-core:3.2.19'
68+
api 'com.github.AriesHoo.UIWidget:widget-core:3.2.20'
69+
//快速Tab库
70+
api 'com.github.AriesHoo.UIWidget:tab-layout:3.2.20'
6971
//日志打印
7072
api 'com.orhanobut:logger:2.2.0'
7173
//注解
@@ -83,8 +85,6 @@ dependencies {
8385
api 'com.trello.rxlifecycle3:rxlifecycle-components:3.0.0'
8486
//滑动返回Activity
8587
api 'cn.bingoogolapple:bga-swipebacklayout:1.2.0@aar'
86-
//快速Tab库
87-
api 'com.github.AriesHoo:TabLayout:1.0.6'
8888
//页面事件交互
8989
api 'org.simple:androideventbus:1.0.5.1'
9090
//多状态视图切换
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
package com.aries.library.fast;
2+
3+
import android.app.Activity;
4+
5+
import com.aries.library.fast.manager.LoggerManager;
6+
7+
import org.simple.eventbus.EventBus;
8+
9+
import butterknife.Unbinder;
10+
11+
/**
12+
* @Author: AriesHoo on 2019/8/7 14:22
13+
* @E-Mail: AriesHoo@126.com
14+
* @Function: 绑定Activity Helper
15+
* @Description:
16+
*/
17+
public class BasisHelper {
18+
protected Activity mContext;
19+
protected Unbinder mUnBinder;
20+
protected String mTag = getClass().getSimpleName();
21+
22+
public BasisHelper(Activity context) {
23+
mContext = context;
24+
FastDelegateManager.getInstance().putBasisHelper(context, this);
25+
}
26+
27+
/**
28+
* Activity 关闭onDestroy调用
29+
*/
30+
public void onDestroy() {
31+
LoggerManager.i(mTag, "onDestroy");
32+
EventBus.getDefault().unregister(this);
33+
if (mUnBinder != null) {
34+
mUnBinder.unbind();
35+
mUnBinder = null;
36+
}
37+
}
38+
}

library/src/main/java/com/aries/library/fast/FastDelegateManager.java

Lines changed: 39 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,15 +2,17 @@
22

33
import android.app.Activity;
44

5+
import androidx.fragment.app.Fragment;
6+
import androidx.fragment.app.FragmentManager;
7+
58
import com.aries.library.fast.delegate.FastRefreshDelegate;
69
import com.aries.library.fast.delegate.FastTitleDelegate;
710
import com.aries.library.fast.manager.LoggerManager;
811

12+
import java.util.ArrayList;
13+
import java.util.List;
914
import java.util.WeakHashMap;
1015

11-
import androidx.fragment.app.Fragment;
12-
import androidx.fragment.app.FragmentManager;
13-
1416
/**
1517
* @Author: AriesHoo on 2019/3/25 10:48
1618
* @E-Mail: AriesHoo@126.com
@@ -41,6 +43,7 @@ public static FastDelegateManager getInstance() {
4143
*/
4244
private WeakHashMap<Class, FastRefreshDelegate> mFastRefreshDelegateMap = new WeakHashMap<>();
4345
private WeakHashMap<Class, FastTitleDelegate> mFastTitleDelegateMap = new WeakHashMap<>();
46+
private WeakHashMap<Activity, List<BasisHelper>> mBasisHelperMap = new WeakHashMap<>();
4447

4548
public FastRefreshDelegate getFastRefreshDelegate(Class cls) {
4649
FastRefreshDelegate delegate = null;
@@ -98,4 +101,37 @@ public void removeFastTitleDelegate(Class cls) {
98101
mFastTitleDelegateMap.remove(cls);
99102
}
100103
}
104+
105+
106+
public void putBasisHelper(Activity activity, BasisHelper helper) {
107+
if (activity == null) {
108+
return;
109+
}
110+
if (mBasisHelperMap.containsKey(activity)) {
111+
mBasisHelperMap.get(activity).add(helper);
112+
} else {
113+
List<BasisHelper> list = new ArrayList<>();
114+
list.add(helper);
115+
mBasisHelperMap.put(activity, list);
116+
}
117+
}
118+
119+
/**
120+
* {@link FastLifecycleCallbacks#onActivityDestroyed(Activity)}
121+
*
122+
* @param activity
123+
*/
124+
public void removeBasisHelper(Activity activity) {
125+
if (mBasisHelperMap.containsKey(activity)) {
126+
List<BasisHelper> list = mBasisHelperMap.get(activity);
127+
if (list != null) {
128+
LoggerManager.i("list:"+list.size());
129+
for (BasisHelper item : list) {
130+
item.onDestroy();
131+
}
132+
list.clear();
133+
mBasisHelperMap.remove(activity);
134+
}
135+
}
136+
}
101137
}

library/src/main/java/com/aries/library/fast/FastLifecycleCallbacks.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -185,6 +185,8 @@ public void onActivityDestroyed(Activity activity) {
185185
FastDelegateManager.getInstance().removeFastRefreshDelegate(activity.getClass());
186186
//清除标题栏代理类FastTitleDelegate
187187
FastDelegateManager.getInstance().removeFastTitleDelegate(activity.getClass());
188+
//清除BasisHelper
189+
FastDelegateManager.getInstance().removeBasisHelper(activity);
188190
//回调给开发者实现自己应用逻辑
189191
if (mActivityLifecycleCallbacks != null) {
190192
mActivityLifecycleCallbacks.onActivityDestroyed(activity);

library/src/main/java/com/aries/library/fast/FastManager.java

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,9 @@
44
import android.app.Application;
55
import android.os.Bundle;
66

7+
import androidx.annotation.Nullable;
8+
import androidx.core.content.ContextCompat;
9+
710
import com.aries.library.fast.delegate.FastRefreshDelegate;
811
import com.aries.library.fast.delegate.FastRefreshLoadDelegate;
912
import com.aries.library.fast.i.ActivityDispatchEventControl;
@@ -29,8 +32,6 @@
2932
import com.aries.ui.widget.progress.UIProgressDialog;
3033
import com.scwang.smartrefresh.layout.api.DefaultRefreshHeaderCreator;
3134

32-
import androidx.annotation.Nullable;
33-
import androidx.core.content.ContextCompat;
3435
import cn.bingoogolapple.swipebacklayout.BGASwipeBackHelper;
3536

3637
/**
@@ -45,7 +46,7 @@ public class FastManager {
4546
static {
4647
Application application = FastUtil.getApplication();
4748
if (application != null) {
48-
LoggerManager.i("init0");
49+
LoggerManager.i("FastManager", "initSuccess");
4950
init(application);
5051
}
5152
}

0 commit comments

Comments
 (0)