Android 中 RegistrantList消息处理机制 以android 5.0 MT为例
先明确两个身份 1.RefistrantList 通知者 2.Registrant 观察者,这是一个一对多的关系,在有事件更新时,凡是在名单上登记过的对象,都会收到通知。
注册为观察者
<div class="linenums" style="color: rgb(30, 52, 123); margin-top: 0px; margin-bottom: 0px; padding-left: 0px;"><div class="L0" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">private</span><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">void</span><span class="pln" style="color:#48484c;"> registerForNotifications</span><span class="pun" style="color:#93a1a1;">()</span><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">{</span></code></div><div class="L1" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="typ" style="color:teal;">Phone</span><span class="pln" style="color:#48484c;"> newPhone </span><span class="pun" style="color:#93a1a1;">=</span><span class="pln" style="color:#48484c;"> mPhoneProxy</span><span class="pun" style="color:#93a1a1;">.</span><span class="pln" style="color:#48484c;">getActivePhone</span><span class="pun" style="color:#93a1a1;">();</span></code></div><div class="L2" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">if</span><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">(</span><span class="pln" style="color:#48484c;">newPhone </span><span class="pun" style="color:#93a1a1;">!=</span><span class="pln" style="color:#48484c;"> mPhoneBase</span><span class="pun" style="color:#93a1a1;">)</span><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">{</span></code></div><div class="L3" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> unregisterForNotifications</span><span class="pun" style="color:#93a1a1;">();</span></code></div><div class="L4" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"> </code></div><div class="L5" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">if</span><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">(</span><span class="pln" style="color:#48484c;">newPhone </span><span class="pun" style="color:#93a1a1;">!=</span><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">null</span><span class="pun" style="color:#93a1a1;">)</span><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">{</span></code></div><div class="L6" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="typ" style="color:teal;">Log</span><span class="pun" style="color:#93a1a1;">.</span><span class="pln" style="color:#48484c;">i</span><span class="pun" style="color:#93a1a1;">(</span><span class="kwd" style="color:#1e347b;">this</span><span class="pun" style="color:#93a1a1;">,</span><span class="pln" style="color:#48484c;"> </span><span class="str" style="color:#dd1144;">"Registering: %s"</span><span class="pun" style="color:#93a1a1;">,</span><span class="pln" style="color:#48484c;"> newPhone</span><span class="pun" style="color:#93a1a1;">);</span></code></div><div class="L7" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> mPhoneBase </span><span class="pun" style="color:#93a1a1;">=</span><span class="pln" style="color:#48484c;"> newPhone</span><span class="pun" style="color:#93a1a1;">;</span></code></div><div class="L8" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> mPhoneBase</span><span class="pun" style="color:#93a1a1;">.</span><span class="pln" style="color:#48484c;background-color: rgb(192, 192, 192);">registerForNewRingingConnection</span><span class="pun" style="color:#93a1a1;">(</span></code></div><div class="L9" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> mHandler</span><span class="pun" style="color:#93a1a1;">,</span><span class="pln" style="color:#48484c;"> <span style="color:#ff00;">EVENT_NEW_RINGING_CONNECTION</span></span><span class="pun" style="color:#93a1a1;">,</span><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">null</span><span class="pun" style="color:#93a1a1;">);</span></code></div><div class="L0" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> mPhoneBase</span><span class="pun" style="color:#93a1a1;">.</span><span class="pln" style="color:#48484c;">registerForCallWaiting</span><span class="pun" style="color:#93a1a1;">(</span></code></div><div class="L1" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> mHandler</span><span class="pun" style="color:#93a1a1;">,</span><span class="pln" style="color:#48484c;"> EVENT_CDMA_CALL_WAITING</span><span class="pun" style="color:#93a1a1;">,</span><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">null</span><span class="pun" style="color:#93a1a1;">);</span></code></div><div class="L2" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> mPhoneBase</span><span class="pun" style="color:#93a1a1;">.</span><span class="pln" style="color:#48484c;">registerForUnknownConnection</span><span class="pun" style="color:#93a1a1;">(</span><span class="pln" style="color:#48484c;">mHandler</span><span class="pun" style="color:#93a1a1;">,</span><span class="pln" style="color:#48484c;"> EVENT_UNKNOWN_CONNECTION</span><span class="pun" style="color:#93a1a1;">,</span></code></div><div class="L3" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">null</span><span class="pun" style="color:#93a1a1;">);</span></code></div><div class="L4" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">}</span></code></div><div class="L5" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">}</span></code></div><div class="L6" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">}</span></code></div><li style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 12px !important;"> </li></div>
<div class="linenums" style="color: rgb(30, 52, 123); margin-top: 0px; margin-bottom: 0px; padding-left: 0px;"><div class="L0" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="com" style="color:#93a1a1;">// Inherited documentation suffices.</span></code></div><div class="L1" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="lit" style="color:#195f91;">@Override</span></code></div><div class="L2" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">public</span><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">void</span><span class="pln" style="color:#48484c;"> registerForNewRingingConnection</span><span class="pun" style="color:#93a1a1;">(</span></code></div><div class="L3" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="typ" style="color:teal;">Handler</span><span class="pln" style="color:#48484c;"> h</span><span class="pun" style="color:#93a1a1;">,</span><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">int</span><span class="pln" style="color:#48484c;"> <span style="color:#ff00;">what</span></span><span class="pun" style="color:#93a1a1;">,</span><span class="pln" style="color:#48484c;"> </span><span class="typ" style="color:teal;">Object</span><span class="pln" style="color:#48484c;"> obj</span><span class="pun" style="color:#93a1a1;">)</span><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">{</span></code></div><div class="L4" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> checkCorrectThread</span><span class="pun" style="color:#93a1a1;">(</span><span class="pln" style="color:#48484c;">h</span><span class="pun" style="color:#93a1a1;">);</span></code></div><div class="L5" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"> </code></div><div class="L6" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> mNewRingingConnectionRegistrants</span><span class="pun" style="color:#93a1a1;">.</span><span class="pln" style="color:#48484c;background-color: rgb(192, 192, 192);">addUnique</span><span class="pun" style="color:#93a1a1;">(</span><span class="pln" style="color:#48484c;">h</span><span class="pun" style="color:#93a1a1;">,</span><span class="pln" style="color:#48484c;"> <span style="color:#ff00;">what</span></span><span class="pun" style="color:#93a1a1;">,</span><span class="pln" style="color:#48484c;"> obj</span><span class="pun" style="color:#93a1a1;">);</span></code></div><div class="L7" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">}</span></code></div></div>
<div class="linenums" style="color: rgb(30, 52, 123); margin-top: 0px; margin-bottom: 0px; padding-left: 0px;"><div class="L0" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">protected</span><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">final</span><span class="pln" style="color:#48484c;"> </span><span class="typ" style="color:teal;">RegistrantList</span><span class="pln" style="color:#48484c;"> mNewRingingConnectionRegistrants</span></code></div><div class="L1" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">=</span><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">new</span><span class="pln" style="color:#48484c;"> </span><span class="typ" style="color:teal;">RegistrantList</span><span class="pun" style="color:#93a1a1;">();</span></code></div></div>
<div class="linenums" style="color: rgb(30, 52, 123); margin-top: 0px; margin-bottom: 0px; padding-left: 0px;"><div class="L0" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">public</span><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">synchronized</span><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">void</span></code></div><div class="L1" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> addUnique</span><span class="pun" style="color:#93a1a1;">(</span><span class="typ" style="color:teal;">Handler</span><span class="pln" style="color:#48484c;"> h</span><span class="pun" style="color:#93a1a1;">,</span><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">int</span><span class="pln" style="color:#48484c;"> what</span><span class="pun" style="color:#93a1a1;">,</span><span class="pln" style="color:#48484c;"> </span><span class="typ" style="color:teal;">Object</span><span class="pln" style="color:#48484c;"> obj</span><span class="pun" style="color:#93a1a1;">)</span></code></div><div class="L2" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">{</span></code></div><div class="L3" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="com" style="color:#93a1a1;">// if the handler is already in the registrant list, remove it</span></code></div><div class="L4" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> remove</span><span class="pun" style="color:#93a1a1;">(</span><span class="pln" style="color:#48484c;">h</span><span class="pun" style="color:#93a1a1;">);</span></code></div><div class="L4" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pun" style="color:#93a1a1;"> <span style="background-color: rgb(192, 192, 192);">add</span>(new <span style="background-color: rgb(192, 192, 192);">Registrant</span>(h, <span style="color:#ff00;">what</span>, obj)); </span></code></div><div class="L4" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pun" style="color:#93a1a1;"> }</span></code></div><div class="L5" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span></code></div></div>
<div class="linenums" style="color: rgb(30, 52, 123); margin-top: 0px; margin-bottom: 0px; padding-left: 0px;"><div class="L0" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">public</span></code></div><div class="L1" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="typ" style="color:teal;">Registrant</span><span class="pun" style="color:#93a1a1;">(</span><span class="typ" style="color:teal;">Handler</span><span class="pln" style="color:#48484c;"> h</span><span class="pun" style="color:#93a1a1;">,</span><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">int</span><span class="pln" style="color:#48484c;"> what</span><span class="pun" style="color:#93a1a1;">,</span><span class="pln" style="color:#48484c;"> </span><span class="typ" style="color:teal;">Object</span><span class="pln" style="color:#48484c;"> obj</span><span class="pun" style="color:#93a1a1;">)</span></code></div><div class="L2" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">{</span></code></div><div class="L3" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> refH </span><span class="pun" style="color:#93a1a1;">=</span><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">new</span><span class="pln" style="color:#48484c;"> </span><span class="typ" style="color:teal;">WeakReference</span><span class="pun" style="color:#93a1a1;">(</span><span class="pln" style="color:#48484c;">h</span><span class="pun" style="color:#93a1a1;">);//Handler 泛型WeakReference</span></code></div><div class="L4" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">this</span><span class="pun" style="color:#93a1a1;">.</span><span class="pln" style="color:#48484c;">what </span><span class="pun" style="color:#93a1a1;">=</span><span class="pln" style="color:#48484c;"> <span style="color:#ff00;">what</span></span><span class="pun" style="color:#93a1a1;">;//消息类型</span></code></div><div class="L5" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> userObj </span><span class="pun" style="color:#93a1a1;">=</span><span class="pln" style="color:#48484c;"> obj</span><span class="pun" style="color:#93a1a1;">;//Object数据对象,用于封装传递的数据</span></code></div><div class="L6" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">}</span></code></div></div>
<div class="linenums" style="color: rgb(30, 52, 123); margin-top: 0px; margin-bottom: 0px; padding-left: 0px;"><div class="L0" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">public</span><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">synchronized</span><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">void</span></code></div><div class="L1" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> add</span><span class="pun" style="color:#93a1a1;">(</span><span class="typ" style="color:teal;">Registrant</span><span class="pln" style="color:#48484c;"> r</span><span class="pun" style="color:#93a1a1;">)</span></code></div><div class="L2" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">{</span></code></div><div class="L3" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> removeCleared</span><span class="pun" style="color:#93a1a1;">();</span></code></div><div class="L4" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> registrants</span><span class="pun" style="color:#93a1a1;">.</span><span class="pln" style="color:#48484c;background-color: rgb(192, 192, 192);">add</span><span class="pun" style="color:#93a1a1;">(</span><span class="pln" style="color:#48484c;">r</span><span class="pun" style="color:#93a1a1;">);</span></code></div><div class="L5" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">}</span></code></div></div>
发出通知
<div class="linenums" style="color: rgb(30, 52, 123); margin-top: 0px; margin-bottom: 0px; padding-left: 0px;"><div class="L0" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="kwd" style="color:#1e347b;">handlePollCalls(){</span></code></div><div class="L0" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><span style="color:#1e347b;">...</span></div><div class="L0" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="kwd" style="color:#1e347b;">if</span><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">(</span><span class="pln" style="color:#48484c;">newRinging </span><span class="pun" style="color:#93a1a1;">!=</span><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">null</span><span class="pun" style="color:#93a1a1;">)</span><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">{</span></code></div><div class="L1" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> mPhone</span><span class="pun" style="color:#93a1a1;">.</span><span class="pln" style="color:#48484c;background-color: rgb(192, 192, 192);">notifyNewRingingConnection</span><span class="pun" style="color:#93a1a1;">(</span><span class="pln" style="color:#48484c;">newRinging</span><span class="pun" style="color:#93a1a1;">);</span></code></div><div class="L2" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">}</span></code></div></div>
<div class="linenums" style="color: rgb(30, 52, 123); margin-top: 0px; margin-bottom: 0px; padding-left: 0px;"><div class="L0" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-c" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">public</span><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">void</span><span class="pln" style="color:#48484c;"> notifyNewRingingConnection</span><span class="pun" style="color:#93a1a1;">(</span><span class="typ" style="color:teal;">Connection</span><span class="pln" style="color:#48484c;"> c</span><span class="pun" style="color:#93a1a1;">)</span><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">{</span></code></div><div class="L1" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-c" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> super</span><span class="pun" style="color:#93a1a1;">.</span><span class="pln" style="color:#48484c;background-color: rgb(192, 192, 192);">notifyNewRingingConnectionP</span><span class="pun" style="color:#93a1a1;">(</span><span class="pln" style="color:#48484c;">c</span><span class="pun" style="color:#93a1a1;">);</span></code></div><div class="L2" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-c" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">}</span></code></div></div>
<div class="linenums" style="color: rgb(30, 52, 123); margin-top: 0px; margin-bottom: 0px; padding-left: 0px;"><div class="L0" style="color: rgb(190, 190, 197); padding-left: 0px; list-style-type: none;"><code class="language-c" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="com" style="color:#93a1a1;">/**</span></code></div><div class="L1" style="color: rgb(190, 190, 197); padding-left: 0px; list-style-type: none;"><code class="language-c" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="com" style="color:#93a1a1;"> * Notify registrants of a new ringing Connection.</span></code></div><div class="L2" style="color: rgb(190, 190, 197); padding-left: 0px; list-style-type: none;"><code class="language-c" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="com" style="color:#93a1a1;"> * Subclasses of Phone probably want to replace this with a</span></code></div><div class="L3" style="color: rgb(190, 190, 197); padding-left: 0px; list-style-type: none;"><code class="language-c" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="com" style="color:#93a1a1;"> * version scoped to their packages</span></code></div><div class="L4" style="color: rgb(190, 190, 197); padding-left: 0px; list-style-type: none;"><code class="language-c" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="com" style="color:#93a1a1;"> */</span></code></div><div class="L5" style="color: rgb(190, 190, 197); padding-left: 0px; list-style-type: none;"><code class="language-c" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">public</span><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">void</span><span class="pln" style="color:#48484c;"> notifyNewRingingConnectionP</span><span class="pun" style="color:#93a1a1;">(</span><span class="typ" style="color:teal;">Connection</span><span class="pln" style="color:#48484c;"> cn</span><span class="pun" style="color:#93a1a1;">)</span><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">{</span></code></div><div class="L6" style="color: rgb(190, 190, 197); padding-left: 0px; list-style-type: none;"><code class="language-c" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">if</span><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">(!</span><span class="pln" style="color:#48484c;">mIsVoiceCapable</span><span class="pun" style="color:#93a1a1;">)</span></code></div><div class="L7" style="color: rgb(190, 190, 197); padding-left: 0px; list-style-type: none;"><code class="language-c" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">return</span><span class="pun" style="color:#93a1a1;">;</span></code></div><div class="L8" style="color: rgb(190, 190, 197); padding-left: 0px; list-style-type: none;"><code class="language-c" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="typ" style="color:teal;">AsyncResult</span><span class="pln" style="color:#48484c;"> ar </span><span class="pun" style="color:#93a1a1;">=</span><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">new</span><span class="pln" style="color:#48484c;"> </span><span class="typ" style="color:teal;">AsyncResult</span><span class="pun" style="color:#93a1a1;">(</span><span class="pln" style="color:#48484c;">null</span><span class="pun" style="color:#93a1a1;">,</span><span class="pln" style="color:#48484c;"> cn</span><span class="pun" style="color:#93a1a1;">,</span><span class="pln" style="color:#48484c;"> null</span><span class="pun" style="color:#93a1a1;">);</span></code></div><div class="L9" style="color: rgb(190, 190, 197); padding-left: 0px; list-style-type: none;"><code class="language-c" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> mNewRingingConnectionRegistrants</span><span class="pun" style="color:#93a1a1;">.</span><span class="pln" style="color:#48484c;background-color: rgb(192, 192, 192);">notifyRegistrants</span><span class="pun" style="color:#93a1a1;">(</span><span class="pln" style="color:#48484c;">ar</span><span class="pun" style="color:#93a1a1;">);</span></code></div><div class="L0" style="color: rgb(190, 190, 197); padding-left: 0px; list-style-type: none;"><code class="language-c" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">}</span></code></div></div>
<div class="linenums" style="color: rgb(30, 52, 123); margin-top: 0px; margin-bottom: 0px; padding-left: 0px;"><div class="L0" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">public</span><span class="pln" style="color:#48484c;"> </span><span class="com" style="color:#93a1a1;">/*synchronized*/</span><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">void</span></code></div><div class="L1" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> notifyRegistrants</span><span class="pun" style="color:#93a1a1;">(</span><span class="typ" style="color:teal;">AsyncResult</span><span class="pln" style="color:#48484c;"> ar</span><span class="pun" style="color:#93a1a1;">)</span></code></div><div class="L2" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">{</span></code></div><div class="L3" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> <span style="background-color: rgb(192, 192, 192);">internalNotifyRegistrants</span></span><span class="pun" style="color:#93a1a1;">(</span><span class="pln" style="color:#48484c;">ar</span><span class="pun" style="color:#93a1a1;">.</span><span class="pln" style="color:#48484c;">result</span><span class="pun" style="color:#93a1a1;">,</span><span class="pln" style="color:#48484c;"> ar</span><span class="pun" style="color:#93a1a1;">.</span><span class="pln" style="color:#48484c;">exception</span><span class="pun" style="color:#93a1a1;">);</span></code></div><div class="L4" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">}</span></code></div></div>
<div class="linenums" style="margin-top: 0px; margin-bottom: 0px; padding-left: 0px;"><div class="L0" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">private</span><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">synchronized</span><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">void</span></code></div><div class="L1" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> internalNotifyRegistrants </span><span class="pun" style="color:#93a1a1;">(</span><span class="typ" style="color:teal;">Object</span><span class="pln" style="color:#48484c;"> result</span><span class="pun" style="color:#93a1a1;">,</span><span class="pln" style="color:#48484c;"> </span><span class="typ" style="color:teal;">Throwable</span><span class="pln" style="color:#48484c;"> exception</span><span class="pun" style="color:#93a1a1;">)</span></code></div><div class="L2" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">{</span></code></div><div class="L3" style="line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"><span style="color:#bebec5;"> </span><span style="color:#ff00;"> </span></span><span style="color:#ff00;"><span class="kwd" style="color:#1e347b;">for</span><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">(</span><span class="kwd" style="color:#1e347b;">int</span><span class="pln" style="color:#48484c;"> i </span><span class="pun" style="color:#93a1a1;">=</span><span class="pln" style="color:#48484c;"> </span><span class="lit" style="color:#195f91;">0</span><span class="pun" style="color:#93a1a1;">,</span><span class="pln" style="color:#48484c;"> s </span><span class="pun" style="color:#93a1a1;">=</span><span class="pln" style="color:#48484c;"> registrants</span><span class="pun" style="color:#93a1a1;">.</span><span class="pln" style="color:#48484c;">size</span><span class="pun" style="color:#93a1a1;">();</span><span class="pln" style="color:#48484c;"> i </span><span class="pun" style="color:#93a1a1;"><</span><span class="pln" style="color:#48484c;"> s </span><span class="pun" style="color:#93a1a1;">;</span><span class="pln" style="color:#48484c;"> i</span><span class="pun" style="color:#93a1a1;">++)</span><span class="pln" style="color:#48484c;"> </span></span><span class="pun" style="color:#bebec5;">{</span></code></div><div class="L4" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="typ" style="color:teal;">Registrant</span><span class="pln" style="color:#48484c;"> r </span><span class="pun" style="color:#93a1a1;">=</span><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">(</span><span class="typ" style="color:teal;">Registrant</span><span class="pun" style="color:#93a1a1;">)</span><span class="pln" style="color:#48484c;"> registrants</span><span class="pun" style="color:#93a1a1;">.</span><span class="pln" style="color:#48484c;">get</span><span class="pun" style="color:#93a1a1;">(</span><span class="pln" style="color:#48484c;">i</span><span class="pun" style="color:#93a1a1;">);</span></code></div><div class="L5" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> r</span><span class="pun" style="color:#93a1a1;">.</span><span class="pln" style="color:#48484c;background-color: rgb(192, 192, 192);">internalNotifyRegistrant</span><span class="pun" style="color:#93a1a1;">(</span><span class="pln" style="color:#48484c;">result</span><span class="pun" style="color:#93a1a1;">,</span><span class="pln" style="color:#48484c;"> exception</span><span class="pun" style="color:#93a1a1;">);</span></code></div><div class="L6" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">}</span></code></div><div class="L7" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">}</span></code></div></div>
响应通知消息
<div class="linenums" style="margin-top: 0px; margin-bottom: 0px; padding-left: 0px;"><div class="L0" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="com" style="color:#93a1a1;">/*package*/</span><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">void</span></code></div><div class="L1" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> internalNotifyRegistrant </span><span class="pun" style="color:#93a1a1;">(</span><span class="typ" style="color:teal;">Object</span><span class="pln" style="color:#48484c;"> result</span><span class="pun" style="color:#93a1a1;">,</span><span class="pln" style="color:#48484c;"> </span><span class="typ" style="color:teal;">Throwable</span><span class="pln" style="color:#48484c;"> exception</span><span class="pun" style="color:#93a1a1;">)</span></code></div><div class="L2" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">{</span></code></div><div class="L3" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="typ" style="color:teal;">Handler</span><span class="pln" style="color:#48484c;"> h </span><span class="pun" style="color:#93a1a1;">=</span><span class="pln" style="color:#48484c;"> getHandler</span><span class="pun" style="color:#93a1a1;">();</span></code></div><div class="L4" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"> </code></div><div class="L5" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">if</span><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">(</span><span class="pln" style="color:#48484c;">h </span><span class="pun" style="color:#93a1a1;">==</span><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">null</span><span class="pun" style="color:#93a1a1;">)</span><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">{</span></code></div><div class="L6" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> clear</span><span class="pun" style="color:#93a1a1;">();</span></code></div><div class="L7" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">}</span><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">else</span><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">{</span></code></div><div class="L8" style="line-height: 18px; padding-left: 0px; list-style-type: none; color: rgb(190, 190, 197);"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="typ" style="color:teal;">Message</span><span class="pln" style="color:#48484c;"> msg </span><span class="pun" style="color:#93a1a1;">=</span><span class="pln" style="color:#48484c;"> </span><span class="typ" style="color:teal;">Message</span><span class="pun" style="color:#93a1a1;">.</span><span class="pln" style="color:#48484c;">obtain</span><span class="pun" style="color:#93a1a1;">();</span></code></div><div class="L9" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"> </code></div><div class="L0" style="line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#bebec5;"> msg</span><span class="pun" style="color:#bebec5;">.</span><span class="pln" style="color:#bebec5;">what </span><span class="pun" style="color:#bebec5;">=</span><span class="pln" style="color:#48484c;"><span style="color:#bebec5;"> </span><span style="color:#ff00;">what</span></span><span class="pun" style="color:#bebec5;">;</span></code></div><div class="L1" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span></code></div><div class="L2" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> msg</span><span class="pun" style="color:#93a1a1;">.</span><span class="pln" style="color:#48484c;">obj </span><span class="pun" style="color:#93a1a1;">=</span><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">new</span><span class="pln" style="color:#48484c;"> </span><span class="typ" style="color:teal;">AsyncResult</span><span class="pun" style="color:#93a1a1;">(</span><span class="pln" style="color:#48484c;">userObj</span><span class="pun" style="color:#93a1a1;">,</span><span class="pln" style="color:#48484c;"> result</span><span class="pun" style="color:#93a1a1;">,</span><span class="pln" style="color:#48484c;"> exception</span><span class="pun" style="color:#93a1a1;">);</span></code></div><div class="L3" style="line-height: 18px; padding-left: 0px; list-style-type: none; color: rgb(190, 190, 197);"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span></code></div><div class="L4" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> h</span><span class="pun" style="color:#93a1a1;">.</span><span class="pln" style="color:#48484c;background-color: rgb(192, 192, 192);">sendMessage</span><span class="pun" style="color:#93a1a1;">(</span><span class="pln" style="color:#48484c;">msg</span><span class="pun" style="color:#93a1a1;">);</span></code></div><div class="L5" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">}</span></code></div><div class="L6" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">}</span></code></div></div>
<div class="linenums" style="color: rgb(30, 52, 123); margin-top: 0px; margin-bottom: 0px; padding-left: 0px;"><div class="L0" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">private</span><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">final</span><span class="pln" style="color:#48484c;"> </span><span class="typ" style="color:teal;">Handler</span><span class="pln" style="color:#48484c;"> <span style="color:#ff00;">mHandler </span></span><span class="pun" style="color:#93a1a1;">=</span><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">new</span><span class="pln" style="color:#48484c;"> </span><span class="typ" style="color:teal;">Handler</span><span class="pun" style="color:#93a1a1;">()</span><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">{</span></code></div><div class="L1" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="lit" style="color:#195f91;">@Override</span></code></div><div class="L2" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">public</span><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">void</span><span class="pln" style="color:#48484c;"> handleMessage</span><span class="pun" style="color:#93a1a1;">(</span><span class="typ" style="color:teal;">Message</span><span class="pln" style="color:#48484c;"> msg</span><span class="pun" style="color:#93a1a1;">)</span><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">{</span></code></div><div class="L3" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">switch</span><span class="pun" style="color:#93a1a1;">(</span><span class="pln" style="color:#48484c;">msg</span><span class="pun" style="color:#93a1a1;">.</span><span class="pln" style="color:#48484c;">what</span><span class="pun" style="color:#93a1a1;">)</span><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">{</span></code></div><div class="L4" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">case</span><span class="pln" style="color:#48484c;"> <span style="background-color: rgb(192, 192, 192);">EVENT_NEW_RINGING_CONNECTION</span></span><span class="pun" style="color:#93a1a1;">:</span></code></div><div class="L5" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> handleNewRingingConnection</span><span class="pun" style="color:#93a1a1;">((</span><span class="typ" style="color:teal;">AsyncResult</span><span class="pun" style="color:#93a1a1;">)</span><span class="pln" style="color:#48484c;"> msg</span><span class="pun" style="color:#93a1a1;">.</span><span class="pln" style="color:#48484c;">obj</span><span class="pun" style="color:#93a1a1;">);</span></code></div><div class="L6" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">break</span><span class="pun" style="color:#93a1a1;">;</span></code></div><div class="L7" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">case</span><span class="pln" style="color:#48484c;"> EVENT_CDMA_CALL_WAITING</span><span class="pun" style="color:#93a1a1;">:</span></code></div><div class="L8" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> handleCdmaCallWaiting</span><span class="pun" style="color:#93a1a1;">((</span><span class="typ" style="color:teal;">AsyncResult</span><span class="pun" style="color:#93a1a1;">)</span><span class="pln" style="color:#48484c;"> msg</span><span class="pun" style="color:#93a1a1;">.</span><span class="pln" style="color:#48484c;">obj</span><span class="pun" style="color:#93a1a1;">);</span></code></div><div class="L9" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">break</span><span class="pun" style="color:#93a1a1;">;</span></code></div><div class="L0" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">case</span><span class="pln" style="color:#48484c;"> EVENT_UNKNOWN_CONNECTION</span><span class="pun" style="color:#93a1a1;">:</span></code></div><div class="L1" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> handleNewUnknownConnection</span><span class="pun" style="color:#93a1a1;">((</span><span class="typ" style="color:teal;">AsyncResult</span><span class="pun" style="color:#93a1a1;">)</span><span class="pln" style="color:#48484c;"> msg</span><span class="pun" style="color:#93a1a1;">.</span><span class="pln" style="color:#48484c;">obj</span><span class="pun" style="color:#93a1a1;">);</span></code></div><div class="L2" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">break</span><span class="pun" style="color:#93a1a1;">;</span></code></div><div class="L3" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">default</span><span class="pun" style="color:#93a1a1;">:</span></code></div><div class="L4" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="kwd" style="color:#1e347b;">break</span><span class="pun" style="color:#93a1a1;">;</span></code></div><div class="L5" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">}</span></code></div><div class="L6" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">}</span></code></div><div class="L7" style="color: rgb(190, 190, 197); line-height: 18px; padding-left: 0px; list-style-type: none;"><code class="language-java" style="font-family: Consolas, 'Liberation Mono', Menlo, Courier, monospace; word-wrap: break-word;"><span class="pln" style="color:#48484c;"> </span><span class="pun" style="color:#93a1a1;">};</span></code></div></div>
=====补充======
原文地址: http://blog.csdn.net/aaa111/article/details/43833757
Android 中 RegistrantList消息处理机制 以android 5.0 MT为例相关推荐
- android classloader异常,Android中ClassLoader类加载机制
Android中apk的构建过程 构建apk 如图 所示,典型 Android 应用模块的构建流程通常依循下列步骤: 编译器将您的源代码转换成 DEX(Dalvik Executable) 文件(其中 ...
- 浅析Android中的消息机制
在分析Android消息机制之前,我们先来看一段代码: [java] view plaincopy public class MainActivity extends Activity impleme ...
- 重温Android中的消息机制
引入: 提到Android中的消息机制,大家应该都不陌生,我们在开发中不可避免的要和它打交道.从我们开发的角度来看,Handler是Android消息机制的上层接口.我们在平时的开发中只需要和Hand ...
- 探索Android中的Parcel机制(上)
一.先从Serialize说起 我们都知道JAVA中的Serialize机制,译成串行化.序列化--,其作用是能将数据对象存入字节流其中,在须要时又一次生成对象.主要应用是利用外部存储设备保存对象状态 ...
- 探索Android中的Parcel机制(上) .
一.先从Serialize说起 我们都知道JAVA中的Serialize机制,译成串行化.序列化--,其作用是能将数据对象存入字节流当中,在需要时重新生成对象.主要应用是利用外部存储设备保存对象状态, ...
- Android中的消息机制
Android 中的消息机制其实就是指的是 Handler 消息机制以及附带的 Looper 和 MessageQueue 的工作流程. 1.Android 为什么提供Handler? 解决子线程不能 ...
- Android中Alarm的机制
本次给大家分析的是Android中Alarm的机制所用源码为最新的Android4.4.4.首先简单介绍如何使用Alarm并给出其工作原理,接着分析Alarm和Timer以及Handler在完成定时任 ...
- 探索Android中的Parcel机制(下)
上一篇中我们透过源码看到了Parcel背后的机制,本质上把它当成一个Serialize就可以了,只是它是在内存中完成的序列化和反序列化,利用的是连续的内存空间,因此会更加高效. 我们接下来要说的是Pa ...
- android系统的alarm机制,Android中Alarm的机制
本次给大家分析的是Android中Alarm的机制所用源码为最新的Android4.4.4.首先简单介绍如何使用Alarm并给出其工作原理,接着分析Alarm和Timer以及Handler在完成定时任 ...
最新文章
- 学习笔记(十四)——MySQL(CRUD)
- python安全攻防---scapy基础---计算机网络各层协议
- 1380C. Create The Teams
- 一种基于邻域的聚类算法
- 苹果叒要开发布会了!多款新机曝光,Intel不淡定了
- 郑州轻工业学校计算机网络,计算机网络期末考试a卷(郑州轻工业学院).doc
- python 复制列表内容_Python复制列表列表
- jmeter 计数器_jmeter函数(六)
- 免费获取小红伞互联网安全套装2012-90天的小红伞2012激活码激活密钥小红伞
- 软件工程基础知识--系统设计
- NVIDIA Jetson TK1学习与开发(二):入门指导
- BiliBili 扭蛋机
- 微信二维码没有扫描id
- T1114 白细胞计数(信息学一本通C++)
- 【阅读笔记】低照度图像增强-《Fast efficient algorithm for enhancement of low lighting video》
- 最菜的我之打卡第三天
- 微信小程序图片等比缩放显示正中间
- linux xxd命令
- 林达华-和机器学习和计算机视觉相关的数学
- php redis 删除key 通配符,php redis 批量删除keys的方法