[android学习1]横竖屏切换的机理

原创 2012年03月28日 11:25:03

因为最近遇到了几个奇怪的bug,所以下定决心把横竖屏切换的机制搞清楚,现在和大家分享下:



首先是phonewindowmananger里会注册windoworientationlistener,当sensor有事件上报后,会调用onOrientationChanged,继续调用WMS里的接口setRotation。
在setRotation里会对config进行判断,如果发生了变化就会通知AMS,sendNewConfiguration。
AMS会调用WMS的接口computeNewConfiguration来对新的config进行判断,并在updateConfigurationLocked调用activitythread的scheduleConfigurationChanged,给APPTHREAD发CONFIGURATION_CHANGED;调用ensureActivityConfigurationLocked,紧接着在activitystack里调用app.thread.scheduleActivityConfigurationChanged来给APPTHREAD发送ACTIVITY_CONFIGURATION_CHANGED消息。
到这里,我们的activitythread就会收到并处理这2个关键的消息,遍历当前的callstack,调用各个activity的onconfigrationchange。

调用图如下:
具体怎么切横屏的这个涉及到layout我还没搞清楚。。。

相关文章推荐

关于 Android 4.4 系统屏幕旋转调研

本文档是在全志A33平台 Android 系统中,关于屏幕旋转方面的技术调研。

android: 横竖屏切换总结-布局改变和数据保存

2012-03-15 11:24:29|  分类: android UI |字号 订阅 目录: 引言 一、布局问题 二、重新载入问题 三、Q:横竖屏生命...

android屏幕旋转在framework中的修改。

在eoeandroid上写, 记录过来。   在framework中修改,可以随意修改屏幕0°指向的方向,其实也是framework层做的映射。 修改HAL层来修改屏幕0°指向的方向应该也是可以的,还...

android framework修改只有横屏或者竖屏

客户要求,所有的界面只要横屏,因此从framework的修改出发,仅仅限制PhoneWindowManager.java省时省力。 两种方案: 修改./base/policy/src/...

android屏幕旋转在framework中的修改。

Android 竖屏启动  1)kernel 竖屏 选中: make menuconfig ---> Device Drivers  ---> Graphics support  ---...
  • ailinty
  • ailinty
  • 2012年04月06日 16:03
  • 9942

Android横竖屏切换和灭屏亮屏时Activity的生命周期探究(1)

研究这个问题的初衷在于项目中碰到了一个问题:横屏的时候灭屏再亮屏,亮屏的时候用户可以清晰的看到先启动竖屏(过程1)再切换到横屏的过程,由于灭屏的时候onSaveInstanceState()保存的时横...

Android横竖屏切换

  • 2015年03月04日 14:28
  • 16KB
  • 下载

android横竖屏切换

  • 2016年12月30日 21:13
  • 82KB
  • 下载

Android学习记录(8)—Activity的四种加载模式及有关Activity横竖屏切换的问题

Activity有四种加载模式:standard(默认), singleTop, singleTask和 singleInstance。以下逐一举例说明他们的区别: standard:Activity...

android横竖屏切换

  • 2015年12月30日 16:29
  • 8.39MB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:[android学习1]横竖屏切换的机理
举报原因:
原因补充:

(最多只允许输入30个字)