2015 年 4 月の更新: Titanium 3.X の時点で、以下の Gautier の回答に従って画像にキャッシュがあります。
デフォルトでは、ImageView にリモート イメージはキャッシュされません。あなたのシナリオでは、リモート イメージに切り替えたときに、リモート イメージが再度ダウンロードされます。
私のプロジェクトのほとんどでは、ダウンロード後にローカル イメージを保存する cachingImageView を作成します。これは、 https://gist.github.com/938172にあるDawson Toth の作品に触発されています。唯一の問題は、イメージがローカルにキャッシュされた後にサーバー上で変更された場合、ファイル名が変更されない限り、クライアントは更新されたイメージを取得できないことです。コードは以下です。
exports.createCachingImageView = function(params) {
var image = Ti.UI.createImageView();
image.doRemote = function(imageURL) {
image.remoteImage = imageURL;
var file = Ti.Filesystem.getFile(somedirectory, image.localFileName(imageURL));
if(!file.exists()) {
// cached file does not exist, load the image
image.addEventListener("load", image.saveImageOnLoad);
image.image = imageURL;
} else {
Ti.API.debug(image.localFileName(imageURL) + ' does exist, just setting image');
image.image = file.nativePath;
}
};
image.saveImageOnLoad = function(e) {
Ti.API.debug('saving image ' + image.localFileName(image.remoteImage));
var f = Ti.Filesystem.getFile(somedirectory, image.localFileName(image.remoteImage));
if(!f.read()) {
f.write(e.source.toBlob());
}
e.source.removeEventListener('load', image.saveImageOnLoad);
};
image.localFileName = function(imageURL) {
hashedSource = Ti.Utils.md5HexDigest(imageURL + '');
return hashedSource;
};
if(params.image) {
image.doRemote(params.image);
}
for(var v in params) {
if(v != 'image') {
image[v] = params[v];
}
}
return image;
};
imageView を使用せずにイメージをスタンドアロンでダウンロードする場合は、Ti.Network.httpClient を使用してイメージを取得し、次のようにファイル システムに保存します。
xhr.onload = function(){
var file = Ti.Filesystem.getFile(somedirectory, somefilename );
file.write(this.responseData);
}
これを使用して事前に画像を取得するため、クライアントが画像を使用するとすぐに画像が表示されます。