android aac框架,基于AAC架构玩安卓客户端

基于AAC架构玩安卓客户端

预览图如下:

首页、公众号、知识体系、项目

893af1c56e877a62626ec8fed9cb0dfd.png

3633dd9f8a411378a9e073a13a3f078b.png

c1d0457ed5d387432b683cdd146336a0.png

00544f5bab4540a7065d324367abf202.png

网络请求

还是常用大名鼎鼎的Retrofit2,然后结合了coroutines,使用起来更加方便了

举个栗子:

接口只需要使用suspend即可

@FormUrlEncoded

@POST("user/login")

suspend fun login(@Field("username") username:String,@Field("password") password:String) : Response>

处理请求的逻辑封装了另一个类CallResult,只显示关键部分

fun hold(result: suspend () -> Response>): CallResult {

var response: Response>?

var netJob: Job? = null

owner?.apply {

netJob = lifecycleScope.launchWhenStarted {

__________ 处理loading状态 ————————————————

response = withContext(Dispatchers.IO) {

withTimeoutOrNull(10000){//超时处理

result.invoke() //网络请求

}

}

if (lifecycle.currentState.isAtLeast(Lifecycle.State.STARTED)) {

withContext(Dispatchers.Main) {

__________ 处理超时和返回结果的逻辑————————————————

}

} else {

netJob?.cancel()

}

}

}

return this

}

使用方式如下:

fun login(username:String,password:String,call:MutableLiveData>){

CallResult(owner)

.loading {

__________ 处理读取————————————————

}.success { result, message ->

__________ 处理成功————————————————

call.value = result

}.error { result, code, message ->

__________ 处理错误————————————————

call.value = result

}.outTime {

__________ 处理超时————————————————

call.value = it

}.hold {

api.login(username, password)//登录

}

}

该项目使用: LiveData、ViewModel、Room 、Databinding 、WorkManager 、Lifecycles

图片加载采用: Glide

消息总线采用了:live-event-bus github:https://github.com/JeremyLiao/LiveEventBus

使用到了SlideBack的返回动画,fork后我进行进修改,原项目github:https://github.com/ParfoisMeng/SlideBack

其中照片墙部分不属于玩安卓的内容,是我本人自行加上,属于本地内容,利用Room数据库完成基本的数据获取。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值