如何在 Android 中加快位图加载速度?

How to make bitmap loading faster in Android?

我有一个代码可以加载图像的缩略图并将其提供给滑动。然后滑行将加载到支架中。但是,当我加载缩略图时,它 returns 是位图。所以,我将位图传递给滑行。但是,初始加载需要将近 30 秒。我的意思是画廊里有很多照片。因此,当图库打开时,它会在 30 秒内完全不显示图像。然后它会显示位图。

另一方面,如果我使用 URI 来提供滑行,它会立即加载。但是,图像正在回收站视图中加载。因此,此时只会加载部分图像。

加载一些图片后。当我们向上滑动并看到其他照片的加载速度时,显然位图加载的图像比 URI 加载的图像快得多。但是,位图需要 30 秒的初始加载时间。

有什么方法可以使这个位图加载更快?

...
while (cursor.moveToNext()) {
                Log.d("FetchImages(): ", " Started");
                Bitmap thumbBitmap = null;

                int _thumpId = cursor.getInt(column_index_data);
                Uri uri1 = ContentUris.withAppendedId(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, _thumpId);

                Size thumbSize = new Size(150, 150);
                try {
                    thumbBitmap = getApplicationContext().getContentResolver().loadThumbnail(uri1, thumbSize, null);
                } catch (IOException e) {e.printStackTrace();}

                ImageModel ImageModel = new ImageModel();
                ImageModel.setBitmap(thumbBitmap);
                arrayList.add(ImageModel);
            }
            Log.d("FetchImages(): ", " Ended");
            runOnUiThread(() -> {
                Adapter Adapter = new Adapter(getApplicationContext(), arrayList, MainActivity.this);
                recyclerView.setAdapter(Adapter);
                cursor.close();
                Log.d("FetchImages(): ", " RecyclerView Adapter attached");
            });
...

Glide .with(context) .load(url).apply(new RequestOptions().override(150, 150)) //for resizing .into(imageView);

不需要创建位图,它需要更多的计算。 Glide 更快更高效。 而且,如果您想使用位图,请使用 AsycTask,这样它就不会阻塞主线程,程序也不会挂起。