MaBeee Androidアプリの使用メモリを減らしたァア

先日のAndroidデバイスの確認結果をうけて、メモリが問題で落ちていた端末を買いました。Samsang SC-04E Galaxy S4。これは接続まわりは問題なさそうなので、メモリだけ改善すれば今後もデモ等で使えそう。Amazonで14,000円。弱小スタートアップでも手が届く値段ッス。

アプリをインストールして、「かたむき」->「ふる」->「こえ」->という感じで順番に画面遷移していくと、「とけい」か「でんぱ」あたりでやっぱり落ちました。あれ、でもなんか検証しに行った時は「こえ」くらいで落ちてたけどなあ。もしかしてこれはアタリ端末かァア!!?じゃなくて他のアプリとかの状況関係あるのか、、と思ったけどまあどちらにしても落ちてるから同じか。

画面遷移で落ちていて、どの画面っていうこともない、ということはリソースの解放漏れか?と思ったんだけど、それはかなり確認してあったのと一部端末だけなのでおそらく違う。リソース解放ができているっていうことはGCのタイミングとかに影響受けるのか?とすると画像のロードのタイミングを画面遷移からずらせばいいのか?とかも考えたけど、まず簡単に画像のリサイズをやることにしました。iPhoneから移したデカイ画像をアニメーションで動かしているので、そのあたりから。

グチると、ホーム画面はCanvasで作っているんだけど、画面遷移のときに丸いアイコンを先にリリースしてから遷移したりとか、まあそれなりのことはやったつもりだったんだけど、まだ求められていましたねー。

開発環境のAndroid Studioでメモリの状況が簡単に見れます。

android_memory

検証に行ったときも落ちる端末はこれで確認していて、どれもだいたい100MBくらいなら大丈夫そうだったので、まずそれくらいを目標にしました。

で、一番デカイ画像なにかって背景画像、これを小さい画像のパターンっていうの?リピートにしたらホーム画面のメモリが70MB -> 48MBくらいになって、もういいのでは感。SC-04Eでは落ちなくなりました。

でもそれから「かたむき」とかの画面の数字の後ろの画像とか、その画面でアニメーションさせている、下に「かたむき」とかの文字が入っている画像、これらをだいたい3分の2くらいにしたら、「かたむき」などのコントロールの画面でも20MBくらいずつ減らせました。

最後に確認すると通常の使用なら全然問題なく、画面遷移をしまくっても100MBはギリギリいかないって感じになりました。これでおそらくメモリ問題は大丈夫じゃないか、というか意外にすんなりいって良かった。

Version 1.4になります。

Pocket