【发布时间】:2011-04-23 03:33:14
【问题描述】:
您好。 SDK 1.6.2
我将相机拍摄的位置与其他一些信息一起存储在数据库中。
我有一个通过数据库循环的窗口,并以小的平铺缩略图显示图像。
我拥有的图像越多,加载此窗口所需的时间就越长(在完成之前保持空白)
我是这样称呼图片的:
var imageArray = [];
var images = [];
// open and parse database
var db = Titanium.Database.open('photoDB');
var dbrows = db.execute('select id, date, image, tags from images order by date asc');
while (dbrows.isValidRow()) {
imagesArray.push({
id: dbrows.fieldByName('id'),
image:dbrows.fieldByName('image'), // image is the location of the stored image inside of applicationDataDirectory
tags:dbrows.fieldByName('tags')
});
dbrows.next();
}
dbrows.close();
db.close();
// Load in the images
for (var i = 0; i < imageArray.length; i++){
var pushleft = ((i % 4) * 76); // tile from left
var pushtop = (Math.floor(i/4) * 100); //tile from top
var file = Titanium.Filesystem.getFile(Ti.Filesystem.applicationDataDirectory, imageArray[i].image);
if(file.exists()){
images[i] = Ti.UI.createImageView({
image: file.nativePath,
width: 75,
height: 96,
left: pushleft,
top: pushtop,
store_id: imageArray[i].id,
zIndex: 99
});
win.add(images[i]);
}
}
我不确定延迟是由于 getFile 还是由于存储图像的大小?
我存储了 10 张图片,加载此窗口需要 13 秒。如果我不知道等待,我会认为它已损坏并离开应用程序...
有什么想法吗?谢谢!
【问题讨论】:
标签: performance sqlite filesystems titanium appcelerator