Skip to content

Commit 0bbde05

Browse files
author
hegj
committed
使用dagger优化重构代码
1 parent 7d290bb commit 0bbde05

30 files changed

+152
-55
lines changed

app/build.gradle

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ android {
2222
versionName rootProject.ext.android["versionName"]
2323
testInstrumentationRunner rootProject.ext.dependencies["androidJUnitRunner"]
2424
ndk {
25-
// 设置支持的SO库架构
25+
// 设置支持的SO库架构 一般只设置这个就阔以设配所有的设备了,还可以极大的减少apk的大小
2626
abiFilters 'armeabi-v7a'
2727
}
2828
}
@@ -85,10 +85,10 @@ android {
8585
dependencies {
8686
implementation fileTree(include: ['*.jar'], dir: 'libs')
8787
//androidX基础库
88-
implementation "androidx.appcompat:appcompat:1.1.0-rc01"
89-
implementation 'com.google.android.material:material:1.1.0-alpha09'
88+
implementation "androidx.appcompat:appcompat:1.1.0"
89+
implementation 'com.google.android.material:material:1.1.0-alpha10'
9090
implementation "androidx.constraintlayout:constraintlayout:1.1.3"
91-
implementation "androidx.preference:preference:1.1.0-rc01"
91+
implementation "androidx.preference:preference:1.1.0"
9292
implementation "androidx.cardview:cardview:1.0.0"
9393
//dagger
9494
annotationProcessor rootProject.ext.dependencies["dagger2-compiler"]

app/src/main/java/me/hegj/wandroid/app/AppLifecyclesImpl.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,7 @@ import com.tencent.bugly.Bugly
3131
import com.tencent.bugly.crashreport.CrashReport.UserStrategy
3232
import com.tencent.mmkv.MMKV
3333
import me.hegj.wandroid.BuildConfig
34+
import me.hegj.wandroid.R
3435
import me.hegj.wandroid.app.utils.HttpUtils
3536
import me.hegj.wandroid.app.weight.loadCallBack.EmptyCallback
3637
import me.hegj.wandroid.app.weight.loadCallBack.ErrorCallback
@@ -100,7 +101,7 @@ class AppLifecyclesImpl : AppLifecycles {
100101
val strategy = UserStrategy(context)
101102
strategy.isUploadProcess = processName == null || processName == packageName
102103
// 初始化Bugly
103-
Bugly.init(context, "xxxxx", BuildConfig.DEBUG)
104+
Bugly.init(context, "5a5f6366fc", BuildConfig.DEBUG)
104105

105106
CaocConfig.Builder.create()
106107
.backgroundMode(CaocConfig.BACKGROUND_MODE_SILENT) //default: CaocConfig.BACKGROUND_MODE_SHOW_CUSTOM

app/src/main/java/me/hegj/wandroid/app/GlobalHttpHandlerImpl.kt

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ import okhttp3.Response
3333
* [Follow me](https://github.com/JessYanCoding)
3434
* ================================================
3535
*/
36-
class GlobalHttpHandlerImpl(private val context: Context) : GlobalHttpHandler {
36+
class GlobalHttpHandlerImpl(val context: Context) : GlobalHttpHandler {
3737

3838
/**
3939
* 这里可以先客户端一步拿到每一次 Http 请求的结果, 可以先解析成 Json, 再做一些操作, 如检测到 token 过期后
@@ -68,10 +68,12 @@ class GlobalHttpHandlerImpl(private val context: Context) : GlobalHttpHandler {
6868
/* 如果需要在请求服务器之前做一些操作, 则重新构建一个做过操作的 Request 并 return, 如增加 Header、Params 等请求信息, 不做操作则直接返回参数 request*/
6969
if (CacheUtil.isLogin()) {
7070
val cookies = CacheUtil.getCookie()
71-
//如果已经登录过了,那么请求的时候可以带上cookie 参数,即 姓名 密码
72-
return chain.request().newBuilder()
73-
.addHeader("Cookie", cookies)
74-
.build()
71+
//如果已经登录过了,那么请求的时候可以带上cookie 参数
72+
cookies?.run {
73+
return chain.request().newBuilder()
74+
.addHeader("Cookie", this)
75+
.build()
76+
}
7577
}
7678

7779
return request

app/src/main/java/me/hegj/wandroid/app/utils/CacheDataManager.kt

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@ package me.hegj.wandroid.app.utils
22

33
import android.content.Context
44
import android.os.Environment
5+
import com.jess.arms.base.App
6+
import com.jess.arms.di.component.AppComponent
7+
import com.jess.arms.integration.AppManager
8+
import com.jess.arms.utils.ArmsUtils
59

610
import java.io.File
711
import java.math.BigDecimal
@@ -19,10 +23,17 @@ object CacheDataManager {
1923
}
2024

2125
fun clearAllCache(context: Context) {
22-
2326
deleteDir(context.cacheDir)
2427
if (Environment.getExternalStorageState() == Environment.MEDIA_MOUNTED) {
25-
deleteDir(context.externalCacheDir)
28+
if(context.externalCacheDir==null){
29+
AppManager.getAppManager().currentActivity?.let {
30+
ShowUtils.showDialog(it,"清理缓存失败")
31+
}
32+
return
33+
}
34+
context.externalCacheDir?.let {
35+
deleteDir(it)
36+
}
2637
}
2738
}
2839

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
package me.hegj.wandroid.app.utils;
2+
3+
import io.reactivex.Observer;
4+
import io.reactivex.annotations.NonNull;
5+
import io.reactivex.disposables.Disposable;
6+
import me.jessyan.rxerrorhandler.core.RxErrorHandler;
7+
import me.jessyan.rxerrorhandler.handler.ErrorHandlerFactory;
8+
9+
public abstract class CustomHandleSubscriber<T> implements Observer<T> {
10+
private ErrorHandlerFactory mHandlerFactory;
11+
12+
public CustomHandleSubscriber(RxErrorHandler rxErrorHandler){
13+
this.mHandlerFactory = rxErrorHandler.getHandlerFactory();
14+
}
15+
16+
17+
@Override
18+
public void onSubscribe(@NonNull Disposable d) {
19+
20+
}
21+
22+
23+
@Override
24+
public void onComplete() {
25+
26+
}
27+
28+
@Override
29+
public void onNext(T t) {
30+
onReturNext(t);
31+
}
32+
public T onReturNext(T t){
33+
return t;
34+
}
35+
@Override
36+
public void onError(@NonNull Throwable t) {
37+
t.printStackTrace();
38+
//如果你某个地方不想使用全局错误处理,则重写 onError(Throwable) 并将 super.onError(e); 删掉
39+
//如果你不仅想使用全局错误处理,还想加入自己的逻辑,则重写 onError(Throwable) 并在 super.onError(e); 后面加入自己的逻辑
40+
mHandlerFactory.handleError(t);
41+
}
42+
}

app/src/main/java/me/hegj/wandroid/di/module/main/home/HomeModule.kt

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,9 @@ import dagger.Module
66
import dagger.Provides
77

88
import me.hegj.wandroid.mvp.contract.main.home.HomeContract
9+
import me.hegj.wandroid.mvp.model.entity.AriticleResponse
910
import me.hegj.wandroid.mvp.model.main.home.HomeModel
11+
import me.hegj.wandroid.mvp.ui.adapter.AriticleAdapter
1012

1113

1214
/**
@@ -35,4 +37,16 @@ class HomeModule(private val view: HomeContract.View) {
3537
fun provideHomeModel(model: HomeModel): HomeContract.Model {
3638
return model
3739
}
40+
41+
@FragmentScope
42+
@Provides
43+
fun getData():ArrayList<AriticleResponse>{
44+
return arrayListOf()
45+
}
46+
47+
@FragmentScope
48+
@Provides
49+
fun getAdapter(data:ArrayList<AriticleResponse>):AriticleAdapter{
50+
return AriticleAdapter(data,true)
51+
}
3852
}

app/src/main/java/me/hegj/wandroid/mvp/contract/MainContract.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
package me.hegj.wandroid.mvp.contract
22

3-
import com.jess.arms.mvp.IView
43
import com.jess.arms.mvp.IModel
4+
import me.hegj.wandroid.mvp.ui.base.BaseIView
55

66

77
/**
@@ -18,7 +18,7 @@ import com.jess.arms.mvp.IModel
1818
*/
1919
interface MainContract {
2020
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
21-
interface View : IView
21+
interface View : BaseIView
2222

2323
//Model层定义接口,外部只需关心Model返回的数据,无需关心内部细节,即是否使用缓存
2424
interface Model : IModel

app/src/main/java/me/hegj/wandroid/mvp/contract/collect/CollectContract.kt

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
11
package me.hegj.wandroid.mvp.contract.collect
22

3-
import com.jess.arms.mvp.IView
43
import com.jess.arms.mvp.IModel
54
import io.reactivex.Observable
6-
import me.hegj.wandroid.mvp.model.entity.*
5+
import me.hegj.wandroid.mvp.model.entity.ApiPagerResponse
6+
import me.hegj.wandroid.mvp.model.entity.ApiResponse
7+
import me.hegj.wandroid.mvp.model.entity.CollectResponse
8+
import me.hegj.wandroid.mvp.ui.base.BaseIView
79

810

911
/**
@@ -20,7 +22,7 @@ import me.hegj.wandroid.mvp.model.entity.*
2022
*/
2123
interface CollectContract {
2224
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
23-
interface View : IView{
25+
interface View : BaseIView {
2426
fun requestDataSucc(apiPagerResponse: ApiPagerResponse<MutableList<CollectResponse>>)
2527
fun requestDataFaild(errorMsg: String)
2628
fun uncollect(position:Int)

app/src/main/java/me/hegj/wandroid/mvp/contract/collect/CollectUrlContract.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
package me.hegj.wandroid.mvp.contract.collect
22

3-
import com.jess.arms.mvp.IView
43
import com.jess.arms.mvp.IModel
54
import io.reactivex.Observable
65
import me.hegj.wandroid.mvp.model.entity.ApiResponse
76
import me.hegj.wandroid.mvp.model.entity.CollectUrlResponse
7+
import me.hegj.wandroid.mvp.ui.base.BaseIView
88

99

1010
/**
@@ -21,7 +21,7 @@ import me.hegj.wandroid.mvp.model.entity.CollectUrlResponse
2121
*/
2222
interface CollectUrlContract {
2323
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
24-
interface View : IView{
24+
interface View : BaseIView {
2525
fun requestDataUrlSucc(apiPagerResponse: MutableList<CollectUrlResponse>)
2626
fun requestDataFaild(errorMsg: String)
2727
fun uncollect(position:Int)

app/src/main/java/me/hegj/wandroid/mvp/contract/integral/IntegralContract.kt

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,12 @@
11
package me.hegj.wandroid.mvp.contract.integral
22

33
import com.jess.arms.mvp.IModel
4-
import com.jess.arms.mvp.IView
54
import io.reactivex.Observable
65
import me.hegj.wandroid.mvp.model.entity.ApiPagerResponse
76
import me.hegj.wandroid.mvp.model.entity.ApiResponse
87
import me.hegj.wandroid.mvp.model.entity.IntegralHistoryResponse
98
import me.hegj.wandroid.mvp.model.entity.IntegralResponse
9+
import me.hegj.wandroid.mvp.ui.base.BaseIView
1010

1111

1212
/**
@@ -23,7 +23,7 @@ import me.hegj.wandroid.mvp.model.entity.IntegralResponse
2323
*/
2424
interface IntegralContract {
2525
//对于经常使用的关于UI的方法可以定义到IView中,如显示隐藏进度条,和显示文字消息
26-
interface View : IView {
26+
interface View : BaseIView {
2727
fun requestDataSucces(ariticles: ApiPagerResponse<MutableList<IntegralResponse>>)
2828
fun requestHistoryDataSucces(ariticles: ApiPagerResponse<MutableList<IntegralHistoryResponse>>)
2929
fun requestDataFaild(errorMsg: String)

0 commit comments

Comments
 (0)