2012年1月12日木曜日

イチからつくるADK「AdkLedの作成その3」オーバライドメソッドの記述

イチからつくるADK「AdkLedの作成その2」の続きです。前回はMainActivityクラスのフィールドとonCreateメソッドを記述しました。次は、MainActivityクラスの親クラスにあたるActivityのライフサイクルにあるメソッドをオーバライドしていきます。



3. オーバライドメソッドの記述

まず記述済みのonCreateメソッドも含めて、オーバライドするメソッドとその役割を示します。
  • onCreateメソッド
    • UsbManager の取得 
    • 独自Intent action でパーミッション依頼用のPendingIntent 作成 
    • 独自Intent action とアクセサリが外されたときのBroadcastReceiver 登録 
    • 画面のセットアップ 
  • onResumeメソッド
    • USBAccessory の一覧を取得して、権限チェック。
    • 権限があればアクセサリとの接続を開く
      • UsbAccessory からファイルデスクリプタを取得しファイルデスクリプタから入出力用の Stream を取得。
      • 入力を受け取るためのスレッドを開始
    • 権限がなければパーミッションを依頼
  • onPauseメソッド
    • アクセサリとの接続を閉じる 
  • onDestroyメソッド
    • onCreateメソッドで登録した BroadcastReceiver の解除 
上記4つのメソッドはコールバックメソッドといって状態遷移に応じてシステムから自動的に呼び出されるメソッドです。どういう状態のときに動作するかは以下のサイトを参考にしてみて下さい。
Techbooster Activityとライフサイクル

3. Activityライフサイクルのメソッドをオーバーライドする
3.1. メニュー「ソース」ー「メソッドのオーバーライド/実装...」を選択します。

この方法を使うと、継承した親クラスであるActivityクラスのメソッドを知らなくても、間違わずに利用する事ができます。


3.2. 「オーバライドまたは実装するメソッドを選択:」からonDestroy(), onPause(), onResume()のチェックボックスをクリックして選択します。
「挿入ポイント:」が「'onCreate(Bundle)'の後」であることを確認してください。
「OK」ボタンを押します。