複数列のtableViewを使用しました!1つの画面に16個のセルがあり、3000個のデータがあり、データベースからサムネイル画像を取得した場合(オープンソースのFMDBを使用します)、このテーブルをロードするときにスレッドを1つだけ開きますサムネイルをダウンロードしてデータベースに保存します。
セルが表示されると、ダウンロードされていれば、db からサムネイルを取得しました。しかし、データベースからデータを取得するのが非常に遅く、1つのセルで約0.15〜1.3秒であることがわかりました.1つの画面に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];
}