- 博客(12)
- 资源 (25)
- 收藏
- 关注
原创 Android入门之窗口类型
从WmS的角度看,一个窗口并不是Window类,而是一个View类。WmS收到用户消息后,需要把消息派发到窗口,View类本身并不能直接接收WmS传递过来的消息,真正接收用户消息的必须是IWindow类,而实现IWindow类的是ViewRoot.W类,每一个W内部都包含了一个View变量。 WmS并不介意该窗口(View)是属于哪个应用程序的,WmS会按一定的规则判断哪个窗口处
2015-01-16 17:19:25 13870
原创 Android入门之客户窗口获取消息的时机
首先得知道:无论是Key消息还是Motion消息,都是通过pipe传递到客户窗口的,所有的客户进程都有一个主线程,即ActivityThread类,该类每次开始时就会进入到一个Looper循环中,然后就不断地从MessageQueue中读取消息,如果没有消息则进入到wait状态,直到下一个消息。 而在Android2.3版本中,MessageQueue对象都会在native环境中
2015-01-16 16:19:34 1347
原创 Android入门之WmS中处理消息的时机
用户消息可分为两类,一类是Key消息,另一类是Motion消息。在Android2.3版本的消息系统设计中,对于Motion消息,InputDispatcher会使用pipe直接把消息发往客户窗口,WmS类不能对这些消息进行任何的前置(pre)处理,而对于Key消息,则会首先回调WmS中的Key消息处理函数,在WmS中不处理该消息时,才把消息发往客户窗口中。在一般情况下,WmS中仅处理一些系统Ke
2015-01-16 15:48:52 2657
原创 Android入门之在客户进程中注册InputChannel
上文说到,在InputChannel被创建后,紧接着就是注册InputChannel,看以下代码:if (outInputChannel != null) { String name = win.makeInputChannelName(); InputChannel[] inputChannels = InputChannel.openInputChannelPair(name); w
2015-01-16 15:23:45 4080
原创 Android入门之在WmS中注册InputChannel
上文描述了InputChannel的创建过程,在WmS的addWindow中,创建InputChannel后紧接着的是注册InputChannel:if (outInputChannel != null) { String name = win.makeInputChannelName(); InputChannel[] inputChannels = InputChannel.openI
2015-01-16 14:57:33 1711
原创 Android入门之创建InputChannel
首先需要知道什么是InputChannel。 我们说,InputDispatcher和客户窗口ViewRoot之间,是通过Pipe传递消息的,而Pipe是Linux系统调用的一部分,Android为了能够调用Pipe而创建了InputChannel类,可以说,InputChannel是Pipe的Android版。 InputChannel类有两个基本作用,一是保
2015-01-16 14:26:21 3945
原创 Android入门之把窗口信息传递给InputDispatcher
当窗口信息变化时,就应该把变化后的窗口信息传递给InputDispatcher,所以,从“什么时候会改变窗口信息入手”,这些变化的可能有: (1) 窗口大小发生变化时; (2) 窗口从显示变为隐藏,或隐藏变为显示时; (3) 暂停或恢复对消息的处理时; (4) 窗口层值发生变化时; (5) 添加或删除窗口时;
2015-01-15 18:13:10 3195
原创 Android入门之addWindow
前面说到,应用程序添加窗口时,会在本地创建一个ViewRoot,然后通过IPC(进程间通信)调用WmS的Session的addWindow请求WmS创建窗口,下面来看看addWindow方法。 addWindow方法定义在frameworks/base/services/java/com.android.server.WindowManagerService.java中,其代码如
2015-01-15 17:31:50 4456
原创 Android入门之从输入设备中获取消息——窗口创建过程
上文讲到消息获取过程,本文来详细看代码。 我们说窗口创建时会创建本地的ViewRoot,然后调用WmS的addWindow方法,所以我们首先来看看WmS的代码。 你会看到frameworks/base/services/java/com/android/server/WindowManagerService.java中,没有公开的构造子,但有一个main方法,我
2015-01-07 11:15:25 1624
原创 Android入门之从输入设备中获取消息——综述
Android2.3中的消息获取过程如下所示:这里涉及到以下名词: (1) 客户窗口ViewRoot:应用程序添加窗口时,会在本地创建一个ViewRoot对象,也就是说ViewRoot对象的数量与窗口数量一致; (2) Pipe:Linux的Pipe机制,也就是管道,Android2.3使用Pipe传递ViewRoot和InputDispatcher
2015-01-06 19:56:46 1138
原创 Android入门之开篇
两年前有个转Android的机会,当时瞄了眼Android的代码,哦,应该是其他同事写的Android APK的代码,看到大段大段的内部类,当时任性,特别不喜欢内部类这种东西,倒不是因为它性能不好或什么的,而仅仅是个人喜好而已。 2014年11月份决定转Android,当然原因是各种各样,不过肯定不是因为Android对我产生了极大的吸引力。 总之要转,既然要转
2015-01-06 17:48:41 766
原创 Ubuntu设置NAT连接上网
首先,Ubuntu虚拟机安装在VMWare上,这是前提。第一步:设置虚拟机连接方式,双击下图右下角红框中的图标:然后选择Nat连接:第二步:配置本地连接,首先将本地连接设置为可共享的:
2015-01-04 19:30:00 2306
Spring Security集成CAS客户端实例
2015-03-02
CAS服务端(非原生)
2015-03-02
Oframer开发框架
2015-03-02
poi生成Excel及合并单元格示例
2013-12-09
集成Spring、Elasticsearch、paoding,将ES服务嵌入到Web程序
2013-12-02
ElasticSearch应用之Java示例源代码
2013-05-16
Axis2与Was7
2012-12-13
Spring MVC整合Mybatis
2012-08-17
Spring MVC文件上传下载
2012-08-17
ssh的annotation示例
2010-11-04
JAVA EE之Tomcat起步
2009-10-17
struts2.1.6源代码,包括xwork2.1.2和ognl2.6.11的源代码
2009-07-17
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人