2

我已经更新到最新版本的 android studio (2.1)。文档中提到,android studio 最新版本将在 android studio 的即时运行功能中支持冷热交换。

谁能告诉我热交换和冷交换有什么区别

4

4 回答 4

7
于 2016-05-05T10:01:08.767 回答
3

阅读Instant Run 的官方文档以获取完整的详细信息。主要细节如下:

什么是热插拔、热插拔和冷插拔?

热插拔

这是最快的交换类型,几乎可以立即看到更改。您的应用程序继续运行,并在下次调用该方法时使用具有新实现的存根方法。

热交换

这种交换仍然非常快,但需要在 Instant Run 将更改的资源推送到目标设备时自动重新启动活动。您的应用程序会继续运行,但当 Activity 重新启动时,屏幕上可能会出现小闪烁——这是正常的。

冷交换

(API 级别 21 或更高):Instant Run 将结构代码更改推送到目标设备并重新启动整个应用程序。

对于运行 API 级别 20 或更低级别的目标设备,Android Studio 会部署 APK 的完整版本。


触发每个交换的代码更改类型

什么触发热交换?

Change implementation code of an existing instance method or static method

什么触发了热交换?

Change or remove an existing resource

什么触发冷交换?

Structural code changes, such as:

 - Add, remove, or change:
 - an annotation
 - an instance field
 - a static field
 - a static method signature
 - an instance method signature

Change which parent class the current class inherits from

Change the list of implemented interfaces

Change a class static initializer

Reorder layout elements that utilize dynamic resource IDs
于 2016-05-05T09:47:52.433 回答
0

此功能称为即时运行。

文档中的表格中列出了其工作方式和时间的详细说明。

于 2016-05-05T09:40:36.670 回答
0

我找到了这个完美的帖子。它用图形插图解释了这个概念。

https://medium.com/google-developers/instant-run-how-does-it-work-294a1633367f#.g7r0yk9g4

快速回顾是:

热交换:-在运行代码中所做的更改。无需重启。节省时间。

热交换:-进行更改并重新启动特定活动。

冷交换:-重新启动活动以访问更改。

PS:-从个人经验来看,在热插拔中,在 onCreate() 中分配的值在 onResume() [或在 onCreate] 之外不可用,因此为 null。因此,如果值仅在 onCreate() 块中初始化,onResume() 可能会抛出 nullPointerException。
(我不确定这是否是唯一的情况,如果我的逻辑和推理错误,请评论/编辑。)

于 2016-12-02T09:05:44.850 回答