メモリを見ると100Mとか200Mとか余っててもバカスカ落ちる端末がいます。
この場合、アプリが100MBとか、そういう責任ではないのです。
androidのアプリにheapと言うのがあるようで
下は24MBで上が70MBですが、
この値を超えると強制終了するようです。
つまり、カンタンに言うと、自分の端末のスペックがいい人は、このheap問題に気づかないと言う事です。
galaxy sは記載されてないですが、結構heapサイズがでかいみたいで、検証の時には問題なかったのにHTCで急に落ちる事が何が問題かわかりませんでした。
以前の端末では16MBくらいだったらしいので、バージョンを1.6くらいからに設定したい人には、その値を目安にする方がいいかもしれません。
マニフェストのapplicationにandroid:largeHeap="true"と書くとheapのサイズが128MBになるみたいですが、android3.1とかからの技のようで、現段階(2012年5月)ではちょっと使えない技になります。※9割以上が2.1~2.3
バグを残さず制作するにはheapが、「24MB」の端末が必要です。
と言う事になります。最新の注意を払っても、出る時には出るout of errorです。
これでも16MBの端末があればエラーが出ますが。。
で、この部分に関しては、「エラーは出るものである。」
と言う結論をつけたいです。out of memory根絶は、よほど潤沢な検証環境がないかぎり厳しいです。
ユーザーの「落ちました。最悪です。」と言うコメントを享受しましょう。
で、出てしまった場合です。ここでは、メモリリークはないものとします。純粋にメモリの使用量が大きなページの場合
androidにユーザーのエラーのレポートが来るので、エラーの発生箇所の特定をしたら、
その部分や周辺にSystem.gc();を仕込みます。
メモリリークしてないのであれば、使ってる最中から、片付けをしていく感じにはなりますが、
これで、ある程度は改善できるかと思います。
または、使っている画像サイズを小さくしたり、bitmapの読み込み設定をしたり。
0 件のコメント:
コメントを投稿