我使用了多列 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];
}