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

网站维护开发合同srm采购管理系统

网站维护开发合同,srm采购管理系统,微商城设计网站建设,广东网站建设网站一.使用 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://www.yutouwan.com/news/353422/

相关文章:

  • 银川网站建设那家公司比较好怎么注销个人的营业执照
  • 安徽网站建设公司排名美工图片制作软件
  • 厉害的网站开发东莞微信小程序开发公司报价
  • 网站做su什么意思大佛寺广州网站
  • 做cpa的电影网站模板免费刷推广链接的软件
  • 做网站服务器多少钱搜索引擎优化的英文
  • 深圳大腕互联网站建设彩虹云免费主机
  • 中国万网官方网站做网站的收钱不管了
  • 东乡做网站做视频网站资金多少
  • 艺阳科技网站建设网站开发设计的技术路线
  • 建企业网站多少钱南昌购物网站制作
  • 郑州做网站公司有多少钱品牌注册需要什么条件
  • 网站制作软件图标网站开发完整的解决方案
  • 网站版权符号代码网站和软件的区别
  • 阿里巴巴怎么做自己的免费网站seo关键词快速排名前三位
  • 网站建设教程视频seo人员工作内容
  • 电子商务网站的运营一般需要做哪些准备怎样注册企业邮箱
  • 南京广告宣传公司seowin10优化软件
  • 吴彦祖做的艺术家网站wordpress 搜索功能
  • 免费发布信息网站有哪些网络优化工程师发展前景
  • 猪八戒网站做推广怎么样2015年做网站行不行
  • 天气预报最新天气预报seo的收费标准
  • c++语言做网站青羊区建设局网站
  • 网站设计合同注意事项app设计网站有哪些功能
  • 模拟百度搜索词进入网站海安建设银行网站
  • 什么是网站建设的三次点击原则带佣金的旅游推广平台有哪些
  • 广西免费网站制作qq空间如何发布wordpress
  • wordpress 切换中文字体邢台网站优化公司
  • vue.js做的网站一级直播
  • 关键词搜索爱站网网站建设栏目怎么介绍