2017-03-07 14 views
0

有两种方法可以require React Native中Image组件的图像。当我使用`require`在React Native中加载图像时,它是否真的将图像加载到内存中?它何时会发布?

// 1. inline `require` (triggered when using) 
const IconView =() => 
    <Image source={require('./img/favicon.png')} /> 

// 2. define a variable for cache (triggered when loading) 
const imageSource = require('./img/favicon.png') 
const IconView =() => 
    <Image source={imageSource} /> 
  • 都相同的情况下?
  • 第二种情况会将整个图像加载到内存中吗?
  • 什么时候会发布require的图像?

回答

1

require的呼叫没有太大作用 - 它返回一个由RN包装商注册并分配给该图像的ID。当图像组件需要渲染时,实际的URL将从ID中解析出来。

在本机端,图像是从URL加载的,即使在这一点上,图像对象表示也只占用少量内存。只有当图像实际上被绘制为本地纹理时,它才会被充气(解压缩)并全部加载到内存中(当然,除非图像已被缓存)。

因此,要回答你的问题:

  1. 这两种情况都是一样的
  2. 第二种情况是不是特殊的,整个图像不会加载到内存中
  3. 的图像将被释放时的本地表示的图像视图被释放,除非它被缓存在内存中(在某些情况下,本地图像在内部被缓存),此时,操作系统需要释放该内存。

注意:上面的一些信息是从iOS的角度来看的,但它应该在Android上也足够接近。

相关问题