将毕加索的图像保存到记忆中

时间:2017-01-10 14:47:04

标签: android memory picasso

我需要将我设置到imageview的图像保存到内部存储器中,这样当用户离线时我可以直接从存储器中使用这些图像。 到目前为止,我已尝试使用Target但我在将位图设置为imageview时遇到错误。 有没有办法在不影响性能的情况下做到这一点?

private static Target getTarget(final String url, final ImageView thumbIV){
    Target target = new Target() {
        @Override
        public void onBitmapLoaded(final Bitmap bitmap, Picasso.LoadedFrom loadedFrom) {
            new Thread(new Runnable() {

                @Override
                public void run() {
                    thumbIV.setImageBitmap(bitmap);
                    File file = new File(Environment.getExternalStorageDirectory().getPath() + "/" + url);
                    try {
                        file.createNewFile();
                        FileOutputStream ostream = new FileOutputStream(file);
                        bitmap.compress(Bitmap.CompressFormat.JPEG, 80, ostream);
                        ostream.flush();
                        ostream.close();
                    } catch (IOException e) {
                        Log.e("IOException", e.getLocalizedMessage());
                    }
                }
            }).start();
        }

1 个答案:

答案 0 :(得分:0)

Picasso会自动为您缓存。您可以影响磁盘/内存缓存的大小。例如

    long maxHeapSize = Runtime.getRuntime().maxMemory();

    Picasso picasso = new Picasso.Builder(context)
            .memoryCache(new LruCache((int)maxHeapSize/3))
            .build();