Приложение зависает при вызове Glide для отправки (). Get () - PullRequest
0 голосов
/ 13 января 2019

Я пытаюсь создать собственный значок кластера для моей карты Google. Ранее я пытался расширить AsyncTask и использовать execute (). Get () для извлечения drawable из submit (). Get (), но происходит то же самое, что и при реализации Callable. Я также пытался получить ImageView от загрузки (URI) .into (ImageView), но операция завершена после остальной части кода.

final List<Drawable> profilePhotos = new ArrayList<>(Math.min(4, markerCluster.getSize()));

for (MarkerCluster p : markerCluster.getItems()) {
//                         Draw 4 at most.
    if (profilePhotos.size() == 4) break;
    final Uri bitmapUri = Uri.parse(p.getDescription());
    Drawable drawable = null;GlideBitmapBuilder(bitmapUri));

    try {
        drawable = Executors.newSingleThreadExecutor().submit(new GlideBitmapBuilder(bitmapUri)).get();
        } catch (ExecutionException e) {
            e.printStackTrace();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        drawable.setBounds(0, 0, 200, 200);
        profilePhotos.add(drawable);
}
MultiDrawable multiDrawable = new MultiDrawable(profilePhotos);
multiDrawable.setBounds(0, 0, 200, 200);
clusterImage.setImageDrawable(multiDrawable);
Bitmap icon = clusterIcon.makeIcon(String.valueOf(markerCluster.getSize()));
markerOptions.icon(BitmapDescriptorFactory.fromBitmap(icon));

Где класс GlideBitmapBuilder:

private class GlideBitmapBuilder implements Callable<Drawable> {

        Uri bitmapUri;

        private GlideBitmapBuilder(Uri bitmapUri) {
            this.bitmapUri = bitmapUri;
        }

        @Override
        public Drawable call() throws Exception {
          drawable = GlideApp.with(getApplication()).load(bitmapUri).submit(200, 200).get();
            return drawable;
        }
    }

Ожидаемый результат должен состоять в успешном возвращении переменной drawable, из которой я смогу создавать иконки для своих кластеров, но в итоге она зависает в точке, где я получаю drawable из GlideApp.

У меня нет идей, как мне к этому подойти, поэтому любая помощь будет очень полезной. Есть ли способ, чтобы submit (). Get () не зависал? Или есть лучший способ визуализации значков кластера?

Большое спасибо

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...