読書会(プログラミングAndroid)第3回議事録

[ 戻る ]


=====================================
 プログラミングAndroidを読む会第3回
=====================================

.. csv-table:: 開催概要

  "日時", "2012/9/29(土) 10:00-17:00"
  "場所", "川崎市教育文化会館 第3会議室"
  "出席者", "高橋(徹)、吉本、高橋(智)、岩室(書記)、門脇、村山、根本、蝦名、桜井、山中、高久、ノザキ、遠藤、小棚木"


6章 Effective Java for Android
==============================

6.3.1 AsyncTaskとUIスレッド
---------------------------

* GUIコンポーネントは必ずシングルスレッド。Swingでも同様の解説があった。
* 固まったと認識するときの時間 → 2秒(p.190)
* ボタンを押したときはキューに貯まるのか? → 貯まるはず
* 長時間かかる処理の扱いは? → 通常は別スレッドに引き渡してUIスレッドは返却する。
* 二重クリックしたときの対策は? → フラグやボタンの無効化で対策する。
* Androidのバージョンが上がったら、UIスレッドでURLConnectionを使うと例外が上がるようになった → AsyncTask必須。
* onPreExecute
** executeの中で呼ばれるのか、execute後一旦UIスレッドのディスパッチャに戻されるのか?
** 前者でないと、onPreExecuteでボタンを無効化するときに間に割り込まれるといった場合に困る。
** ソースを見ればわかるかも?
* onPostExecute → invokeLaterのようなもの。
* SDK15(4.0.3)から、ソースのアーカイブがダウンロードできる。それ以前はgitで取ってくる必要がある。
* IDEのメタデータは別のディレクトリにまとめられている。
* UIスレッドでの処理時間の基準が2msというのは、ほとんど何もできないのではないか?
* AsyncTaskでのバックグラウンドスレッド数は何で決まっているか?
** ver.3まで: 1個
** ver.4以降: スレッドプール
** executeOnExecutorで制御可能
* doInBackground を中断するとき → cancelメソッドを呼ぶとonCanceledが呼ばれる。

6.3.2 Androidプロセスのスレッド
-------------------------------

6.4 直列化
----------

* AIDL (Android in Action に詳しい?)
** サービスを実装するときに使う。
** 基本的にローカルホスト内部でのRPCに使用する。

6.4.1 Javaの直列化
------------------

6.4.2 Parcelable
----------------

* newArray は何故必要か? クラスがわかるならリフレクションで良いのではないか?

6.4.3 直列化をサポートするクラス
--------------------------------

6.4.4 直列化とアプリケーションのライフサイクル
----------------------------------------------

2部 Android Frameworkについて
=============================

7章
=============================

7.1 Android GUI アーキテクチャ
------------------------------

7.1.1 モデル
------------

7.1.2 ビュー
------------

7.1.3 コントローラ
------------------

7.1.4 まとめると
----------------

* GUIコンポーネントの末端(リーフ)ウィジェットを「葉」と記述するのはわかりづらい。

7.2 グラフィカルインターフェイスの組み立て
------------------------------------------

* レイアウトファイルは複数用意できる (画面サイズ別に用意するなど)
* 参考: レシポンシブルWebデザイン
* p.172 訳注 → ×res.layout → ○res/layout
* Windows8(いわゆるメトロUI)では、マウスでのメニューとタッチでのメニューで、メニュー要素のサイズを変えるなどの仕組みがある。
* GUIエディタ → 良くはなっているが、デザイン作業(=試行錯誤)には使えない。
* R = リソースクラス。ビルドして初めて生成されるため、単にソースをIDEに読み込んだだけではエラーになる場合がある。

7.3 コントローラとのワイヤリング
--------------------------------

* p.178 「dots = new Dots()」の部分に関するライフサイクルは問題ないか?
  → 後述のライフサイクルやメモリの話を参照?
* JavaでGUIを記述するのは手間がかかる。が、Scalaではハマる。
  → Java8ならLambdaが入る。
  → AndroidにJava8は入るのか?
* 座標系は原点はどこ? → 左上(?)
* 描画の単位は? → ドット単位?

7.3.2 タッチイベントの監視
--------------------------

* eventの座標は? → float?

7.3.3 キーイベントの監視
------------------------

7.3.4 イベントを処理する別の方法
--------------------------------

7.3.5 高度なワイヤリング
------------------------

* キーボードを使ったときはタブキーでフォーカスは切り替わるのか? → 試さないとわからない。
* ソフトウェアキーにはタブキーはない(ことが多い?)
* エミュレータでハードウェアキーを押したらイベントが飛ぶ? → 宿題?
* ここで言う「強制終了」は、最初に出ていた強制終了or継続と同じ? → 同じ。
* 誰がどうやって2秒をウォッチしているのか?

次回
====

* p.191「7.4 メニュー」から。


[ 戻る ]