Сообщение об исключении говорит об этом довольно ясно. Сообщение .get() не является асинхронным, поэтому будет выполнять работу (сеть, читать файл, ... что угодно) в основном потоке, который следует избегать, когда это возможно.
Ваш код для установки изображения на изображениеПросмотр кажется правильным для меня.
Я думаю, что также можно сделать то же самое с mainLayout (Picasso затем автоматически установит обратимое/растровое изображение на задний план). Если я ошибаюсь, посмотрите на Target.class, который поставляется с Picasso. Вы можете загрузить изображение в цель, которая должна обеспечивать обработчики успеха и ошибки. Внутри обработчика успеха вы получите растровое изображение после его загрузки и можете установить его на свою базу.
Есть несколько решений, которые могут работать в вашем случае.
[EDIT]
При использовании метода Get(), предоставленный Пикассо загрузка будет происходить в потоке вы сейчас работаете, о котором ясно сказано в источниках: https://github.com/square/picasso/blob/master/picasso/src/main/java/com/squareup/picasso/RequestCreator.java
/** Синхронно выполнять этот запрос. Не следует вызывать из основного потока. */
общественного Bitmap прибудете() бросает IOException {[...]}
В вашем случае я бы использовать Target интерфейс, который обеспечивает функции обратного вызова, когда изображение загружается.
Picasso.with(getActivity()).load(R.drawable.background2).into(new Target(){
@Override
public void onBitmapLoaded(Bitmap bitmap, LoadedFrom from) {
mainLayout.setBackground(new BitmapDrawable(context.getResources(), bitmap));
}
@Override
public void onBitmapFailed(final Drawable errorDrawable) {
Log.d("TAG", "FAILED");
}
@Override
public void onPrepareLoad(final Drawable placeHolderDrawable) {
Log.d("TAG", "Prepare Load");
}
});
Как вы используете внутренний ресурс здесь, почему бы вам просто не сделать следующее?
mainLayout.setBackgroundResource(R.drawable.background2);
Надеюсь, это поможет.
С уважением
Так вы говорите, я должен сделать загрузку их в AsyncTask? –
Нет, я бы не рекомендовал этого, он просто добавляет сложности, когда это не нужно. Я отредактирую свой ответ и даю несколько рабочих примеров. –
Хорошо, это здорово, имеет больше смысла. Что касается mainLayout.setBackgroundResource(), это хороший способ сделать это с точки зрения потребления памяти? –