-1

在我的应用程序中,我从移动数据库导入图像并将其显示到我的应用程序的 gridview 中。我在我的活动的 onCreate() 中编写了以下代码。

    String[] projection = { MediaStore.Images.Media._ID,};

    Cursor mImageCursor = getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, projection, null, null, null ); 

    if (mImageCursor != null)
    {

        mImageCursor.moveToFirst();

        for (int i = 0; i < mImageCursor.getCount(); i++)
        {
            Images im=new Images();
            eachImageView=new ImageView(this);
            int imageId = mImageCursor.getInt((mImageCursor.getColumnIndex( MediaStore.Images.Media._ID)));
            selectedImageUri = Uri.withAppendedPath(
                    MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "" + imageId);

            ContentResolver cr = getContentResolver();

            Bitmap bm = getScaledImage(selectedImageUri, 2, cr);
            im.setBitmap(bm);
            eachImageView.setImageBitmap(bm);
            im.setImageView(eachImageView);

            arrayOfImages.add(im);

            mImageCursor.moveToNext();
        }
    }

但问题是当图像数量更多时需要太多时间。我听说过异步任务可以减少这个时间,但我很困惑如何在我的代码中实现它。请给我解决方案。提前致谢..

4

1 回答 1

0

如果您想在不冻结 UI 线程的情况下执行操作,则使用 AsyncTask。在您的情况下,您可以使用一个。但是,您似乎在开始活动时正在加载图像,因此您可以使用加载器。

文档和 DemoApi 中提供了非常好的示例。

AsyncTask加载器

于 2013-02-13T14:29:00.620 回答