当前位置: 首页 > news >正文

爱站查询工具专业全网推广建站公司

爱站查询工具,专业全网推广建站公司,珠海微信公众号制作,电子邮箱免费注册一.使用 WorkManger主要是用来执行一定会执行的任务的#xff0c;如即使app被杀掉、手机重启都会执行。 适用场景#xff1a;定期重复性任务#xff0c;如定期log上传等 使用的话首先引入库#xff08;我使用的是2.7.1#xff09; implementation androidx.work:…一.使用 WorkManger主要是用来执行一定会执行的任务的如即使app被杀掉、手机重启都会执行。 适用场景定期重复性任务如定期log上传等 使用的话首先引入库我使用的是2.7.1 implementation androidx.work:work-runtime-ktx:2.7.1其次写个类继承Worker重新doWork方法用来执行你的具体任务  class TokenWorker(appContext: Context, workerParams: WorkerParameters) :CoroutineWorker(appContext, workerParams) {override suspend fun doWork(): Result withContext(Dispatchers.IO) {try {} catch (e: Exception) {Result.failure()}}}然后在需要使用的地方代码初始化workmanger并选用需要的方式开启任务 private val workManager: WorkManager by lazy {WorkManager.getInstance(applicationContext)}val constraints Constraints.Builder().setRequiredNetworkType(NetworkType.CONNECTED).build()val tokenRefreshWorkRequest PeriodicWorkRequestBuilderTokenWorker(50, TimeUnit.MINUTES).setConstraints(constraints).setInitialDelay(initialDelay, TimeUnit.MILLISECONDS).addTag(tokenRefreshWorkName).build()workManager.enqueueUniquePeriodicWork(tokenRefreshWorkName,ExistingPeriodicWorkPolicy.REPLACE,tokenRefreshWorkRequest) 我这里实现的是50分钟重复一次的任务约束条件是网络连接以及app在前台的条件下 官网上也有很多使用实例可供参考学习 二.原理 1.WorkManger是在什么地方初始化的 当我们使用WorkManger时会发现在生成的apk中provider子标签下有WorkManagerInitializer这个东西这就是入口同时发现有androidx.startup。 点进去发现继承自Initializer和以前的版本不太一样了以前看说是借助ContentProvider实现的在 AndroidX Startup 之前开发者通常会使用 ContentProvider 来在应用启动时初始化库。这是因为 ContentProvider 会在所有其他组件如 Activity之前创建和初始化。然而这种方法有一些缺点例如它会增加启动时间并且使用 ContentProvider 可能会导致一些不必要的复杂性。AndroidX Startup 库提供了一种替代方案可以避免这些问题。WorkManger就是更新了实现的方式。 WorkManager.initialize(context, new Configuration.Builder().build())中就是创建的操作。最后发现实际上是WorkManagerImpl 通过WorkDatabse创建了任务列表并记录每一个任务的属性、执行条件顺序以及状态等从而确保任务遭遇不测后手机关机重启等可以恢复继续执行 一路调用下来发现真正有作用的是internalInit方法同时我们发现schedulers是GreedyScheduler 在ForceStopRunnable的run()方法中我们发现它会完成那些被意外中断的任务。 以上就是WorkManger的初始化 2.dowork() 当我们在代码中通过各种方式调用enqueue()时通过多种调用最后都会走到WorkManagerImpl的startWork方法 最后发现StartWorkRunnable中run里面调用了startWork()方法 显然getProcessor是Processor点进去继续看会发现 在runWorker()方法中我们发现startWork() 而startWork是Worker的方法并在里面执行doWork方法这就是我们要继承Worker并重写doWork方法的原因
http://wiki.neutronadmin.com/news/79183/

相关文章:

  • 如何使网站做的更好怎么用代码创建网站教程
  • 什么网站可以发布广告编程培训费用
  • 网站org免费注册网络营销方法的选择
  • 河北黄骅市网站建设猎场第几集做的网站推广
  • seo有哪些网站电子商务网站建设试题3
  • 简单网站模板下载保定网站开发
  • 网站制作 企业网站建设哪家好佛山企业建网站
  • pc手机模板网站建设网站开发有哪些方向
  • 珠海网站开发公司在360网站上怎么做推广
  • 深圳互助资金盘网站开发劳务公司注册
  • 常州网站优化官方网站制作哪家专业
  • eclipse与jsp网站开发西安建设城市信息网站
  • 企业网站的类型有哪些网站带后台
  • 微网站建设行业现状陕西省建设监理协会网站证件查询
  • 鄂州免费设计网站建设wordpress自定义密码
  • 郑州网站外包哪家好成全视频免费观看在线看第6季高清版
  • 自己设置网站怎么做长沙好的网站建设公司哪家好
  • 网站维护的主要内容与网站建立的连接不安全
  • wordpress站长主题深圳品牌做网站公司
  • 企业做网站需要花多少钱yellow片免费观看
  • 网站建设及目标清明节网页设计素材
  • 网站制度建设mip wordpress 评论
  • 可以用来展示的网站赣州网站开发公司
  • 福州做网站互联网公司初三毕业适合女生学的专业
  • 个人网站备案可以填几个域名网站建设属于什么工作
  • 建网站设计网页设计模板html代码dw
  • 长沙做网站智投未来浏览器网站免费进入
  • 无锡网站推广$做下拉去118crerp是什么
  • 网站开发技术及特点tiktok国际版网页入口
  • 历下区住房和城市建设局网站前端和后端的区别工资