避免在Gridview(Android)中加载图像的时间

时间:2013-02-13 13:44:40

标签: android android-asynctask android-gridview

在我的应用程序中,我从移动数据库导入图像并将其显示到我的应用程序的gridview中。我在我的activitiy的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();
        }
    }

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

1 个答案:

答案 0 :(得分:0)

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

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

AsyncTaskLoader