質問: 100px*100pxの画像を120枚ほど表示させ、それから個々のアクティビティに遷移するようなアプリをつくっているのですが、 エミュレータで起動中アプリを強制終了させられてしまいます。 メモリの使用率を見ると120枚のアクティビティをひらいているときは62/64MBほどになっているので、 メモリ不足が原因かと思われます。 その後画像を30枚ほどにしてやってみると、問題なく起動できました。 しかし、googleplayなどでアプリをみると同時に100枚ほど表示させているアプリ(大きさもそれほど変わらず、グリッドビューをつかっていました)もありました。なにか方法などあれば教えてほしいです。
回答: 普通に考えて「1度に100枚の写真を同時に画面上に表示する」ということは現実的ではないので, スクロールなどの手段で100枚の写真を表示させていると仮定します. この場合,メモリには画面に表示させるべき画像のみを読み込む,という手法が考えられます. この場合ListAdapterでconvertViewを使いまわしているので,convertViewに以前入っていた画像はどこからも参照されなくなり,ガベージコレクタの対象になります. 結果,メモリ上にガベージコレクタされずに残る写真の枚数は,画面上に表示出来るだけの分だけということになり,全体で表示させるべき写真が何枚になろうともメモリ不足にはなりにくいです.