Я загружаю несколько изображений в свое приложение для Android, но мое приложение загружает его очень медленно? - PullRequest
0 голосов
/ 22 января 2019

Я разработал приложение для Android-обоев, которое содержит около 200 обоев (в высоком размере). Я использую rest api и библиотеку для этого, но мое приложение загружается медленно, теперь я хочу, чтобы оно быстрее загружало все обои. Есть ли лучший способ сделать мое приложение быстрее?

Ответы [ 2 ]

0 голосов
/ 22 января 2019

У меня возникла похожая проблема, когда мне нужно было загрузить много картинок.Использовал Glide с кешем, но опять медленно.Кэш скольжения нестабилен, иногда он удаляет изображения и повторно загружает их.Поэтому я скачал все изображения в кеш вручную, затем загрузил их с помощью Glide.Это было намного быстрее.

Вот подсказки.

Загрузите изображения в cacheDir и сохраните их местоположение

public static String downloadFile(Activity activity, String fileURL, String fileName, String type) {
        File folder = new File(activity.getCacheDir() + "/dg/");
        folder.mkdirs();
        String rootDir = folder.getAbsolutePath() + "/" + fileName;
        try {
            File rootFile = new File(rootDir);
            if (rootFile.exists()) {
                System.out.println("VIDEO/IMAGE EXISTS:  " + fileName);
                return rootDir;
            }
            URL url = new URL(fileURL);
            HttpURLConnection ucon = (HttpURLConnection) url.openConnection();
            InputStream is = ucon.getInputStream();
            BufferedInputStream inStream = new BufferedInputStream(is, 1024 * 5);
            FileOutputStream outStream = new FileOutputStream(rootFile);
            byte[] buff = new byte[5 * 1024];

            //Read bytes (and store them) until there is nothing more to read(-1)
            int len;
            while ((len = inStream.read(buff)) != -1) {
                outStream.write(buff, 0, len);
            }

            //clean up
            outStream.flush();
            outStream.close();
            inStream.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
        return rootDir;
    }

Затем загрузите их, используя ( GlideApp ) в заставке может быть?Или с нумерацией страниц.

 GlideApp
                .with(activity)
                .load(new File(activity.getCacheDir() + "/dg/" + name))
                .diskCacheStrategy(DiskCacheStrategy.DATA)
                .into(imageView);
0 голосов
/ 22 января 2019

1) Используйте хорошую библиотеку загрузки изображений, например Пикассо или Glide .Эти библиотеки обеспечивают хорошую функциональность кэширования изображений с минимальными усилиями.

2) Попробуйте загружать изображения меньшего размера для изображений большого пальца в свой список или сетку и загружать изображения с высоким разрешением только тогда, когда пользователь хочет увидеть полное изображение с помощьюнажав на миниатюру.

3) Использовать разбиение на страницы, при первоначальном отображении некоторых изображений, например, 20 изображений, и выбор следующих 20, когда пользователь прокручивает страницу вниз и так далее.

...