深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
- 我创建了两个片段并通过导航组件在两个片段之间添加了导航。
第一个片段的 XML:
第二个片段的 XML:
讲真话的时间🔥
在进一步Make Sure说明您已包含协程依赖项(如果未包含)之前:
implementation 'org.jetbrains.kotlinx:kotlinx-coroutines-android:1.5.0'
在 First Fragment 的 Kotlin 文件中:
在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) 时你会用到。
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
opics/618636735)**
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!