Android窗口管理系统是非常大的一块,涉及AMS、InputManagerService、输入法管理等,这么复杂的一个系统,如果直接扎进入分析看源码可能会比较混乱,所以,本文以Toast显示原理作为切入点,希望能简单点初窥一下WMS。首先,简单看下Toast用法:
目录
目录
协议:数据的组织与传输约定
本文分析下Android的消息处理机制,主要是针对Hanlder、Looper、MessageQueue组成的异步消息处理模型,先主观想一下这个模型需要的材料:
Dialog是APP开发中常用的控件,同Activity类似,拥有独立的Window窗口,但是Dialog跟Activity还是有一定区别的,最明显的就是:默认情况下Dialog不是全屏的,所以布局实现不如Activity舒服,比如顶部对齐,底部对齐、边距、宽度、高度等,如果将Dialog定义成全屏的就会省去很多问题,可以完全按照常用的布局方式来处理。网上实现全屏Dilaog的方式有不少,一般情况下也都能奏效,不过可能有不少小点会导致疑虑,比如:为什么有些窗口属性(隐藏标题)必须要在setContentView之前设置才有效,相反,也有些属性(全屏)要在之后设置才有效。实现全屏Dialog呢,其实方法不一,这里挑几个简单的,然后说下原因,由于Android的窗口管理以及View绘制是挺大的一块,这里不过多深入。先看实现效果:
SystemServer的启动
关于Context,首先看一下官方的说法: