スポンサーサイト

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

onDraw内でinvalidateを呼び出してしまうカスタムビューを作ってしまって、困ったこと

問題となったのは、こいつ!

android.view.View#invalidate

Viewの再描画をマークするメソッドです。

OverrideしたonDraw内でうっかりこいつを呼び出してしまったところ、ActivityにAllocateされたメモリが解放されなくなってしまう問題が発生。


再現の流れ
Activity Aでたくさんの画像を読み込む(BitmapFactory.decodeResourceとかそういうやつ)
  V
Activity Bに遷移
(上述の困ったViewを使うレイアウトを指定しておく)
  V
”すぐに”Activity Aに遷移

あら不思議、Allocateが前の続きから増えていく。

何回も繰り返すと、OutOfMemoryErrorが起きて再起動されます。
AllocateとかHeapとかの確かめ方:
ADT(Eclipseプラグイン)のDDMSパースペクティブ。
Devicesタブから、メモリ量を確かめたいアプリケーションを選択。
その上にあるボタン(Update Heapとツールチップが出るやつ。緑の液体が入ったコップみたいなやつ)をクリック。
選んだアプリケーションのところにボタンと同じアイコンが出てくるはず。

そしたら、右ペインのHeapタブ。
ここから、Cause GCというボタンをクリックすると、
Heap Size、Allocated、Freeなどが見れるようになる。

テーマ : android
ジャンル : コンピュータ

コメントの投稿

管理者にだけ表示を許可する

プロフィール

森嶋晃介

Author:森嶋晃介
社会人2年目。
独学する勉強のために、いろいろ手を出して、それについて書いていく予定です。
今年こそ、たくさん書くぞ

最新記事
最新コメント
最新トラックバック
月別アーカイブ
カテゴリ
検索フォーム
RSSリンクの表示
リンク
ブロとも申請フォーム

この人とブロともになる

QRコード
QRコード
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。