Skip to content

Commit b8ed48c

Browse files
committed
Base类封装优化
1 parent 2e98ed8 commit b8ed48c

File tree

6 files changed

+22
-19
lines changed

6 files changed

+22
-19
lines changed

app/src/main/java/com/fmt/github/App.kt

-1
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package com.fmt.github
22

33
import android.app.Application
44
import android.content.ContextWrapper
5-
import android.os.Debug
65
import com.fmt.github.tasks.*
76
import com.rousetime.android_startup.StartupManager
87

app/src/main/java/com/fmt/github/base/activity/BaseVMActivity.kt

+7
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package com.fmt.github.base.activity
22

33
import android.os.Bundle
44
import androidx.appcompat.app.AppCompatActivity
5+
import androidx.lifecycle.LiveData
56
import com.fmt.github.base.viewmodel.BaseViewModel
67
import com.fmt.github.base.viewmodel.ErrorState
78
import com.fmt.github.base.viewmodel.LoadState
@@ -61,4 +62,10 @@ abstract class BaseVMActivity : AppCompatActivity() {
6162
open fun handleError() {
6263

6364
}
65+
66+
protected fun <T : Any> LiveData<T>.observeKt(block: (T) -> Unit) {
67+
this.observe(this@BaseVMActivity) {
68+
block(it)
69+
}
70+
}
6471
}

app/src/main/java/com/fmt/github/base/viewmodel/BaseViewModel.kt

+1-1
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@ open class BaseViewModel : ViewModel() {
1616

1717
fun launch(cancel: Cancel? = null, block: LaunchBlock) {//使用协程封装统一的网络请求处理
1818
viewModelScope.launch {
19-
//ViewModel自带的viewModelScope.launch,会在页面销毁的时候自动取消请求,有效封装内存泄露
19+
//ViewModel自带的viewModelScope.launch,会在页面销毁的时候自动取消请求,有效防止了内存泄露(具体可参考)
2020
try {
2121
mStateLiveData.value = LoadState
2222
block()

app/src/main/java/com/fmt/github/home/activity/HomeActivity.kt

+2-3
Original file line numberDiff line numberDiff line change
@@ -23,7 +23,6 @@ import com.fmt.github.user.activity.AboutActivity
2323
import com.fmt.github.user.activity.LoginActivity
2424
import com.fmt.github.user.activity.UserInfoActivity
2525
import com.fmt.github.user.dao.UserDao
26-
import com.fmt.github.user.model.UserModel
2726
import com.fmt.github.user.model.db.User
2827
import com.fmt.github.utils.NavigationUtil
2928
import com.fmt.github.utils.TREND_PAGE
@@ -134,11 +133,11 @@ class HomeActivity : BaseVMActivity(), NavigationView.OnNavigationItemSelectedLi
134133
}
135134

136135
private fun checkVersionUpdate() {
137-
mViewModel.getReleases().observe(this, {
136+
mViewModel.getReleases().observeKt {
138137
(it.tag_name != getVersionName()).yes {
139138
showVersionUpdatePopup(it.assets[0].browser_download_url)
140139
}
141-
})
140+
}
142141
}
143142

144143
private fun showVersionUpdatePopup(downLoadUrl: String) {

app/src/main/java/com/fmt/github/repos/activity/ReposDetailActivity.kt

+6-6
Original file line numberDiff line numberDiff line change
@@ -94,28 +94,28 @@ class ReposDetailActivity : BaseVMActivity() {
9494

9595
private fun checkRepoStarred() {
9696
mViewModel.checkRepoStarred(mOwner, mRepos)
97-
.observe(this, {
97+
.observeKt {
9898
fl_favor.visibility = View.VISIBLE
9999
mFavorIb.isLiked = it
100-
})
100+
}
101101
}
102102

103103
private fun starRepo() {
104104
mViewModel.starRepo(mOwner, mRepos)
105-
.observe(this@ReposDetailActivity, {
105+
.observeKt {
106106
successToast(getString(R.string.stared))
107107
LiveDataBus.with<ReposStarEvent>(Constant.STAR_EVENT_KEY)
108108
.setData(ReposStarEvent(mIsFromFavor))
109-
})
109+
}
110110
}
111111

112112
private fun unStarRepo() {
113113
mViewModel.unStarRepo(mOwner, mRepos)
114-
.observe(this@ReposDetailActivity, {
114+
.observeKt{
115115
successToast(getString(R.string.un_stared))
116116
LiveDataBus.with<ReposStarEvent>(Constant.STAR_EVENT_KEY)
117117
.setData(ReposStarEvent(mIsFromFavor))
118-
})
118+
}
119119
}
120120

121121
override fun onKeyDown(keyCode: Int, event: KeyEvent): Boolean =

app/src/main/java/com/fmt/github/user/activity/LoginActivity.kt

+6-8
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,6 @@ package com.fmt.github.user.activity
22

33
import android.content.Intent
44
import android.view.View
5-
import androidx.lifecycle.Observer
65
import com.fmt.github.R
76
import com.fmt.github.base.activity.BaseDataBindVMActivity
87
import com.fmt.github.base.viewmodel.BaseViewModel
@@ -13,7 +12,6 @@ import com.fmt.github.ext.otherwise
1312
import com.fmt.github.ext.startActivity
1413
import com.fmt.github.ext.yes
1514
import com.fmt.github.home.activity.HomeActivity
16-
import com.fmt.github.user.model.AuthorizationRespModel
1715
import com.fmt.github.user.model.UserLoginModel
1816
import com.fmt.github.user.model.UserModel
1917
import com.fmt.github.user.model.db.User
@@ -90,29 +88,29 @@ class LoginActivity : BaseDataBindVMActivity<ActivityLoginBinding>() {
9088
}
9189

9290
private fun createOrGetAuthorization() {
93-
mViewModel.createOrGetAuthorization().observe(this, Observer<AuthorizationRespModel> {
91+
mViewModel.createOrGetAuthorization().observeKt {
9492
//保存授权后的Token和ID
9593
Settings.Account.token = it.token
9694
//获取用户信息
9795
getUserInfo()
98-
})
96+
}
9997
}
10098

10199
private fun getToken(code: String?, state: String?) {
102100
if (code != null && state != null) {
103101
mDataBind.mOAuthProgress.visibility = View.VISIBLE
104102
mDataBind.mOAuthLoginIv.visibility = View.GONE
105-
mViewModel.getAccessToken(code, state).observe(this, Observer {
103+
mViewModel.getAccessToken(code, state).observeKt {
106104
Settings.Account.token = it.access_token
107105
getUserInfo()
108-
})
106+
}
109107
}
110108
}
111109

112110
private fun getUserInfo() {
113-
mViewModel.getUser().observe(this, Observer<UserModel> {
111+
mViewModel.getUser().observeKt {
114112
saveUserInfo(it)
115-
})
113+
}
116114
}
117115

118116
private fun saveUserInfo(userModel: UserModel) {

0 commit comments

Comments
 (0)