注目の投稿

Xperia XZ の主観的レビュー

Xperia XZ に機種変更して一カ月ぐらいたちました。今回、Xperia Z3 Compactから変更しましたが、XperiaはSO-01Bから使い続けている私がXperia XZを使って感じた事をかなり主観が入ったレビューをしたいと思います。 Xperiaを振り返る ...

2016年2月14日日曜日

Androidの画像表示にライブラリ Picasso を使ってみた。

Androidアプリの開発でサーバー上にある画像を表示する処理って結構頻繁に使うのに鬼門だったりします。

一番多いのはOutOfMemory でしょう。大きい画像を2枚読み込んだだけで死んでしまう事すらあります。

そのためにrecycleメソッドを適切に呼び出したりなんやかんや工夫しないといけません。

またキャッシュ機能の実装も考えないといけません。SoftReference にするとすぐキャッシュが切れるので例えばローカルにファイルを作ったりあれこれ対策をします。

ネットワーク通信はバックグラウンドでViewとは別に処理をするのは当たり前ですが、例えば王道のAsyncTaskを使うと128個の上限に当たって

java.util.concurrent.RejectedExecutionException: pool=128/128

なんてエラーで止まってしまう事もあります。

尚且つ高速に処理しないといけないのでThreadを切りまくったり、色々ややこしくなります。

image

個人的に開発しているtwitterクライアントですが、近年サムネイル表示が普通になってきたために画像処理が増えパフォーマンス面で納得できていない部分がありました。

昔ならAndroidならjavaだから幾多のライブラリが使えるって感じでしたが、今はAndroid用のライブラリが沢山用意されています。

画像処理なんて誰もが楽したい部分なので何か良いライブラリがあるのかな?と思っていましたが結構ありました。色々試してみましたが、その中でも個人的に良いと思ったのが

image

Picasso です。

今までの苦労はなんだったのか?と思うぐらいのシンプルさと処理のスムーズさ。当然キャッシュも実装。神だと思いました。

使い方はこんな感じ

ImageView imageView = (ImageView) view.findViewById(R.id.icon);

String imageUrl = “どっかのネットワーク上の画像”

Picasso.with(getContext()).load(imageUrl).into(imageView);

個人的には車輪の再発明は知識を得るためにそこまでアホとも思いませんが、めちゃくちゃ便利な世の中になったものだと思います。良いライブラリをいかに見つけられるか?そして知っているか?で開発速度もアプリの品質も大きく変わってくる世の中なのでしょうね。

おかげでソニタブッター For Small App はソースも非常にシンプルになり尚且つ高速に動作するようになりました。


0 件のコメント:

コメントを投稿