IMEのライフサイクル
Activityと同様に、IMEにもライフサイクルが存在します。IMEのライフサイクルは、以下の図のようになっています。onCreateメソッドにてIMEが生成され、onCreateInputViewメソッドにて、キーボードのViewを生成します。他には、入力候補を表示する際に利用されるonCreateCandidatesViewメソッド、入力方式を変更する際に呼び出されるonCurrentInputMethodSubtypeChangedなどがあります。IMEのライフサイクルも、Activityのライフサイクルと同様に、最終的にはonDestroyで終了されます。
マニフェストへの記述
IMEのライフサイクルが理解できたら、さっそく開発に入って行きましょう。IMEを利用する際には、IMEをServiceとしてAndroidManifest.xmlに記述する必要があります。以下に例を示します。AndroidManifest.xml
applicationタグ以下にserviceタグを導入します。nameはInputIMEとなっていますが、ここは後ほど実装するクラスであるInputMethodServiceを継承したクラス名にしてください。また、任意でIMEの設定を編集するためのactivityも追加します。<application
android:allowBackup="true"
android:icon="@drawable/ic_launcher"
android:label="@string/app_name"
android:theme="@style/AppTheme" >
<!-- インプットメソッドの宣言(必須) -->
<service
android:name="InputIME"
android:label="@string/fast_input_label"
android:permission="android.permission.BIND_INPUT_METHOD" >
<intent-filter>
<action android:name="android.view.InputMethod" />
</intent-filter>
<meta-data
android:name="android.view.im"
android:resource="@xml/method" />
</service>
<!-- IMEの設定のためのアクティビティ(任意) -->
<activity
android:name="ImePreferences"
android:label="@string/action_settings" >
<intent-filter>
<action android:name="android.intent.action.MAIN" />
</intent-filter>
</activity>
</application>