2017-03-07 5 views
0

Imageの画像をリアクションネイティブで表示する方法は2通りあります。React Nativeでイメージを読み込むために `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} /> 
  • 両方のケースでは同じですか?
  • 2番目のケースは画像全体をメモリにロードしますか?
  • require由来の画像はいつリリースされますか?

答えて

1

requireの呼び出しではあまり効果がありません.RNパッケージャによって登録され、このイメージに割り当てられたIDを返します。実際のURLは、イメージコンポーネントをレンダリングする必要があるときにIDから解決されます。

ネイティブ側では、イメージはURLからロードされ、この時点でもイメージオブジェクトの表現にはわずかなメモリしか必要としません。イメージが実際にネイティブテクスチャとして描画されたときにのみ、イメージは膨らんで(圧縮解除され)、メモリに完全にロードされます(もちろん、イメージはすでにキャッシュされていない限り)。

だからあなたの質問にお答えします

  1. どちらの場合も、同じ
  2. 第二のケースは特別なものではありませんで、イメージがリリースされます
  3. メモリに画像全体をロードしないだろうというときネイティブ表現メモリにキャッシュされていない限り(場合によっては、ローカルイメージが内部的にキャッシュされる)、この時点で、必要に応じてこのメモリを解放することがOSの懸念事項になります。

注:上記の情報の一部はiOSの観点からのものですが、Androidでも十分に機能するはずです。

関連する問題