图像视图不使用线程显示图像

时间:2017-08-06 05:02:26

标签: java android multithreading bitmap

我正在使用此代码显示图像,因为我在没有线程的情况下运行它正常工作但使用线程我只是获取图像视图而没有任何图片。对我来说重要的是我的程序的这一部分使用线程,因为它非常慢:( 这是我的代码:

        @Override
        public View getView(final int position,  View convertView, ViewGroup parent) {
            Log.e("sara" , "this part takes time");


            LayoutInflater inflater = getLayoutInflater();

            convertView = getLayoutInflater().inflate(R.layout.gallery_gridsq, parent, false);
            iv = (ImageView) convertView.findViewById(R.id.icon);
          final File file = new File(Uri.parse(getItem(position).toString()).getPath());
            //File file = new File("/text.jpg");

            Runnable runnable = new Runnable() {
                @Override
                public void run() {

                    Bitmap bmp = null;
                    BitmapFactory.Options options = new BitmapFactory.Options();
            options.inJustDecodeBounds = true;
            try {
                BitmapFactory.decodeStream(new FileInputStream(file), null, options);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }

            options.inJustDecodeBounds = false;
            options.inSampleSize = 2;
            try {
                bmp = BitmapFactory.decodeStream(new FileInputStream(file), null, options);
            } catch (FileNotFoundException e) {
                e.printStackTrace();
            }

        iv.setImageBitmap(bmp);

                }
            };
            new Thread(runnable).start();
            return convertView;
        }
    }

1 个答案:

答案 0 :(得分:1)

使用AsyncTask

Doc:https://developer.android.com/reference/android/os/AsyncTask.html

  

AsyncTask可以正确,轻松地使用UI线程。这个班   允许您执行后台操作并在上面发布结果   UI线程,无需操纵线程和/或处理程序。

doInBackground()中执行繁重的操作,并将图像设置为onPostExecute()中的imageView。