**Android Programming** ====== ベストプラクティス ====== * Spring for Android を利用することで REST クライアントは容易に実装できる * MVC or MVVM フレームワークは不要 * Android の Activity(各画面) はライフサイクルが Android SDK できっちり制御されている * View は res/layout で分離されている * よって、MVC や MVVM フレームワークは別途用意しなくても良い * もっと言うと用意しちゃいけない * (まだベストか分かんない)双方向データバインディング * 「MVC or MVVM フレームワークは不要」と書いたが、双方向データバインディングは使用したい * そこで Android Binding というものがあるが、まだこなれていないかな? ====== 用語 ====== ===== Activity ===== * Androidアプリケーションの画面と考えて良い * Activityに画面構成要素を並べる {{:programming:activity_lifecycle.png?400|}} ===== Intent ===== * 外部Activity(アプリケーション)との連携で使用するイベント(NSNotificationにも似ている)のようなもの。 * 明示的Intentと暗黙的Intentの2種類がある。 * 明示的Intent * Activityを指定して起動 * 暗黙的Intent * Activityを指定せずに起動する * Activityを推測できるようIntentFilterを指定できる * 該当するActivityが複数ある場合はダイアログでユーザに選択させる(やったことあるでしょ?) ====== 永続化 ====== * File * Assets経由でファイルディスクリプタを生成してJavaのBufferedReader,BufferedWriterを使うのかな? * DB * SQLiteが内蔵されている * REST * Framework * Spring for Android * HTTPClient * org.apache.http.client.HttpClient * JSON * JSONObject or JSONArray ====== デバイスの使用 ====== * Webページの表示(WebView) * 音声認識によるコマンド入力(RecognizerIntent) * 画像認証による認証(SurfaceView) * 録画データのサーバへの保存(SurfaceView)