React Native应用程序中有多少个线程运行
如果你想成为一个React Native开发者,并且已经掌握了创建基本的Android和iOS应用程序,那么了解线程执行过程是非常重要的。如果你了解React Native应用程序的执行方式以及使用了多少线程,这将有助于你构建更高效的应用程序。
什么是线程?
我们可以说线程是一组要由CPU执行的指令。线程是进程的组成部分,而进程是正在运行的程序。
线程生命周期:
如我们所知,JavaScript工作是异步的,因此与React组件的UI交互也是异步处理的。基本上,JavaScript线程处理监听用户事件、滚动事件等,并根据需要执行DOM操作,整个过程异步于主线程和UI。然后它进一步发送到React Native模块线程进行DOM操作和优化,然后发送到主线程队列。当主线程队列被执行时,改变将反映在UI上。
我们将线程的生命周期总结为三个阶段:
- 应用程序在后台运行时,线程停止执行。
- 应用程序在前台运行时,线程开始执行。
- 在进程中重新加载主JS包时,线程被终止。
React Native中有多少个线程: React Native的架构基于线程。基本上,有4个线程进行所有操作:
- UI线程
- JS线程
- Native模块线程
- Render线程
React Native UI线程(主线程): 这是执行同步操作的主线程。这也被称为UI线程,因为它位于我们所有组件层次的结束处。此线程执行来自Shadow线程的数据。例如,在Android中,此线程用于处理Android的measure/layout/draw事件。
JavaScript线程: JavaScript线程执行我们应用程序中的React和JavaScript代码逻辑。此线程执行来自开发人员编写的代码的DOM层次结构操作。一旦代码层次结构执行完毕,它会发送到Native模块线程进行优化和其他操作。
React Native模块线程: 当应用程序需要访问平台API时,会使用此线程。例如,如果您正在使用动画,可能需要安装本地驱动程序来处理您的动画。
React Native Render线程: 只有Android L(5.0)才会使用此线程来使用OpenGL绘制UI。这只在特定情况下使用,因此不能包含在主线程中。它完全是可选的。
React Native线程中的问题: 如果您了解React Native中这三个线程(JS线程、UI线程和React Native模块线程)的生命周期,那么您就会知道为什么在React Native中会出现性能问题。
使用线程的问题:
- 在JS线程中阻塞的动画。
- 由于超时或动画,导致导航转换变慢。
- DOM占用了大量空间。
- 在组件加载逻辑期间出现卡顿。
结论: 现在你应该清楚了线程是什么,有多少个线程,以及它们在React Native应用程序中起什么作用。