从主线程中的URL setImageBitmap

时间:2019-07-11 11:03:44

标签: android

任务: 将URL中的setImageBitmap放入recyclerview项中,并使用PDFBox lib获取包含所有recyclerview项(包括这些项中的图像)的PDF文件。

问题: 将url图像转换为位图不需要在主线程上工作,这使得创建的pdf文件没有将图像设置为其位置(图像位置为空白)。

允许在主线程上工作会使应用程序崩溃或太慢。

final BitmapFactory.Options options = new BitmapFactory.Options();

        // down sizing image as it throws OutOfMemory Exception for larger
        // images
        options.inSampleSize = 10;

        Bitmap bitmap = null;
        URL url = null;
        try {

            StrictMode.ThreadPolicy policy = new StrictMode.ThreadPolicy.Builder().permitAll().build();
            StrictMode.setThreadPolicy(policy);

            url = new URL(imag_path);
        } catch (MalformedURLException e) {
            e.printStackTrace();
        }
        try {
            bitmap = BitmapFactory.decodeStream(url.openConnection().getInputStream());
        } catch (IOException e) {
            e.printStackTrace();
        }

        return bitmap;

产生的PDF照片如下:

enter image description here

1 个答案:

答案 0 :(得分:0)

使用滑行将图像下载到主线程中

                         Glide.with(getApplicationContext())
                        .asBitmap()
                        .load("URL")
                        .listener(new RequestListener<Bitmap>() {
                            @Override
                            public boolean onLoadFailed(@Nullable GlideException e, Object model, Target<Bitmap> target, boolean isFirstResource) {

                                return false;
                            }

                            @Override
                            public boolean onResourceReady(Bitmap resource, Object model, Target<Bitmap> target, DataSource dataSource, boolean isFirstResource) {
                                return false;

                             //YOU GET THE DOWNLOADED BITMAP HERE
                            }
                        });