[android—runloop] vs [ios—runloop]

以下是android和ios对runloop的大概实现;
当然android里面不叫runloop,叫looper;
基本都是while循环来处理;
只是android是管理一个消息队列,有任务了就塞到队列里,然后looper再取出来执行;

android 实现

public static final void loop() {
       Looper me = myLooper();//从该线程中取出对应的looper对象
        MessageQueue queue = me.mQueue;//取消息队列对象...
       while (true) {
           Message msg = queue.next(); // might block取消息队列中的一个待处理消息..

            if (msg != null) {
                if (msg.target == null) {
                   // No target is a magic identifier for the quit message.
                   return;
               }
                
               //处理消息
                msg.target.dispatchMessage(msg);
                msg.recycle();
           }
       }
    }

IOS 实现
这里删掉了很多其他的代码,只保留了大概逻辑

do {

 //do something ......


  //处理监听
  __CFRunLoopDoObservers(rl, rlm, kCFRunLoopBeforeTimers);
  
  //处理source0 和 source1
  __CFRunLoopDoSources0(rl, rlm, stopAfterHandle);
  __CFRunLoopDoSource1(rl, rlm, rls, msg, msg->msgh_size, &reply) ;

  //处理timer
  __CFRunLoopDoTimers(rl, rlm, mach_absolute_time());
  
} while (0 == retVal);

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,482评论 25 708
  • RunLoop 是 iOS 和 OSX 开发中非常基础的一个概念。 网上已经有很多源码分析和具体Demo的研究。 ...
    吴佩在天涯阅读 18,192评论 7 107
  • 实例化讲解RunLoop 亲,我的简书已不再维护和更新了,所有文章都迁移到了我的个人博客:https://mike...
    击水湘江阅读 22,238评论 47 243
  • 技术的战略目标: marketing 没有给出大的产品方向,人力资源有限,技术方向该投什么?可能一个季度或是半年只...
    简单于理阅读 365评论 0 0
  • 咪咪曾是我家的宠物猫。之所以“曾”,是因为我在十天前将它送人了。 一年半前,儿子要过8岁生日,我们商量送他什么做礼...
    蓝柿阅读 730评论 0 0