《第一行代码》

第一行代码

Android思维导图.png

用户通过硬件抽象层(HAL)的代码对屏幕发起指令。

之后有人考虑在HAL之上的运行时层(ART)用C++封装一个服务,该服务的名称就叫Surface Flinger(专门负责UI内容的渲染)

在应用框架层,通过Java封装了Window(窗口):(负责可视化内容的排版,然后将排版结果通过上司WindowManager,通过进程通信的方式去与后台服务WindowManagerService通信,最终递交到Surface Flinger来输出和呈现)

Surface Flinger为每个Windows都映射了一块Surface,来用于管理和渲染屏幕内容。

因为Windows排版负担太重,于是用组合模式封装了ViewGroup(会套娃的View)。排版工作:Measure、Layout、Draw

又因为需要多窗口,多窗口涉及到窗口间的切换、通信等,比较麻烦。于是用模板的方式重新封装成Activity。开发者通过继承Activity拿到一个个简练的模板。

《第一行代码3》

  • ListView和RecyclerView

ListView只能纵向滚动;

RecyclerView可以横向、纵向滚动;(需要在app/build.gradle的dependencies中添加compile 'com.android.support:recyclerview-v7:24.2.1'