Форум программистов, компьютерный форум CyberForum.ru
Наши страницы

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Гордей2901
0 / 0 / 0
Регистрация: 16.08.2016
Сообщений: 11
#1

Picasso - Программирование Android

28.08.2016, 15:14. Просмотров 339. Ответов 4
Метки нет (Все метки)

Здравствуйте, уважаемые участники форума!
Снова я со своим Picasso!
Итак, на этот раз у меня вот что. Я должен загрузить из интернета картинку. Вот код picasso:
Java
1
2
3
Picasso.with(context)
                .load("https://maps.googleapis.com/maps/api/staticmap?center=25.3442,17.6113&zoom=16&size=1200x1000&maptype=roadmap&markers=color:blue%7Clabel:A%7C55.5242,37.51285&key=AIzaSyC9h_P0hPC8bYRMi2XtdobHV9WVxrMBCqk")
                .into(googleMap);
Мне надо загружать карту в ImageView (имя googleMap). Так как это делать в основном потоке нельзя, то решил использовать AsyncTask:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
class MyTask extends AsyncTask<Void, Void, Void> {
 
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            TextView textView = (TextView)findViewById(R.id.textView);
            textView.setText("Begin");
 
            Picasso.with(context)
                    .load(finalUrl)
                    .into(googleMap);
 
        }
 
        @Override
        protected Void doInBackground(Void... params) {
            try {
                TimeUnit.SECONDS.sleep(2);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return null;
        }
 
        @Override
        protected void onPostExecute(Void result) {
            super.onPostExecute(result);
            TextView textView = (TextView)findViewById(R.id.textView);
            textView.setText("End");
        }
    }
и в главном потоке вместо самого, собственно, picasso, вызываю начало таска .
Но программа ругается! Вылетает на загрузке picasso. Подозреваю, что это из-за того, что из Async Task к пользовательскому интерфейсу не обратишься. Итак вопрос - что исправить? У меня была мысль на счет виртуального imageview, в который я на время загрузил бы картинку, чтобы потом загрузить в нормальный googleMap, но кажется идея создать неопределенный imageView picasso не нравится.
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
28.08.2016, 15:14
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Picasso (Программирование Android):

Picasso не загружает фото - Программирование Android
Я получаю JSON в котором хранятся ссылки на изображения. Пробую загрузить их через picasso, и они не грузятся. Ошибок не выдает. Но...

Для чего делать Resize при использовании Picasso - Программирование Android
Почему нужно иногда использовать resize() когда загружаешь изображения при помощи Picasso? Почему без этого иногда происходят утечки...

Загрузка картинок Picasso из дискового кэша, когда нет интернета - Программирование Android
Подскажите как можно при помощи Picasso реализовать загрузку картинок в фон активити, когда нет интернета? public class MainActivity...

При загрузке большого количества картинок библиотекой Picasso заканчивается память - Программирование Android
В общем делаю приложение, которое должно выводить посты пользователя. В этих постах есть картинки, все они должны качаться с интернета. Я...

Picasso не загружает фото - Программирование Android
Я получаю JSON в котором хранятся ссылки на изображения. Пробую загрузить их через picasso, и они не грузятся. Ошибок не выдает. Но...

Для чего делать Resize при использовании Picasso - Программирование Android
Почему нужно иногда использовать resize() когда загружаешь изображения при помощи Picasso? Почему без этого иногда происходят утечки...

Загрузка картинок Picasso из дискового кэша, когда нет интернета - Программирование Android
Подскажите как можно при помощи Picasso реализовать загрузку картинок в фон активити, когда нет интернета? public class MainActivity...

При загрузке большого количества картинок библиотекой Picasso заканчивается память - Программирование Android
В общем делаю приложение, которое должно выводить посты пользователя. В этих постах есть картинки, все они должны качаться с интернета. Я...

Picasso не загружает фото - Программирование Android
Я получаю JSON в котором хранятся ссылки на изображения. Пробую загрузить их через picasso, и они не грузятся. Ошибок не выдает. Но...

Для чего делать Resize при использовании Picasso - Программирование Android
Почему нужно иногда использовать resize() когда загружаешь изображения при помощи Picasso? Почему без этого иногда происходят утечки...

Загрузка картинок Picasso из дискового кэша, когда нет интернета - Программирование Android
Подскажите как можно при помощи Picasso реализовать загрузку картинок в фон активити, когда нет интернета? public class MainActivity...

При загрузке большого количества картинок библиотекой Picasso заканчивается память - Программирование Android
В общем делаю приложение, которое должно выводить посты пользователя. В этих постах есть картинки, все они должны качаться с интернета. Я...

Picasso не загружает фото - Программирование Android
Я получаю JSON в котором хранятся ссылки на изображения. Пробую загрузить их через picasso, и они не грузятся. Ошибок не выдает. Но...

Для чего делать Resize при использовании Picasso - Программирование Android
Почему нужно иногда использовать resize() когда загружаешь изображения при помощи Picasso? Почему без этого иногда происходят утечки...

Загрузка картинок Picasso из дискового кэша, когда нет интернета - Программирование Android
Подскажите как можно при помощи Picasso реализовать загрузку картинок в фон активити, когда нет интернета? public class MainActivity...<

Picasso не загружает фото - Программирование Android
Я получаю JSON в котором хранятся ссылки на изображения. Пробую загрузить их через picasso, и они не грузятся. Ошибок не выдает. Но...

Для чего делать Resize при использовании Picasso - Программирование Android
Почему нужно иногда использовать resize() когда загружаешь изображения при помощи Picasso? Почему без этого иногда происходят утечки...

Загрузка картинок Picasso из дискового кэша, когда нет интернета - Программирование Android
Подскажите как можно при помощи Picasso реализовать загрузку картинок в фон активити, когда нет интернета? public class MainActivity...

При загрузке большого количества картинок библиотекой Picasso заканчивается память - Программирование Android
В общем делаю приложение, которое должно выводить посты пользователя. В этих постах есть картинки, все они должны качаться с интернета. Я...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
28.08.2016, 22:00 #2
Гордей2901,
https://maps.googleapis.com/maps/api...obHV9WVxrMBCqk
Сложно отлаживать, там только несколько букв.
Цитата Сообщение от Гордей2901 Посмотреть сообщение
Так как это делать в основном потоке нельзя
Откуда такие сведения?
Цитата Сообщение от Гордей2901 Посмотреть сообщение
то решил использовать AsyncTask
И продолжаете грузить в основном потоке (onPreExecute).
Цитата Сообщение от Гордей2901 Посмотреть сообщение
Подозреваю, что это из-за того, что из Async Task к пользовательскому интерфейсу не обратишься.
Я давно с ним не работал. Можно из любого потока, используя runOnUiThread(new Runnable).
Можно также поработать через Handler, там и главный поток, и фоновый можно запустить. Да и зачем этот AsyncTask?
Цитата Сообщение от Гордей2901 Посмотреть сообщение
У меня была мысль на счет виртуального imageview, в который я на время загрузил бы картинку, чтобы потом загрузить в нормальный googleMap, но кажется идея создать неопределенный imageView picasso не нравится.
Вроде, так можно, но я не пробовал.
У Glide в этом смысле есть метод get вместо into (или downoad, я уж подзабыл), потом там можно скачанные данные отобразить в картинке.
Цитата Сообщение от Гордей2901 Посмотреть сообщение
Итак вопрос - что исправить?
Ну попробуйте вначале не мучаться, а сделать всё в основном потоке. Или попробуйте Thread с runOnUiThread по окончании. Или используйте не метод into или load, а какой-то другой.
0
Гордей2901
0 / 0 / 0
Регистрация: 16.08.2016
Сообщений: 11
28.08.2016, 23:09  [ТС] #3
Спасибо за вариант!
Знаю по собственному опыту. Если грузить в основном, то на части телефонов (видимо с маленькой памятью оперативки) не работает, на других все хорошо.
У picasso вроде нету другого метода, кроме описанного мной...
Попробую грузить в другом методе - в "doinback..."
0
Pablito
2478 / 1962 / 611
Регистрация: 12.05.2014
Сообщений: 6,870
Завершенные тесты: 1
29.08.2016, 10:42 #4
Цитата Сообщение от Гордей2901 Посмотреть сообщение
Picasso.with(context) .load(finalUrl) .into(googleMap);
это должно быть в основном потоке
Цитата Сообщение от Гордей2901 Посмотреть сообщение
Но программа ругается! Вылетает на загрузке picasso
обычно копируют сюда полный лог ошибки, а не пересказ
0
xaat
43 / 16 / 6
Регистрация: 05.12.2015
Сообщений: 65
07.09.2016, 21:02 #5
Лучший ответ Сообщение было отмечено автором темы, экспертом или модератором как ответ
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
Picasso.with(MainActivity.this)
            .load(imageUrl)
            .into(imageView, new com.squareup.picasso.Callback() {
                        @Override
                        public void onSuccess() {
                            // successfully
 
                        }
 
                        @Override
                        public void onError() {
                            // error
                        }
                    });
0
Yandex
Объявления
07.09.2016, 21:02
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru