Google のウェブログ公開ツールを使って、テキスト、写真、動画を共有できます。
Android で、Bitmap をごにゅごにゅしていると、 java.lang.RuntimeException:"Canvas: trying to use a recycled bitmap" ってのに、出くわすことがあります。Web でいろいろ調べてみると、怪しげな解説がかなりあるので、本当のところ何が正しい理解なのかをまとめておきたいと思います。 そもそも、Bitmap#recycle() をやらないといけないのは、主に Android のこの辺の実装がよろしくなくて、recycle() してやらないと、メモリリークになるよ、といわれていることが、大きな要因です。勢い、メモリリーク怖さになんでも recycle() しようとして、件の例外に遭遇することとなる訳です。しかし、どういったケースでそれが必要になるのか、筋の通った記事をあまり見かけません。 まず、誰が ”trying
開発してるとActivityにBitmapを持たせたいことってよくある でもメンバで持ってると自前で解放しなくてはならない。 Bitmapのメモリ管理はネイティブ側で管理されてるので明示的に開放する必要がある。 マジで?って思ったので実験してみた 実験内容 以下のパターンでBitmapActivityがどのように変化するかを確認 実験1 ImageViewを持たないActivity 実験2 レイアウトでImageViewを持ったActivity 実験3 レイアウトでImageViewを持ち、メンバ変数でもImageViewをもつActivity 実験4 ImageViewを持ち、メンバ変数でBitmapをもつActivity 実験5 Bitmap#recycleの正しい使い方 使うアプリ こんな感じのアプリ 実験2〜4 MainActivity>BitmapActivity>(戻るキーで)
Androidの実装をOSのバージョンが2.xの頃からしておらず最近のコーディングの仕方をキャッチアップしているので、メモを残して行きます。 画像キャッシュ メモリキャッシュ ディスクキャッシュ 大きなBitmapをメモリに読み込むときに気をつけること inPreferredConfigで画像の質を下げメモリ使用量を減らす inPurgeableでGC時に解放されるようにする inJustDecodeBoundsとinSampleSizeでメモリ読み込み時にメタ情報のみを先に読み込み、1/nサイズにしたものをロードする Bitmapオブジェクトのリサイクル 画像キャッシュ メモリキャッシュ Twitterのタイムラインを実装するような時に、APIレベル12以前は下記のように画像キャッシュをしていたと思います。WeakHashMapのがいいかもですが。 public class ImageC
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く