Androidのアプリ内領域のリソース制限を調べる
Androidってアプリ内でどのくらいデータを保存できるのだろう?
ということで調べてみました。
検証のために以下のコードを書いて、contextにどんどん値を書き込むリソース制限チェックアプリを作成しました。
このアプリを実行し、しばらくたつとエクセプションをキャッチしました。以下はその時のリソース制限チェックアプリの画面です。

書きこめたサイズは233,214,000Byte(約233MByte)。
エクセプションは「No space left on device」
あとは、これが何のサイズか調べればいいか。
ん?
なんかAndroid端末の様子がおかしい。
まず、以下のお知らせが来てました。

そして、他のアプリ(メーラーなど)を開いてみたところ以下のメッセージが。

うーん、なんどやってもこのエラーが出る。他のアプリにも影響しているのか??
とりあえず今回作ったアプリケーション情報を見てみました。

222MB使用している。だいたい書きこんだサイズと一致してますね。書きこみは成功しているようです。
次に、端末の情報も見てみました。

あと40KB・・・。やばい。
急いで今回作ったアプリをアンインストール。
そして、アプリケーションを消したあとの端末の情報を見ると

223MBに復活!。メールも見れるようになりました。
ちなみに今回使用した端末であるHT03Aのスペックも調べてみました。以下です。

512MB。これが端末内で使用できるサイズになりそうですね。
ふむふむ。なるほど。これらか予想できることとして、今回作ったアプリで端末のROMを使用できるだけ使用しているように見えます。
アプリ内での使用メモリ制限は今のところはないということですかね。
まとめると、
- アプリ毎に使用できるサイズに、今のところ制限はない
- アプリ内で使用できるサイズは、端末のROMのサイズ
- 書きこめるサイズが少なくなると、空き容量低下の「お知らせ」が来る
- 書きこめなくなるとエクセプションは「No space left on device」
- アプリ内領域を使用しすぎると他のアプリにも影響が出てしまう
どのくらい使えるか知らないまま使うより、どれだけ使えるか、どんな影響があるか知った上で使った方が安心ですよね。
以上になります。

チーム開発して誰かがこんなことしたら即クビだぞ、妙なことするような情報なんか消せよバカ
端末の限界をしってないと
本当に良いものはつくれない。
このまま製品に載せたらバカだが、トライは良いこと。
役に立つ情報を消せよとか。ちょっと意味分かんないし。