ADF2010 LT Android開発Tipsの中身+修正orz
Android Developers Forum 2010 in Osakaにて発表した内容をまとめました。
一部GCについて発表時の内容に誤りがありました。
お詫びします。信じた人すいません、嘘ついてましたorz
まとめ中で恐縮ですが、とりいそぎ訂正のため、内容を途中まで公開します!
ちなみに誤った部分は
ローカル変数がGCを走らせる要因と言ってしまっています。
正しくはオブジェクト生成時です。
- 短いスコープの
変数オブジェクト
if(DEBUG)によるデバッグ
よく使うデバッグ・プリントのTipsです。
- Logクラスを利用。Android.util。EclipceではLogCatビューに表示される。
AndroidMarketで公開されているアプリケーションをUSBケーブルで繋ぐと
ログが垂れ流しのままだったことがあります。そんな状況を防ぐには
下記のようにすると幸せになれるかも。
>||java|
private static final boolean DEBUG = true;
if(DEBUG)Log.v("TAG","DEBUG NOW.");
|
GCを意識する
AndroidはDalvikバーチャルマシン上で動作します。
メモリ管理はGCに任されており、通常であれば
アプリケーションから意識する必要はありません。
しかしながらモバイル端末というバッテリ・CPUパワーが制限された
状況では、GCが走ると100ms〜数百ms応答が無くなることもあり、
少なからずAppからも意識しないといけないケースがあります。
- Cから入った人は特に注意。
- 短いスコープの
変数オブジェクト
GCへの影響が多い例
>||java|
for(i=0;i<10;i++){
Integer n = new Integer();
n = xxx;
data[i] = n;
}
|
GCへの影響が少ない例
>||java|
Integer n = new Integer();
for(i=0;i<10;i++){
n = xxx;
data[i] = n;
}
|