2024年鸿蒙最新为什么在 Kotlin-Coroutines 中不建议使用 GlobalScope?(4),2024年最新近期有面试的必看

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!


img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

在GlobalScope{…}

  • GlobalScope{…}当按下按钮时,主要协程将被启动。
  • 当按下按钮时,每次都会以第二个延迟运行无限循环。
  • 延迟 5 秒后,将启动第二个片段,如下代码所示:
  view.toSecondFragment.setOnClickListener {
       GlobalScope.launch{
         while (true) {
              delay(1000L)
              Log.d("From GlobalScope", "Global Scope Is Still Running")
     }
 }

      GlobalScope.launch(Dispatchers.Main){
         delay(5000L)
         Navigation.findNavController(view).navigate(R.id.firstFragment_to_secondFragment)
      }
}

  • 现在在成功构建后启动应用程序:

  • 正如你所看到的,即使第一个片段已经死了,我们的循环仍然继续,因为我们声明了我们的范围,GlobalScope{…}它将继续运行,直到我们的应用程序死了。
  • 这是在 Kotlin-Coroutines 中不鼓励使用 GlobalScope 的主要原因。

在lifecycleScope{…}

  • lifecycleScope{…}当按下按钮时,主要协程将被启动。
  • 当按下按钮时,每次都会以第二个延迟运行无限循环。
  • 延迟 5 秒后,将启动第二个 Fragment。

正如您viewLifecycleOwner在启动协程之前提到的代码中所见lifecycleScope{…}

  • 这是因为我正在处理片段。viewLifecycleOwner当 Fragment 有它的 UI 时添加 ( onCreateView() , onDestroyView() )这是添加到 Fragment 的整体生命周期( onCreate() , onDestroy() )。
  • 以防万一,如果您正在从事活动,则无需提及viewLifecycleOwner。
view.toSecondFragment.setOnClickListener {
            viewLifecycleOwner.lifecycleScope.launch{
                while (true) {
                    delay(1000L)
                    Log.d("From LifeCycleScope", "LifeCycleScope Is Still Running")
                }
            }
           viewLifecycleOwner.lifecycleScope.launch(Dispatchers.Main){
                delay(5000L)
                Navigation.findNavController(view).navigate(R.id.firstFragment_to_secondFragment)
            }
        }

  • 现在在成功构建后启动应用程序:

  • 如您所见,一旦片段死亡,协程执行就停止了。

同样意味着viewModelScope{…}同样,它也将执行与 相同lifecycleScope{…}。但是viewModelScope{…}当你使用 ViewModel(s) 时你会用到。

结论

  • 当您希望操作GlobalScope{…}运行直到应用程序死机时使用,如果不是,您绝对应该使用lifecycleScope{…}.
  • 如果您正在使用 ViewModel(s),您可以使用viewModelScope{…}.

最后,如果大伙有什么好的学习方法或建议欢迎大家在评论中积极留言哈,希望大家能够共同学习、共同努力、共同进步。

小编在这里祝小伙伴们在未来的日子里都可以 升职加薪,当上总经理,出任CEO,迎娶白富美,走上人生巅峰!!

不论遇到什么困难,都不应该成为我们放弃的理由!

深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!


img
img

既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!

由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新

需要这份系统化的资料的朋友,可以戳这里获取

只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新**

需要这份系统化的资料的朋友,可以戳这里获取

  • 3
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值