2016-03-16 10 views
3

Есть две ситуации, когда я загружаю изображения, во-первых, прямо из Интернета, а во-вторых загружаю изображения, загружаемые на устройство. И всякий раз, когда я загружаю, отображается 8 ~ 9 из 10 изображений, а 1-2 отсутствует. Я вижу, что декодирование вернуло false и google'd изо всех сил, но я не мог придумать.Android Picasso Изображение не загружается

  1. WAIT_FOR_CONCURRENT_GC заблокирован 22ms
  2. WAIT_FOR_CONCURRENT_GC заблокирован 20ms
  3. GC_FOR_ALLOC освобожденного 718K, 31% бесплатно 9948K/14256K, приостановлена ​​49 мс, общая 51ms
  4. Д/Skia: --- decoder-> декодированием возвращаемые falseGC_CONCURRENT освободил 1370K, 30% бесплатно 10081K/14256K, приостановлена ​​+ 3 мс 2 мсек, всего 33ms
  5. GC_FOR_ALLOC освободил 916K, 30% бесплатно 10029K/14256K, остановился 66ms, общая 67ms

Вот код я использую, чтобы загрузить через Пикассо:

 Picasso.with(activity) 
      .load(path) 
      .placeholder(R.drawable.thumbnail_placeholder) 
      .resize(width,height) 
      .into(imageView); 

Любые идеи, как решить эту проблему? Я вызываю fit()/resize() каждый раз, когда получаю изображения, загружаемые на экран. Помогите оценить, спасибо заранее!

FYI, я тестирую на обеих машинах, эмуляторе и реальном устройстве Samsung Galaxy Tab 3 и без проблем работает на эмуляторе, но проблемы возникают на реальном устройстве.

UPDATE:

Это причиняло по цвету пространства изображения, где образы, которые не обнаруживались были те, которые были в YMCK цветовом пространстве.

+1

Я подозреваю, что проблема с памятью, можете ли вы попробовать ее с меньшими изображениями? –

+0

Возможно, в вашей стране был заблокирован URL-адрес изображения. – kokabi

ответ

19

Вы можете включить журналы Пикассо, используя Picasso.with(Context).setLoggingEnabled(true). Вероятно, вы увидите сообщение об ошибке.

Также стоит записать URL-адрес, который вы используете, и попробовать на нем браузер, на всякий случай.

+0

Интересно, я обязательно попробую. Спасибо за ваше время! – xosuma

1

Взгляни Picasso: out of memory

Убедитесь, что вы используете фиксированный размер в вашем ImageView, обратитесь к дополнительной информации по @Samuil Yanovski answer

Надеется, что это помогает !!

+0

Спасибо за информацию, def. стоит того! – xosuma

4

В Picasso вы shoud pass url в .load() метод для загрузки изображения из Интернета и объекта File типа для загрузки изображения с устройства хранения.

Так, если изображение хранится на устройстве загрузки это следующим образом:

 Picasso.with(activity) 
       .load(new File(path)) 
       .placeholder(R.drawable.thumbnail_placeholder) 
       .resize(width,height) 
       .into(imageView); 

И использовать этот код для загрузки изображения из Интернета:

 Picasso.with(activity) 
       .load(path) 
       .placeholder(R.drawable.thumbnail_placeholder) 
       .resize(width,height) 
       .into(imageView); 
+0

Это сообщение помогло мне загрузить изображение из хранилища. благодаря! – Sam

0

Если ничего не работает, это из-за некоторая проблема с серверами, на которых размещаются изображения, их url напрямую не приводит вас к изображению, но в backend что-то еще работает, он может открываться в хромированном или другом браузере, но не обязательно в picasso он будет загружаться, поэтому вы можете попробовать этот код:

final OkHttpClient client = new OkHttpClient.Builder() 
     .protocols(Collections.singletonList(Protocol.HTTP_1_1)) 
     .build(); 

final Picasso picasso = new Picasso.Builder(this) 
     .downloader(new OkHttp3Downloader(client)) 
     .build(); 

Picasso.setSingletonInstance(picasso); 

, где экземпляр OkHttp3Downloader предоставляется этой библиотекой. https://github.com/JakeWharton/picasso2-okhttp3-downloader

+0

Спасибо за помощь @stkent https://github.com/stkent –

Смежные вопросы