ターゲット変更

自炊リーダーのマーケットコメントにて、メモリ不足で困ってる報告があった
こちらも色々と工夫はしてるのだけど、Dalvik使ってる以上は限界がある
本体にどれだけメモリが余っていても、アプリが使えるメモリは概ね24MB程
しかし、例えばフルHD画像をそのままメモリに展開しようとすると、それだけで8MBくらい必要
自炊用の画像なんか、ドキュメントスキャナで取り込むだろうけど、適当に300dpiくらいで読み込んでも、フルHDサイズなんて軽く超える
自分の使ってる設定でも、B6判サイズのコミックスで1500前後x2300前後のサイズなので、フルHDの1.5倍は行ってる事になる訳だ
アプリそのもののメモリも必要なので、それだけで一度に2枚も読み込めない

そこで、問題の先送りではあるけれど、largeHeap設定を有効にしてみた
largeHeapは使用できるメモリを増やす設定で、最大で128MBくらいまで対応してるらしい
が、この設定はAndroid3系以降でのみ有効なので、アプリのサポート対象である2.3系では使えないorz
まぁそれでも対応する端末であれば効果はあるハズだ

しかし、この設定を追加するだけで、ちょっとしたトラブルに遭遇した
ターゲットSDKバージョンを10から12に変更しただけなのに、突然NoSuchMethodErrorが発生して強制終了するように
調べてみると、どうやら3系から追加されたメソッドと利用してる抽象親クラスのメソッドが衝突したためのようだ
具体的には、ドラッグ&ドロップで入れ替えれるリストを実装するために、ListViewのかわりにAdsListViewを使っていたのだけど、3系からAdsListViewにsetAdapter()メソッドが追加されたせい
今まではAdsListView#setAdapter()がなかったのでsetAdapter()を呼べばListView#setAdapter()が呼ばれていたが、3系からメソッドが追加されたために呼び先が勝手にAdsListView#setAdapter()にされてしまった、というのが原因

SDKのバージョンアップで抽象親クラスで問題起こすようなバージョンアップはやめてくれ……
検索して、同じトラブルの報告と解決策が出て来たから良かったようなものの、そうでなければ、俺くらいのスキルじゃ原因が分からんまま途方に暮れる所だよ!
ちなみに、解決策は、該当するsetAdapter()の利用個所でクラスをListViewに明示的にキャストしてやるだけ
自分の場合、同じ処理をGridViewからも使ってたりしたので、ListViewとGridViewの振り分けとかも必要になって、色々と面倒だった

とりあえずこれで、3系以上ではメモリ問題は緩和されるハズ
……なんだけど、現在WebView版ビューワーを組み込み中なので、公開は少し先になります
困ってる方には申し訳ないですが、今しばらくお待ち下さい