Реализация кэширования изображений Lru с помощью DiskLruCache

Я пытаюсь реализовать кеш lru на основе диска с библиотекой Джейка Уортона DiskLruCache. ссылка на библиотеку. Я использую фрагмент кода из здесь< /а>.

Методы, с которыми у меня возникают проблемы, это

private boolean writeBitmapToFile(Bitmap bitmap, DiskLruCache.Editor editor)
        throws IOException, FileNotFoundException {
    OutputStream out = null;
    try {
        out = new BufferedOutputStream(editor.newOutputStream(0), Utils.IO_BUFFER_SIZE);
        return bitmap.compress(mCompressFormat, mCompressQuality, out);
    } finally {
        if (out != null) {
            out.close();
        }
    }
}

где editor.newOutputStream(0) не существует, а этот

public Bitmap getBitmap(String key) {

    Bitmap bitmap = null;
    DiskLruCache.Snapshot snapshot = null;
    try {

        snapshot = mDiskCache.get(key);
        if (snapshot == null) {
            return null;
        }
        final InputStream in = snapshot.getInputStream(0);
        if (in != null) {
            final BufferedInputStream buffIn =
                    new BufferedInputStream(in, Utils.IO_BUFFER_SIZE);
            bitmap = BitmapFactory.decodeStream(buffIn);
        }
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        if (snapshot != null) {
            snapshot.close();
        }
    }

        Log.d("cache_test_DISK_", bitmap == null ? "" : "image read from disk " + key);

    return bitmap;

}

где snapshot.getInputStream(0) также не существует.

Что я делаю неправильно? Я поставил банку с библиотекой и все хорошо, эти методы удалены из библиотеки DiskLruCache? Есть ли другой способ сделать это сейчас? Я не могу найти никаких примеров или руководств.

Версия библиотеки — последняя disklrucache-2.0.2.


person ddog    schedule 10.03.2015    source источник
comment
У вас есть права на запись в хранилище?   -  person dev.bmax    schedule 10.03.2015
comment
Вы имеете в виду, что методы не могут быть разрешены?   -  person dev.bmax    schedule 10.03.2015
comment
да, но какое это имеет отношение к отсутствующим методам?   -  person ddog    schedule 10.03.2015
comment
Я сначала не понял вопроса.   -  person dev.bmax    schedule 10.03.2015
comment
Как вы узнали, что методов не существует: из подсветки редактора или во время компиляции?   -  person dev.bmax    schedule 10.03.2015
comment
редактор их выделил и не компилируется   -  person ddog    schedule 10.03.2015
comment
Выделена ли строка import com.jakewharton.disklrucache.DiskLruCache вверху?   -  person dev.bmax    schedule 10.03.2015
comment
omg tnx man, теперь я вижу, что он импортировал этот com.squareup.okhttp.internal.DiskLruCache вместо этого com.jakewharton.disklrucache.DiskLruCache :)   -  person ddog    schedule 10.03.2015


Ответы (1)


Убедитесь, что вы импортировали правильный класс:

import com.jakewharton.disklrucache.DiskLruCache

person dev.bmax    schedule 10.03.2015