Jay*_*ara 3 android react-native flutter android-instant-run hot-reload
目前,我正在从事React Native Project,当我在运行Project之后摇动手机时,它会提供实时更新。因为我也曾与Flutter合作,所以它也为我提供了相同的OutPut。但是,在Android中,有一个称为“即时运行”的功能。
我已经用Google搜索了即时运行。并且某些结果有所不同。AndroidStudio的“即时运行”不是“热重装”。
因此,我想知道即时运行和热装的工作和功能上的显着区别是什么?
我无法详细介绍技术细节,但是有一些实际差异:
实际上,Flutter的Hot Reload和Android Studio的Instant Run的工作方式之间几乎没有什么区别。
他们都检查代码更改,仅对已更改的内容执行编译步骤,然后将其发送到手机以运行。Android和Flutter应用程序均运行VM(jvm或dart vm),该VM能够即时更改类。
当您执行Flutter Hot Reload时,它会执行一个快速的增量编译步骤,然后将您的dart代码发送到手机上,该代码几乎立即运行。之所以这么快,部分是因为Flutter在调试模式下运行时会使用JIT编译模型,这意味着编译所花费的时间更少,但可能无法优化方法的第一次运行(或前几次运行)。在许多情况下,状态是在变化之间保持不变的,这是因为抖动的工作方式,而不是通过飞镖JIT处理固有的任何方式。对于某些事情(想到静态和initState函数),您实际上必须执行“ 完全重装”,它会重新初始化应用程序的状态,但仍然几乎是即时的。
Android Studio for Instant Run非常相似,但始终经过完全编译。VM具有某种检测功能,因此在调用方法时,VM会检查是否已注入新类。Instant Run会尽量减少更换。如果它可以简单地替换某些类,那么它将替换,但是它通常需要替换整个活动,有时甚至替换整个应用程序。这是此博客中的一个很好的图表(如果您想更深入地理解,值得阅读):

在功能上,即时运行和热重载应该非常相似。然而,在实践中我发现,扑的热重载是相当快于大量的即时运行,特别是对任何规模的应用。
此外,我发现与国家打交道的方式比Android活动的方式更适合于重新计算的类。在Flutter中,UI中涉及许多类,每个类都有各自的状态,并且只需更改其中几个即可。另外,在Android中,您倾向于具有较大的“视图”或“活动UI”,这需要花费更多的精力进行替换,并且经常导致重新加载活动,而不仅仅是在这里和那里的类。
| 归档时间: |
|
| 查看次数: |
1452 次 |
| 最近记录: |