WorkManager使用小技巧

android jetpack 提供的包中提供的新工具:WorkManager

//workManager引入
implementation 'androidx.work:work-runtime:2.5.0' //java

implementation 'androidx.work:work-runtime-ktx:2.5.0' //kotlin

除了官方说的持久性工作用途

 我发现使用WorkManager + Retrofit可以帮助我们优雅的完成网络请求事件

        例如

        我们有一个登录的请求操作,需要将账号+密码上传给服务器进行验证,并将结果反馈到主线程。首先在Android环境下,请求网络这种事情是不能在主线程的,所以一般的做法是单独为其开一个子线程来做请求操作,待请求结果完成,再返回给主线程。这中间所有关于线程切换的操作,都需要我们手动完成,而且中途如果子线程抛出异常,我们是很难处理的,而且还会造成大量的代码冗余。

        但是结合WorkManager + Retrofit之后情况就完全不同啦,不废话,上代码:

/**
 * 登录任务
 */
class LoginWorker(context: Context, workerParams: WorkerParameters) :
    Worker(context, workerParams) {

    companion object {
        //两个Key值
        const val LOGIN_NAME = "LOGIN_NAME"
        const val LOGIN_PWD = "LOGIN_PWD"

        /**
         * 在伴生对象中(相当于java的静态方法)用方法创建一个WorkRequest
         * 这个request是一个一次性的Work任务
         */
        fun start(name: String, pwd: String): WorkRequest {
            val workRequest = OneTimeWorkRequestBuilder<LoginWorker>().apply {
                setInputData(Data.Builder().let {
         
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值