メモリリークを未然に防ぐ工夫ってみなさんどのようにしていますか?
Android Studioでの実装と想定してですが、
ご存知のようにAndroidは色々な端末があり、リソースも異なります。更にGCのタイミングも異なりOutOfMemoryも端末により同じタイミングでは来なかったりします。低リソース端末も考えると結構な手当をしないといけないでしょうね。
Google Play にあるギャラリー的なアプリでも、できているものとそうでないもの(もちろん動作はしますが)があります
とても基本的なところでは既に実装済みかと思いますが
- getView()内で時間のかかる処理をしない
- ViewHolderを使ってViewの再利用
http://dev.classmethod.jp/smartphone/gridview-performanceup-1/
- サムネイル化
状況からGridViewで使っている画像と、別Activityでの表示画像を同じものを使っていないでしょうか
GridViewでの画像はサムネイル化して極力小さくして表示する必要があります。
画像をギャラリーアプリと想定すると、画像を初めて取り出すときにサムネイル化して別ディレクトリーに入れる作業が必要かもしれません。
ただ画像を縮小するscalingは負荷が重いので、そのまま画像を取り込んで最適縮小比率を出さずにBitmapFactory.Optionsなど負荷をかけない方法で比率を出してからリサイズしたほうがいいでしょう
4)非同期での画像取り込み
サムネイル化やその後の画像取り込みは非同期でやっておかないと間に合わないでしょう
5)cleanupView
Activityでの遷移ではメモリーをきっちり開放しないと、画面遷移の繰り返しで簡単に落ちます。
cleanupView(View view)というのを作って使う対策方法がよくある手で onDestoryに入れて使います。
http://qiita.com/Hoshi_7/items/f29bfbd719b0bee8de48
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/11/17 04:45
2016/11/17 06:19
2016/11/17 06:48
2016/11/18 08:31