2016-05-02 30 views
1

私は6年前からAndroidアプリを開発してきましたが、単純な「自宅」のイメージキャッシングライブラリをそのまま使っています。私は最近ピカソに依存するコンポーネントを使用し始めました。私は古いソリューションを何年も前に書いておくのではなく、一般的なライブラリに切り替える時が来るかもしれないと決めました。ピカソでローカル画像の読み込みが遅い?

私の画像の大半は、慎重な寸法(片面100-200 px)のドロウアブル(drawable)フォルダに保存されたローカルのものです。

しかし、ピカソの画像を自分のレイアウトのImageViewに読み込むと、パフォーマンスが大幅に低下することがあります。レンダリングされているレイアウトとビットマップが見えるようになる(イメージがキャッシュされるとこのブリップが消える)の間に目に見える "ブリップ"があります。基本的にBitmapFactory.decodeResourceのHGライブラリを使用して、SoftReferences(これはoldです)の疎な配列をコーディングして、同じビューの読み込みがシームレスで瞬時に表示されます。

明らかに、ピカソのイメージと非同期読み込みのロード方法には大きな違いがありますが、これは本当に期待される動作ですか?これは、PicasaがUIにローカルのドロアブルを読み込むのに適していないように思えます。これはかなり驚くべきことです。

Picasso.with(getActivity()) 
    .load(getPixId) 
    .into(imageView); 

パフォーマンスを向上させる方法はありますか?何が見落とされているかもしれませんか?

答えて

3

あなたがイメージの多くを読み込む場合は、より優れたメモリ性能のためにサイズを変更使用しようとする負荷速度

Picasso.with(getActivity()).load(getPixId).noFade().into(imageView);

を改善するために、フェードアニメーションを無効にすることができます

Picasso.with(getActivity()).load(getPixId).resize('widthImageView', 'heightImageView').noFade().into(imageView);

あなたがリストビューを使用する場合は、ロードイメージがのパフォーマンス改善onScroll停止することができます場合は、他のソリューションでは

Picasso.with(getActivity()).load(getPixId).resize('widthImageView', 'heightImageView').noFade().tag('a group tag').into(imageView);

@Override public void onScrollStateChanged(AbsListView view, int scrollState) { final Picasso picasso = Picasso.with(context); if (scrollState == SCROLL_STATE_IDLE || scrollState == SCROLL_STATE_TOUCH_SCROLL) { picasso.resumeTag(context); } else { picasso.pauseTag(context); } }

あなたがこの記事を見ることができますPicasso Github

をこれらのソリューションのどれもあなたのためのものではなく、別のライブラリを試してみてください。ここでは、最も有名な画像ライブラリを賛否両論で見つけることができます。Stackoverflow Answer

+0

ありがとうございます。残念ながら、これは問題を解決するものではありません。 –

+0

よろしくお願いします。あなたは1つのイメージだけを読み込むためにテストしましたか?あなたはこの遅れを見ますか? –

+0

1つの画像(6〜7枚の画像)でテストしたことはありませんが、とにかく1つしか持っていないと便利な場所はありません。また、ListViewを使用せず、プレーンなLinearLayoutに置かれた画像だけです。残念ながら、サイズ変更は役に立たなかった。グライドもやってみましたが、同じ問題があるので、これは単純に非同期読み込みのアプローチの結果だと思っています。 –

関連する問題