[android—runloop] vs [ios—runloop]

以下是android和ios對runloop的大概實現(xiàn);
當然android里面不叫runloop,叫l(wèi)ooper;
基本都是while循環(huán)來處理;
只是android是管理一個消息隊列,有任務了就塞到隊列里,然后looper再取出來執(zhí)行;

android 實現(xiàn)

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 實現(xiàn)
這里刪掉了很多其他的代碼,只保留了大概邏輯

do {

 //do something ......


  //處理監(jiān)聽
  __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);

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 178,995評論 25 709
  • RunLoop 是 iOS 和 OSX 開發(fā)中非?;A的一個概念。 網(wǎng)上已經(jīng)有很多源碼分析和具體Demo的研究。 ...
    吳佩在天涯閱讀 18,694評論 7 107
  • 實例化講解RunLoop 親,我的簡書已不再維護和更新了,所有文章都遷移到了我的個人博客:https://mike...
    擊水湘江閱讀 22,341評論 47 243
  • 技術的戰(zhàn)略目標: marketing 沒有給出大的產(chǎn)品方向,人力資源有限,技術方向該投什么?可能一個季度或是半年只...
    簡單于理閱讀 386評論 0 0
  • 咪咪曾是我家的寵物貓。之所以“曾”,是因為我在十天前將它送人了。 一年半前,兒子要過8歲生日,我們商量送他什么做禮...
    藍柿閱讀 795評論 0 0

友情鏈接更多精彩內容