Skip to content

Commit 228b18a

Browse files
committed
使用协程简化异步代码
1 parent 4c61982 commit 228b18a

File tree

6 files changed

+51
-12
lines changed

6 files changed

+51
-12
lines changed

app/src/main/java/com/fmt/github/base/fragment/BaseListMVFragment.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ abstract class BaseListMVFragment<M> : BaseVMFragment(), OnRefreshListener,
4545
initViewModelAction()
4646
}
4747

48-
private fun initViewModelAction() {
48+
protected fun initViewModelAction() {
4949
(mPage == 1).yes {
5050
mRefreshLayout.autoRefreshAnimationOnly()
5151
}

app/src/main/java/com/fmt/github/ext/XPopupExt.kt

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,24 @@ import androidx.lifecycle.MutableLiveData
66
import com.fmt.github.AppContext
77
import com.fmt.github.R
88
import com.lxj.xpopup.XPopup
9+
import kotlin.coroutines.resume
10+
import kotlin.coroutines.suspendCoroutine
11+
12+
//回调转协程
13+
suspend fun showConfirmPopup(context: Context, title: String, message: String) =
14+
suspendCoroutine<Boolean> { continuation ->
15+
XPopup.Builder(context)
16+
.asConfirm(
17+
title,
18+
message,
19+
context.getString(R.string.cancel),
20+
context.getString(R.string.sure),
21+
{ continuation.resume(true) },
22+
{ continuation.resume(false) },
23+
false
24+
)
25+
.show()
26+
}
927

1028
fun createSortReposPopup(context: Context): LiveData<SortOption> {
1129
val liveData = MutableLiveData<SortOption>()//LiveData代替回调接口
@@ -67,9 +85,12 @@ fun createSortUsesPopup(context: Context): LiveData<SortOption> {
6785
XPopup.Builder(context)
6886
.asBottomList(
6987
context.getString(R.string.sort_options), arrayOf(
70-
context.getString(R.string.best_match), context.getString(R.string.most_followers),
71-
context.getString(R.string.fewest_followers), context.getString(R.string.most_recently_joined),
72-
context.getString(R.string.least_recently_joined), context.getString(R.string.most_repositories),
88+
context.getString(R.string.best_match),
89+
context.getString(R.string.most_followers),
90+
context.getString(R.string.fewest_followers),
91+
context.getString(R.string.most_recently_joined),
92+
context.getString(R.string.least_recently_joined),
93+
context.getString(R.string.most_repositories),
7394
context.getString(R.string.fewest_repositories)
7495
)
7596
) { position, _ ->

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

Lines changed: 18 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import android.content.Intent
44
import android.view.LayoutInflater
55
import android.view.Menu
66
import android.view.MenuItem
7+
import android.widget.Toast
78
import androidx.appcompat.app.ActionBarDrawerToggle
89
import androidx.core.content.ContextCompat
910
import androidx.databinding.DataBindingUtil
@@ -17,6 +18,8 @@ import com.fmt.github.base.viewmodel.BaseViewModel
1718
import com.fmt.github.constant.Constant
1819
import com.fmt.github.data.storage.Preference
1920
import com.fmt.github.databinding.LayoutNavHeaderBinding
21+
import com.fmt.github.ext.showConfirmPopup
22+
import com.fmt.github.ext.yes
2023
import com.fmt.github.home.adapter.HomePageAdapter
2124
import com.fmt.github.home.viewmodel.HomeViewModel
2225
import com.fmt.github.user.activity.AboutActivity
@@ -52,7 +55,8 @@ class HomeActivity : BaseVMActivity(), NavigationView.OnNavigationItemSelectedLi
5255
override fun getViewModel(): BaseViewModel = mViewModel
5356

5457
private fun initUserInfo() {
55-
lifecycleScope.launch {//Androidx的协程支持LifecycleScope、ViewModelScope
58+
lifecycleScope.launch {
59+
//Androidx的协程支持LifecycleScope、ViewModelScope
5660
mUser = mUserDao.getAll()[0]
5761
initHeaderLayout()
5862
initViewPager()
@@ -111,7 +115,7 @@ class HomeActivity : BaseVMActivity(), NavigationView.OnNavigationItemSelectedLi
111115

112116
R.id.item_about -> Intent(this, AboutActivity::class.java).run { startActivity(this) }
113117

114-
R.id.item_logout -> logout()
118+
R.id.item_logout -> showLogoutPopup()
115119
}
116120
mDrawerLayout.closeDrawers()//选择菜单时,关闭侧滑菜单
117121
return true
@@ -146,6 +150,18 @@ class HomeActivity : BaseVMActivity(), NavigationView.OnNavigationItemSelectedLi
146150
}
147151
}
148152

153+
private fun showLogoutPopup() {
154+
lifecycleScope.launch {
155+
showConfirmPopup(
156+
this@HomeActivity,
157+
getString(R.string.tips),
158+
getString(R.string.logout_message)
159+
).yes {
160+
logout()
161+
}
162+
}
163+
}
164+
149165
private fun logout() {
150166
mViewModel.deleteAuthorization(mUser.uid).observe(this, Observer {
151167
if (it) {

app/src/main/java/com/fmt/github/user/fragment/UserReposFragment.kt

Lines changed: 1 addition & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -60,15 +60,12 @@ class UserReposFragment : BaseListMVFragment<ReposItemModel>(){
6060
arguments?.let {
6161
mUserName = it.getString(KEY)
6262
mIsFavor = it.getBoolean(IS_FAVOR)
63-
getListData()
63+
initViewModelAction()
6464
if (mIsFavor) initStarEvent()
6565
}
6666
}
6767

6868
override fun getListData() {
69-
(mPage == 1).yes {
70-
mRefreshLayout.autoRefreshAnimationOnly()
71-
}
7269
mIsFavor.yes {
7370
mViewModel.getStarredRepos(mUserName, mPage).observe(this, mListObserver)
7471
}.otherwise {

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

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
<item>Repos</item>
55
<item>Favor</item>
66
</string-array>
7-
<string name="open">开启</string>
8-
<string name="close">关闭</string>
7+
<string name="open">open</string>
8+
<string name="close">close</string>
99
<string name="go_to_login">Sign in</string>
1010
<string name="please_enter_search_keywords">Please enter search keywords</string>
1111
<string name="introduce">I am %s, welcome you to visit my Home Page!</string>
@@ -43,6 +43,11 @@
4343
<string name="asc">asc</string>
4444
<string name="desc">desc</string>
4545

46+
<string name="tips">Tips</string>
47+
<string name="logout_message">Are you sure to exit?</string>
48+
<string name="cancel">cancel</string>
49+
<string name="sure">sure</string>
50+
4651
<string-array name="github_glyph_strings">
4752
<item>M256 70.7c-102.6 0-185.9 83.2-185.9 185.9 0 82.1 53.3 151.8 127.1 176.4 9.3 1.7 12.3-4
4853
12.3-8.9V389.4c-51.7 11.3-62.5-21.9-62.5-21.9 -8.4-21.5-20.6-27.2-20.6-27.2 -16.9-11.5 1.3-11.3 1.3-11.3

image/2281581130992_.pic.jpg

49.4 KB
Loading

0 commit comments

Comments
 (0)