【发布时间】:2013-08-10 06:27:21
【问题描述】:
我使用了多列tableView!对于一个屏幕我有16个单元格,如果我有3000个数据,我从数据库中获取缩略图(我使用开源-FMDB),当加载这个表时,我打开只有一个线程可以下载缩略图并保存到数据库。
当单元格可见时,如果已下载,我会从 db 获取缩略图。 但是我发现我从数据库中获取数据非常慢,一个单元格大约需要 0.15~1.3 秒,而我一屏有 16 个单元格。所以它阻塞了我的主线程?
有什么建议可以帮助我解决问题吗?
提前致谢。
这是我得到缩略图的代码~
-(NSData *)queryVideoSmallThumbnailData:(NSString *)theSourceUrl
{
if(theSourceUrl == nil)
return nil;
NSString *query = @"SELECT SMALL_THUMBNAIL_DATA FROM FIELDS WHERE SOURCE_URL";
query = [query stringByAppendingString:@"=\""];
query = [query stringByAppendingString:theSourceUrl];
query = [query stringByAppendingString:@"\""];
NSData * data = nil;
FMResultSet *rs = [database executeQuery:query];
while ([rs next])
{
data = [rs dataForColumn:@"SMALL_THUMBNAIL_DATA"];
break;
}
[rs close];
return data;
}
这是表格视图刷新图像代码。
image = [thumbCache getThumbFromCache:record.sourceUrl]
if (image == nil)
{
DBVideoThumb *thumbDB = [[DBManager getInstance] getDBVideoThumb];
NSData *data = [thumbDB queryVideoSmallThumbnailData:record.sourceUrl];
image = [UIImage imageWithData:data];
if (image != nil)
[thumbCache addThumbToCache:record.sourceUrl image:image];
}
【问题讨论】:
-
看看这对你有没有帮助:stavash.wordpress.com/2012/12/14/…
-
请复制和粘贴代码 - 快照没有太大帮助。
-
@Stavash 感谢您的链接。但我的问题是查询数据库阻塞了我的线程。
标签: iphone ios ipad uitableview