java使用线程在Android Studio中一次加载一个多位图
我目前正在做一个项目,从相机上拍摄照片,并将光路保存在数据库中,这工作正常,实际上我正在正确处理内存,在加载所有图像时生成缩略图
我想要的是,我正试图用线程在版面中逐个加载图像,因为例如,如果我有50个,在正常加载时,它会显示版面,直到所有50个都加载完毕,同时它不会显示任何内容
我已经尝试实现这个线程来加载一个线程,然后再加载另一个线程,但它是一样的,直到它加载所有线程,它显示所有线程,我的代码如下:
String query = "Select id_reg_mem, information from Memory_REG where type = 'PHOTO' and id_memory =" + id_memory;
final Cursor resultado = memoryDB.rawQuery(query, null);
if(resultado.moveToFirst())
noPhotos = resultado.getCount();
for(int i=0; i<noPhotos; i++)
{
new Thread()
{
public void run()
{
getActivity().runOnUiThread(new Runnable() {
@Override
public void run() {
updateNewPhoto(resultado.getString(1)); // I send the path from the DB to a method I made to add a tablerow with the image (inside an imageview)
}
});
}
}.start();
if(i + 1 == noPhotos)
break;
resultado.moveToNext();
}
这里是这个方法,我将单个图像加载到TableRow中的ImageView。这个方法实际上是从DB加载所有图像
protected void updateNewPhoto(String path)
{
ImageView iv;
if(rows == null) {
rows = new ArrayList<TableRow>();
rows.add(new TableRow(TL.getContext()));
iv = new ImageView(TL.getContext());
iv.setLayoutParams(new TableRow.LayoutParams(250,250));
iv.setTag(DB_Utils.maxIDRegMem(memoryDB) - 1);
iv.setImageBitmap(getBitmapThumbnail(path));
rows.get(0).addView(iv);
TL.addView(rows.get(0));
count = 2;
}
else
{
iv = new ImageView(TL.getContext());
iv.setLayoutParams(new TableRow.LayoutParams(250,250));
iv.setTag(DB_Utils.maxIDRegMem(memoryDB) - 1);
iv.setImageBitmap(getBitmapThumbnail(path));
if(count == 2)
{
rows.get(rows.size() - 1).addView(iv);
count = 1;
}
else
{
rows.add(new TableRow(TL.getContext()));
rows.get(rows.size() - 1).addView(iv);
TL.addView(rows.get(rows.size() - 1));
count = 2;
}
}
不幸的是,所有的图像直到全部加载后才显示(大约需要3秒钟)。我在思考图像的无限性,这就是为什么我想要一种方法,让图像一个一个地加载,而不是全部一起加载
你有什么想法吗?我感谢你的帮助。 谢谢
共 (0) 个答案