Androidコードラボに参加した

4/17に行われたコードラボに参加した。

当日は以下のドキュメントをベースに進めました
http://docs.google.com/View?id=dgvgxqkk_73cmrjfjd8

チューターの方々です。いろんなお話を聞かせていただきありがとうございました。

  • @t_egg さん
    • AsciiのAndroidプログラミング本を書いた方
  • @adamrocker さん
    • 「Simeji」を作ってる方
  • @yanzm さん
    • 「Libraroid」作った方


以下はコードラボ前半でお話のあった注意点・Tipsなど

注意点

  • Windowsの場合USBのドライバを落とす必要がある?
  • javaのパッケージ名がアンドロイドマーケットのIDになる
  • Min SDK VersionはAPI Levelを入力する
  • アプリケーションから出力するログは簡単に見られてしまうので、パスワードなどは注意すべし
    • リリース時は切っておくのが吉

Tips

  • プロジェクトを作る際、テスト用のプロジェクトを自動で作成する
    • 通常のJUnitのテストとは違い、エミュレーターへ別アプリとしてデプロイされるような感じ
    • 新規プロジェクトを作成するさい「次へ」を押して、「Create a Test Project」をチェックすることで、テスト用プロジェクトの作成が可能
  • AVD
  • Max VM applicaton heap size
    • けっこう触るらしい
    • 1つのアプリで16m(多くて24m)くらいしか使えない
  • Androidパースペクティブがある
    • まだ使い方がわからないけど、SDカードの中身をみたりログを見たり
  • サンプルを作れる
    • 「Create project from exsiting sample」
    • APIの動作を確認したりするのに便利。ソースも参考になる!
  • コンソールで「adb shell」と打つと、コマンドをたたける
    • 未確認
  • SimpleCursorAdapterを使う場合は、フィールドは「_id」にする
    • このあたりはお約束?
  • Activetyの操作などをおこなうため、コンストラクタでContextをもらうと良い
  • layoutファイルを更新すると、R.jaraに反映される
    • Javaからレイアウトを触る場合の定数はココ
  • スタイルの参照
    • リソースは@、テーマは?で参照
  • UIは一つのスレッドで動いている
    • 定期的な処理はThreadを作り、Handler経由で呼び出す?

用語

  • Activity
    • 画面の単位
    • フツーは必ず使う
    • 画面から消えると動かなくなる
    • そーゆー場合はServiceを使う
    • ライフサイクルの知識は重要!
  • Service
    • 裏で動くプログラム
    • 画面の状態に依存しない
  • Broadcast Receiver
    • 何かのイベントを受け取り終了する
    • メソッドは1つだけ
    • 単純なもの
    • ステートレスなもの
  • Content Provider
    • アドレス帳の内容を公開する場合など?
    • 自分の持っている情報を他のアプリケーションに提供する

Activityのライフサイクル

普段はケータイ向けのWebアプリを作っているので、なかなか理解できなかったところ。質問したり実際にプログラムをして感覚的につかむ?
#まだ理解が不十分です

詳しくはこのあたりを参照

アクティビティのライフサイクル
http://developer.android.com/intl/ja/guide/topics/fundamentals.html#actlife

起動時

onCreate->onStart->onResume

起動時はこの順番でメソッドが呼ばれる。
後述するonPause/onStopから復帰する場合はそれぞれ対応するメソッドが呼ばれる。


ここまではすんなり理解できた。次からがAndroidアプリ特有の話。
チューターの方が作成されたサンプルや、自分でコードを書いて感覚をつかむ必要がありそう。


終了時

onPause->onStop

アプリが裏に回るとき(他のアプリが前に出る)などはこの順番でメソッドが呼ばれる。

  • onPause
    • 他のActivityが呼ばれるタイミング
    • 透過色のActivityが表示された場合など、Activityの動作が続いている場合はonPauseが呼ばれる
    • 終了時に呼び出されることが保障される
      • なので、終了時に必須の処理はココに書くと良い
  • onStop
    • 他のActivityが表示された場合など、描画が無くなったタイミング
    • 終了時に呼び出されることが保障されない


ここまで当日のメモをまとめていたけど、理解不足を改めて痛感。
デ部に参加するため、理解を深めるため、引き続きアプリの作成を進める。