他言語プログラマがAndroidのネイティブアプリ(JAVA)開発を勉強する時にとりあえず抑えておきたいこと
とりあえずやっとけオラ!的な内容なメモです。不定期に増えます
githubで管理しようかな?
1,JAVAの言語仕様の理解
1-1 オブジェクト指向の概念
オブジェクトの概念のようなもの(オブジェクトの役割はひとつ!とか)
継承
オーバーライド
オーバーロード
無名クラス
内部クラス
1-2 基本的なコーディング規約的な何か(チームで開発する場合または、Githubにソースコードを上げる場合)
参考:https://source.android.com/source/code-style.html (見つからない場合は「Android coding style」で検索)
1-3 値渡し、参照渡し
プリミティブ型と参照型
コレクションフレームワーク
Listの参照と値渡し(”List#get(location)で渡されるのは参照ではない”とか)
Stringの参照比較
1-4 JAVAで書かれたプログラムの動作
staticは参照されるとき初めて初期化されて、起動時は初期化されていないとか
for(int i=0;i<list.length;i++)で毎回lengthとってんじゃねえぞコラ!とか
if(string.equals(null))で文字列のnullチェックしてんじゃねえぞコラ!とか
if("hoge".equals(null))でnullチェックできるとおもってんのかコラ!とか
落としたくない時はif("hoge".equals(string))にしろって?とか
2,AndroidのActivityのライフサイクルについて理解する
2-1 大事なことはほとんどここに書いてある。
http://developer.android.com/reference/android/app/Activity.html#ActivityLifecycle
つまりは
Activity全体の生成、破棄時に呼ばれるonCreate(),onDestory()
Activityが可視、不可視時に呼ばれるonStart(),onStop()
ActivityがForground(操作可能な状態)とForegroundじゃなくなる時に呼ばれる
onResume(),onPause()
2-2 Activityの状態遷移
(アプリ起動)→Activity生成→Activity可視状態→Activityの操作可能状態
Activityが操作不能→Activityの不可視状態→Activityの破棄→(アプリの終了)
2-3 システムからのKill
アプリのプロセスはメモリの枯渇によって突然システムからKillされることがある
Activityのどの状態でもありえる
優先度は上から順にKillされやすい
- Activityがバックに回った時
- Serviceの実行時
- Activityがバックグラウンドで音楽再生してる時とか
- ServiceのstartForeground()を利用した時
- Foregroundなアプリから見えているUI(Activity)があるとき
- Foregroundなアプリ
2-4 KVMからのGC
Activityはメモリの枯渇状態によって必要に応じてインスタンスをGCで開放する事がある
GCされるタイミングは不定、だいたいがメモリが足りなくなったら。(だいたい実行中で処理が走ってるプロセスがメモリを確保しようとして足りなかったらGCながしてる。どこの何がGCされるかはたぶんDalvickVMさんが知ってる。)
2-5 Activityの多重起動を防ぐとか
だいたいあんざいゆきさんのブログに書いてあった、あざーっす。
http://y-anz-m.blogspot.jp/2011/02/androidlauchmode.html
3,アプリの開発方法とか
Eclipseでやるならとりあえずadt-bundleが一番軽量
adbコマンドは使うからpathとおしとけ
CUIで開発するやつはsdkマネージャや9patchを起動させたいからtoolsフォルダもpath通しとけ
NDKやるならとりあえず解凍が時間かかるから先にやっとけ
Logcatでログみれるぞ
デバッグモードに入ると動作やたらと重いからな
Workspaceは変更したらEclipseの設定が初期化されるからUTF-8の設定とインデントをスペース4つに変えるの忘れんなとか
UIの色変えたいなら変えられるから、目が痛くなるならやっとけとか
言葉は悪い感じに思えると思いますが。適当なだけです。ご勘弁を。