}
通过 @BindViewModel
注解viewModel 变量,KtArmor-MVVM 通过反射
,自动创建 LoginViewModel
实例, 并赋值给 viewModel 变量。直接使用即可!
@BaseUrl
@BaseUrl(API.BASE_URL) // 看这里!!
interface ApiService {
@POST(API.LOGIN)
suspend fun login(@Query(“username”) username: String,
@Query(“password”) password: String): BaseResponse
}
我们通常使用Retrofit 的时候,都会创建对应 Service
接口类, 通过在 Service 上 标识 @BaseUrl 注解,并传入 对应 baseUrl,KtArmor-MVVM 就会将 baseUrl
“注入” 到 Retrfit 中。目前只是针对单个
baseUrl, 后续将考虑多个 baseUrl 动态切换的相关处理。
KtArmor-MVVM框架引入
注意!
- 由于采用了
Androidx
, 所以如果不是Androidx的话, 引入会有兼容性
问题(会报错!). - 版本: minSdkVersion
19
以下默认是Androidx
项目下引入
先在 build.gradle(Project:XXXX) 的 repositories 添加:
allprojects {
repositories {
…
maven { url “https://jitpack.io” }
}
}
然后在 build.gradle(Module:app) 的 dependencies 添加:
implementation ‘com.github.hyzhan43:KtArmor-MVVM:1.0.7’ //最新版本
快速上手
我们先从一个 简单登录功能来熟悉一下 KtArmor-MVVM
使用流程。
LoginActivity
class LoginActivity : AppCompatActivity(), IMvmActivity {
@BindViewModel
lateinit var viewModel: LoginViewModel
override fun getLayoutId(): Int = R.layout.activity_login
override fun initListener() {
mBtnLogin.setOnClickListener {
viewModel.login(mEtAccount.str(), mEtPassword.str())
}
}
override fun dataObserver() {
viewModel.loginData.observe(this, Observer {
toast(“登录成功”)
})
}
}
-
1、新建一个
LoginActivity
类,并实现IMvmActivity
“接口”
。 -
2、然后使用
@BindViewModel
绑定一个 ViewModel,KtArmor-MVVM 会自动注入赋值。 -
3、getLayoutId()方法,返回一个 R.layout.activity_login (布局id)
-
4、initListener()方法中设置 登录按钮事件 (mBtnLogin),通过
viewModel
来发起网络请求。 -
5、然后 在dataObserver()监听回调的结果即可。
然后我们再来看看, VM 层如何实现,也就是 LoginViewModel。
LoginViewModel
class LoginViewModel : BaseViewModel() {
val loginData = MutableLiveData()
fun login(account: String, password: String) {
// 校验参数
if (TextUtils.isEmpty(account) || TextUtils.isEmpty(password)) {
showToast(R.string.account_or_password_empty)
return
}
// DSL 方式发起 网络请求
quickLaunch {
onStart { showLoading() }
request { repository.login(account, password) }
onSuccess { loginData.value = it }
}
}
}
- 需创建 LoginViewModel类,继承
BaseViewModel
,并传入LoginRepository
,自动注入 LoginRepositoy 实例。 -
quickLaunch<XXX>
方法是使用DSL
方式发起网络请求 -
repository
login 方法真正发起网络请求 -
onSuccess()
方法 监听回调结果,并设置给LoginData
最后,我们来看看 Repository 的处理。
自我介绍一下,小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。
深知大多数Android工程师,想要提升技能,往往是自己摸索成长或者是报班学习,但对于培训机构动则几千的学费,着实压力不小。自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年Android移动开发全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,基本涵盖了95%以上Android开发知识点,真正体系化!
由于文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新
如果你觉得这些内容对你有帮助,可以添加V获取:vip204888 (备注Android)
总结
作为一名从事Android的开发者,很多人最近都在和我吐槽Android是不是快要凉了?而在我看来这正是市场成熟的表现,所有的市场都是温水煮青蛙,永远会淘汰掉不愿意学习改变,安于现状的那批人,希望所有的人能在大浪淘沙中留下来,因为对于市场的逐渐成熟,平凡并不是我们唯一的答案!
远会淘汰掉不愿意学习改变,安于现状的那批人,希望所有的人能在大浪淘沙中留下来,因为对于市场的逐渐成熟,平凡并不是我们唯一的答案!
[外链图片转存中…(img-vmXZfSd0-1711874432523)]
[外链图片转存中…(img-nERTV93D-1711874432523)]文章来源:https://www.toymoban.com/news/detail-845998.html
本文已被CODING开源项目:《Android学习笔记总结+移动架构视频+大厂面试真题+项目实战源码》收录文章来源地址https://www.toymoban.com/news/detail-845998.html
到了这里,关于新鲜出炉的 MVVM 脚手架 —— KtArmor-MVVM,面试安卓系统架构的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!