知り合いからヘルプコールが来た。
F2051にアプリのダウンのURLを記述して、メールで送り、
メーラーからURLをクリックしてアプリダウンサイトに飛ばす。
この時メーラー裏で常駐しているもよう。
ダウンサイトからアプリをダウンして、そのままアプリを起動すると、
NullPointerExceptionで落ちるらしい。
もちろん、アプリメニューから起動した時(メーラーは起動していない)は
正常に動作する。
???
な感じ。
別に直さなくてもと思ったが、意外とよく使う方法だし、
他のアプリは動いているので原因を探って見た。
AppTraceをonにしてどこでアプリが落ちているか調べると、
どうもCanvasがnewできていないらしい・・・!
アプリ本体がメモリ不足のために起動に失敗しているらしい。
いろいろ試行錯誤したがすべてNGであった。
どうもアプリのjarが解凍されたあとメモリが足らなくなっていると判断。
ここで言うメモリとはアプリ起動後に使用されるヒープとは別のメモリ領域。
対策を考えてみた。
今回のアプリは変数、メソッドをstatic指定してあったがこれをとってみた。
staticをとると変数、メソッドが動的に生成されるので
アプリ起動時のメモリ負荷が軽減されるであろうと思ってのこと。
無事起動した。
こういうことってあるんだな~
とつくづく携帯の機種対応はやっかいだなと思った。
結局Javaと言ってもハードウェアの内部仕様が統一されていないので
今後もこういうことが起こるであろう。
アプリプログラマの苦悩はつづく・・・。
せめてメモリの容量は全機種統一してほしいな~。
Felicaとかつける前に。
ちなみに変数、メソッドになぜstatic指定していたかと言うと、
staticにしておくとアプリ起動した時に指定した変数、
メソッドのメモリは確実に確保されるので、
アプリ起動中にヒープが足らないと言うことが減少する。
ドコモの開発資料にもそうしろと書いてある。
今回はこれが裏目に出たケース。