Androidの描画フロー(前編)
Upcoming SlideShare
Loading in...5
×
 

Androidの描画フロー(前編)

on

  • 4,072 views

androidの描画処理

androidの描画処理

Statistics

Views

Total Views
4,072
Views on SlideShare
4,072
Embed Views
0

Actions

Likes
1
Downloads
5
Comments
0

0 Embeds 0

No embeds

Accessibility

Categories

Upload Details

Uploaded via as Microsoft PowerPoint

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

Androidの描画フロー(前編) Androidの描画フロー(前編) Presentation Transcript

  • Android の描画フロー ( 前編 ) @yuuto
  • Android の描画ってどうなってるん? 描画用のスレッドが延々ぐるぐるして ます。 描画用スレッドは mainThread とか UIThread と呼ばれます。 描画命令とかがメッセージキューとい うところに Handler 経由などで push さ れます。 UIThread はそれを一個ずつ処理します 。 今回はメッセージキューに入れるとこ
  • Looper と Handler 偉大な先人達のサイトを見てね☆ throw Life - Android の Handler とは何 か?  http://www.adamrocker.com/blog/261/ what-is-the-handler-in-android.html
  • View#invalidate() UI を描画・再描画するときに呼ぶメソ ッド  TextView#setText(String) 内でもコールさ れてるよ このメソッドをコールするとメッセー ジキューに描画してねってメッセージ が入る。
  • View#invalidate()
  • ちょっとヒエラルキー確認。 View の構成はこんな感じ。 Root にい る View は PhoneWindow$DecorView 。 DecorView の親は ViewRoot/ViewRootImpl
  • クラス関係も確認。
  • View#invalidate()
  • View#invalidate() のまとめ 結局は Looper と Handler の関係と一緒 。 変更のあった( invalidte() した) View の親をひたすらたどっていくと ViewRootImpl にたどり着く。 ViewRootImpl は Handler なの で、 Handler#post() したときと同様に メッセージキューにメッセージが入る 。
  • 描画処理そのものは? 入り口は Looper#loop() 代表的な処理は measure/layout/draw 。 ハードウェアアクセラレータ対応のコ ードが(多分) honeycomb から入って きたけどやっつけっぽくてコードがば っちぃ
  • measure まではこんな感じ
  • 続きはまた今度。 ここらへんを調べてて気になっている こと。  描画処理時の View 間の補完関係。  Looper は自分で使える。  HandlerThread クラス。  俺俺 Looper を扱いやすくしてくれるクラス  IdleHandler クラス  なんか Looper が暇だったらコールバックメソ ッドが呼ばれるようなやつっぽい。