今天我更新了我的android工作室并运行以前版本存在的应用程序 . 当我运行应用程序与以前的版本应用程序启动非常快但当我更新Android工作室和运行相同的应用程序与更新版本然后应用程序占用太多是时候发布了 . 我搜索了这个问题,发现如果启用了即时运行,那么禁用它,这样我就可以完成相同的操作并且应用程序启动速度尽可能快 .
现在我的问题是 -
-
什么是即时运行?使用它有什么代价和缺点?
-
为什么应用程序在启用即时运行时需要花费太多时间才能启动,当我禁用它时,为什么它会快速启动应用程序 .
4 回答
即时运行附带最新版本的Android Studio . 但在某些情况下,使用它时它是有线的 .
什么是Instant Run?
在普通的构建和运行中,整个APK文件被更新并推送到设备 . 但是当使用即时运行时,只有更新的部件才会在设备中被替换 . 即时运行通过执行 hot swap , warm swap 或 cold swap 将更新的代码和资源推送到连接的设备或模拟器 . 它会根据您所做的更改类型自动确定要执行的交换类型 .
优点
它可能比普通版本更快 . 但它要求应用程序在API 21下构建时运行 .
缺点
说真的,我觉得安装不变的问题 . 那是在某些时候使用即时运行时应用程序似乎没有更新 . 它保留在以前的版本中 . 有时我觉得它比普通版本慢 .
热插拔:
这是最快的交换类型,可以更快地显示更改 . 您的应用程序一直在运行,下次调用该方法时会使用带有新实现的存根方法 .
温暖交换:
此交换仍然非常快,但Instant Run必须在将更改的资源推送到您的应用程序时重新启动当前活动 .
冷交换(API级别21或更高):
此交换速度稍慢,因为虽然不需要新的APK文件,但Instant Run必须在推送结构代码更改时重新启动整个应用程序 .
见this文档 .
Without Instant run :
With instant run :
资料来源:https://medium.com/google-developers/instant-run-how-does-it-work-294a1633367f
Instant run:
这是Android Studio中的一项功能,它使用魔术来显着减少编码/测试/调试生命周期中增量代码更改的构建和部署时间 .
这是正常现象,是
Instant Run
功能的一部分 . 理论上,后续负载应该更快 .您应该尝试重新启用它并观察后续运行,您将看到结果 .
即时运行允许您在不构建新APK的情况下推送代码更改 .