热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

Android的InstantRun与Flutter的HotReload和ReactNative的HotReload之间的区别?

如何解决《Android的InstantRun与Flutter的HotReload和ReactNative的HotReload之间的区别?》经验,为你挑选了2个好方法。

目前,我正在从事React Native Project,当我在运行Project之后摇动手机时,它会提供实时更新。因为我也曾与Flutter合作,所以它也为我提供了相同的OutPut。但是,在Android中,有一个称为“即时运行”的功能。

我已经用Google搜索了即时运行。并且某些结果有所不同。AndroidStudio的“即时运行”不是“热重装”。

因此,我想知道即时运行和热装的工作和功能上的显着区别是什么?



1> boformer..:

我无法详细介绍技术细节,但是有一些实际差异:

Flutter Hot Reload比Instant Run快很多

即时运行有时会失败并导致完全重建,这可能需要几分钟的时间。

保存文件时会自动计划Flutter Hot Reload,并且没有延迟。即时运行会导致很多延迟,这会分散注意力。

Flutter Hot Reload不会丢失任何状态,但是在使用Instant Run时,经常会发生应用重置的情况

Flutter还允许您在不到一秒钟的时间内重启应用程序(重置状态)(在Android中可能需要几分钟)

当应用程序在后台运行时,Flutter Hot Reload也可以使用

在对Flutter应用程序的本机Android和iOS Shell进行更改时,Flutter Hot Reload不会为您提供帮助。您必须使用Gradle / XCode进行完全重建(这也会重置状态)



2> rmtmckenzie..:

实际上,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”,这需要花费更多的精力进行替换,并且经常导致重新加载活动,而不仅仅是在这里和那里的类。


推荐阅读
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • baresip android编译、运行教程1语音通话
    本文介绍了如何在安卓平台上编译和运行baresip android,包括下载相关的sdk和ndk,修改ndk路径和输出目录,以及创建一个c++的安卓工程并将目录考到cpp下。详细步骤可参考给出的链接和文档。 ... [详细]
  • Android源码深入理解JNI技术的概述和应用
    本文介绍了Android源码中的JNI技术,包括概述和应用。JNI是Java Native Interface的缩写,是一种技术,可以实现Java程序调用Native语言写的函数,以及Native程序调用Java层的函数。在Android平台上,JNI充当了连接Java世界和Native世界的桥梁。本文通过分析Android源码中的相关文件和位置,深入探讨了JNI技术在Android开发中的重要性和应用场景。 ... [详细]
  • 本文概述了JNI的原理以及常用方法。JNI提供了一种Java字节码调用C/C++的解决方案,但引用类型不能直接在Native层使用,需要进行类型转化。多维数组(包括二维数组)都是引用类型,需要使用jobjectArray类型来存取其值。此外,由于Java支持函数重载,根据函数名无法找到对应的JNI函数,因此介绍了JNI函数签名信息的解决方案。 ... [详细]
  • Mono为何能跨平台
    概念JIT编译(JITcompilation),运行时需要代码时,将Microsoft中间语言(MSIL)转换为机器码的编译。CLR(CommonLa ... [详细]
  • Question该提问来源于开源项目:react-native-device-info/react-native-device-info ... [详细]
  • 初识java关于JDK、JRE、JVM 了解一下 ... [详细]
  • RN即ReactNative基于React框架针对移动端的跨平台框架,在学习RN前建议最好熟悉下html,css,js,当然如果比较急,那就直接上手吧,毕竟用学习前面基础的时间,R ... [详细]
  • JVM 学习总结(三)——对象存活判定算法的两种实现
    本文介绍了垃圾收集器在回收堆内存前确定对象存活的两种算法:引用计数算法和可达性分析算法。引用计数算法通过计数器判定对象是否存活,虽然简单高效,但无法解决循环引用的问题;可达性分析算法通过判断对象是否可达来确定存活对象,是主流的Java虚拟机内存管理算法。 ... [详细]
  • 本文介绍了作者在开发过程中遇到的问题,即播放框架内容安全策略设置不起作用的错误。作者通过使用编译时依赖注入的方式解决了这个问题,并分享了解决方案。文章详细描述了问题的出现情况、错误输出内容以及解决方案的具体步骤。如果你也遇到了类似的问题,本文可能对你有一定的参考价值。 ... [详细]
  • CentOS 7部署KVM虚拟化环境之一架构介绍
    本文介绍了CentOS 7部署KVM虚拟化环境的架构,详细解释了虚拟化技术的概念和原理,包括全虚拟化和半虚拟化。同时介绍了虚拟机的概念和虚拟化软件的作用。 ... [详细]
  • Java在运行已编译完成的类时,是通过java虚拟机来装载和执行的,java虚拟机通过操作系统命令JAVA_HOMEbinjava–option来启 ... [详细]
  • 本文介绍了RxJava在Android开发中的广泛应用以及其在事件总线(Event Bus)实现中的使用方法。RxJava是一种基于观察者模式的异步java库,可以提高开发效率、降低维护成本。通过RxJava,开发者可以实现事件的异步处理和链式操作。对于已经具备RxJava基础的开发者来说,本文将详细介绍如何利用RxJava实现事件总线,并提供了使用建议。 ... [详细]
  • 开发笔记:Python之路第一篇:初识Python
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了Python之路第一篇:初识Python相关的知识,希望对你有一定的参考价值。Python简介& ... [详细]
  • 【技术分享】一个 ELF 蠕虫分析
    【技术分享】一个 ELF 蠕虫分析 ... [详细]
author-avatar
vincent
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有