【问题标题】:When I use `require` to load an image in React Native, does it really load the image into memory? When will it release?当我在 React Native 中使用 `require` 加载图像时,它真的会将图像加载到内存中吗?什么时候发布?
【发布时间】:2017-07-27 13:02:48
【问题描述】:

在 React Native 中有两种方法可以为 Image 组件提供 require 图像。

// 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 的图像何时发布?

【问题讨论】:

    标签: react-native require


    【解决方案1】:

    require 的调用没有多大作用 - 它返回一个由 RN 打包程序注册并分配给该图像的 ID。当图像组件需要渲染时,实际的 URL 是从 ID 中解析出来的。

    在本机端,图像是从 URL 加载的,即使在这一点上,它也只需要少量的内存来表示图像对象。只有当图像实际绘制为原生纹理时,它才会膨胀(解压缩)并完全加载到内存中(当然,除非图像已经被缓存)。

    所以回答你的问题:

    1. 两种情况相同
    2. 第二种情况并不特殊,不会将整个图像加载到内存中
    3. 当图像视图的本机表示被释放时,图像将被释放,除非它被缓存在内存中(在某些情况下,本地图像被内部缓存),此时释放该内存成为操作系统的关注点必要的。

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

    【讨论】:

      猜你喜欢
      • 2014-02-22
      • 1970-01-01
      • 2021-05-02
      • 1970-01-01
      • 2021-01-28
      • 2023-03-17
      • 2011-03-16
      • 1970-01-01
      • 2016-05-17
      相关资源
      最近更新 更多