原文地址:深入理解Android消息处理系统的原理作者:hoarn Android应用程序也是消息驱动的,按道理来说也应该提供消息循环机制。实际上谷歌参考了Windows的消息循环机制,也在Android系统中实现了消息循环机制。 Android通过Looper、Handler来实现消息循环机制.....
分类:
移动开发 时间:
2015-06-11 20:47:26
阅读次数:
139
原因:一开始想查找由于ipc初始化顺序的问题导致tray卡死的原因,但恰好遇到主进程弹出退出确认框后也卡死了,于是开始查找原因.
首先是跟踪代码,发现消息循环是活着的,但整个消息循环只能取到timer和paint消息,使用消息工具抓窗口,可以看到也可以取到GetItemText等消息.
(一般来讲这时已经可以定位是由于attachthreadinput的原因了,但这时候我还不知道);...
分类:
系统相关 时间:
2015-06-11 11:08:50
阅读次数:
704
1、NSRunloopNSRunloop是一种消息循环机制,它会侦测输入源(input source)和定时源(timer source),然后做回调处理。主要作用使线程在没有任何事件处理的时候处于休眠状态,对于非主线程而言,可以防止线程在等候指令时候被杀掉(NSTimer调用)。其原理图如下:每个...
分类:
其他好文 时间:
2015-06-07 12:27:58
阅读次数:
1696
现在,简单介绍下windows应用程序的大概运行过程,让刚开始接触Windows开发或者MFC开发的同学有一个大致的了解。
1.创建一个窗口首先要注册一个窗口类,初始化wndclass中的各个域,设置窗口过程函数。2.调用RigisterClass来注册这个窗口类。3.创建窗口。CreateWindow4.显示窗口。ShowWindow5.刷新窗口。UpdateWindow5.消息循环。
这里主...
Android中的Looper类,是用来封装消息循环和消息队列的一个类,用于在android线程中进行消息处理。handler其实可以看做是一个工具类,用来向消息队列中插入消息的。 (1) Looper类用来为一个线程开启一个消息循环。 默认情况下android中新诞生的线程是没有开启消息循环的.....
分类:
移动开发 时间:
2015-05-29 19:53:45
阅读次数:
151
上周准备在公司内部转岗,面了3个部门windows客户端相关的工作,最终拿到3个Offer,主要涉及C++和Windows两大块内容,C++的题目基本都答上了,Windows一直都是我的弱项,在这里记录一下Windows相关的题目。有些答不上的问题就没列出来,还有些问题忘了,下面的答案有些大部分是我...
分类:
其他好文 时间:
2015-05-27 13:43:42
阅读次数:
156
对于Windows操作,当用户点击"关闭"button时,窗体函数就会收到一个WM_DESTROY消息。窗体函数应该调用PostQuitMessage(0) 向消息队列插入一个WM_QUIT消息。GetMessage 假设从消息队列中取得的是WM_QUIT消息,它将返回0,从而导致消息循环结束,W....
Akka支持在运行时对角色消息循环 (例如它的的实现)进行实时替换: 在角色中调用getContext.become 方法。 热替换的代码被存在一个栈中,可以被pushed(replacing 或 adding 在顶部)和popped。
become一个特别好的例子是用它来实现一个有限状态机。
使用Become/Unbecome特性还可以很方便的实现状态转换机。
1.动态替换方法
im...
分类:
其他好文 时间:
2015-05-18 22:58:30
阅读次数:
171
Android 消息机制涉及到的类主要有
Looper
Handler
Message、MessageQueue
HandlerThread
下面结合 Android API 22 的源码分析上面几个类的内部实现细节,以窥探其中的原理一二。Looper 消息循环Looper 是一个循环处理消息的类,Looper内部维护一个消息队列,循环的从消息队列中取出消息并处理,如果队列为空则等待新消息。Loop...
分类:
移动开发 时间:
2015-05-12 11:33:20
阅读次数:
172
Windows基于消息驱动系统,为了存放消息,系统提供系统消息队列.工作原理:系统在监控到事件的发生时就会产生相应消息并存放到消息队列中。每个Windows应用程序也有自己的消息队列。系统在处理系统消息队列时会将属于应用程序的消息投递到相应的消息队列中。而消息循环就不断从消..