????????widthMeasureSpec??heightMeasureSpec??????????????????淶????????淶???????淶??????int???????????int?????????????????

???????????mode??????????2λ?????????????????????????MeasureSpec.UNSPECIFIED(0)??MeasureSpec.EXACTLY(1)????MeasureSpec.AT_MOST(2)??

???????????size??????????30λ?????????mode????????MeasureSpec.EXACTLY???size?????????????????????????????????;??mode????????MeasureSpec.AT_MOST???size???????????????????????????????????????;??mode????????MeasureSpec.UNSPECIFIED????????????????????????????????????????????????????????????????????????

????TextView?????????onMeasure???????????????????????wdith????height????????????????View???????????????setMeasuredDimension??????????????????????????????????ú??????y???????????????????IllegalStateException??????

????2. ????

????????????????????????????????С??????????λ???δ??????????λ?????????????????????????

????????????????????????ν??????????????У???????λ???????????????????????????????????????в?????????????????д????View????????onLayout?????????Activity??????????????????????????????DecorView???????????????????Activity??????????????????????????е?????????????????????????????????????onLayout???????л???????????????λ?y?????????????????

?????????????FrameLayout??LinearLayout??RelativeLayout??TableLayout??AbsoluteLayout??????????????????????????????????д????View????????onLayout??????TextView??????????????????????????????д????View????????onLayout??

????3. ????

???????????????????????????λ????С??????????????????????????UI???л????????????????????????UI?????????д????View????????onDraw??

????TextView?????????onDraw??????????????

????[java] view plaincopyprint?

????public class TextView extends View implements ViewTreeObserver.OnPreDrawListener {

????......

????@Override

????protected void onDraw(Canvas canvas) {

????//?????canvas?????UI

????......

????}

????......

????}

????public class TextView extends View implements ViewTreeObserver.OnPreDrawListener {

????......

????@Override

????protected void onDraw(Canvas canvas) {

????//?????canvas?????UI

????......

????}

????......

????}

????????????????????frameworks/base/core/java/android/widget/TextView.java?С?

????????canvas??????????黭?????????UI?????????黭???????????????????????????UI?????續(xù)??(drawLine)?????(drawCircle)?????(drawBitmap)??????????ЩUI??????????????????????????????UI???

?????????Android??ó?????(Activity)?????(Measure)??????(Layout)?????(Draw)??????????????????Java???Canvas???????????C++???SkCanvas??C++???SkCanvas??????????λ????????????λ????????????????(Surface)??????????λ???????

?????????Android??ó?????SurfaceFlinger??????????????????????????????????????????????????λ?????????????????????????棬????SurfaceFlinger???????????SurfaceFlinger?????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????????UI?????????????????????????????UI????з??????????????????????????UI??????????λ??????????

?????????Android??????????WindowManagerService??????????????????????????????UI???????WindowManagerService??????????????????????????п????????????????UI??????????WindowManagerService?????????Binder?????????????WindowManagerService???????????Binder??????????????????????SurfaceFlinger????????????????UI??SurfaceFlinger??????′???UI????????ο????Android??Surface?????SurfaceFlinger?????????ó???UI????????????

?????????????????????????????UI???????????????????л?????????????????????????????????ó???????WindowManagerService?????SurfaceFlinger??????????????????????

?????????????????Android??ó?????(Activity)?????(Measure)??????(Layout)?????(Draw)?????????????????ó??????????????

????(1). ???????????п????UI????????????????????????????????????????п????UI?????????д????????λ???????;

????(2). ???????????п????UI?????????????????????е??????????????UI????????????????????????????У??????????????????????CalledFromWrongThreadException????????

?????????漲??????UI???????????????????????????????????????Щ??UI??????????漰??????????????????????????????????棬???????????????????????????????????????????????λ????????????????????Щ??UI???????????????????????е??????????漰???????????????????????????????????????Щ??UI??????????????????????С???????????UI????????????????ó?????????????????????????ó??????????????UI????

???????????????ó???????????????????????UI????????????????????????????????????????????????к?????UI????????????????????????ó?????????????????????????????????ANR?????

?????????????а????????????UI???ж???????λ??????????????????????????UI??????????????????????????????λ???????????????????????????????????????????????????л????????UI????????????????????——??????????????????????????????UI?????????????????????????????????????????????????????????????У?????????????????ж?????λ?????????——SurfaceView??