<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
  <title>Rouse</title>
  
  <link href="/atom.xml" rel="self"/>
  
  <link href="https://www.rousetime.com/"/>
  <updated>2024-05-06T15:21:12.516Z</updated>
  <id>https://www.rousetime.com/</id>
  
  <author>
    <name>Rouse</name>
    
  </author>
  
  <generator uri="http://hexo.io/">Hexo</generator>
  
  <entry>
    <title>竟如此简单，一文看懂DecorView的一生</title>
    <link href="https://www.rousetime.com/2024/05/06/%E7%AB%9F%E5%A6%82%E6%AD%A4%E7%AE%80%E5%8D%95%EF%BC%8C%E4%B8%80%E6%96%87%E7%9C%8B%E6%87%82DecorView%E7%9A%84%E4%B8%80%E7%94%9F/"/>
    <id>https://www.rousetime.com/2024/05/06/竟如此简单，一文看懂DecorView的一生/</id>
    <published>2024-05-06T15:20:46.000Z</published>
    <updated>2024-05-06T15:21:12.516Z</updated>
    
    <content type="html">&lt;p&gt;&lt;code&gt;DecorView&lt;/code&gt;&amp;#x662F;Android&amp;#x5E94;&amp;#x7528;&amp;#x7A0B;&amp;#x5E8F;&amp;#x4E2D;&amp;#x6240;&amp;#x6709;&amp;#x89C6;&amp;#x56FE;&amp;#x7684;&amp;#x6839;&amp;#x89C6;&amp;#x56FE;&amp;#x3002;&amp;#x5B83;&amp;#x662F;&amp;#x6846;&amp;#x67B6;&amp;#x7528;&amp;#x6765;&amp;#x7BA1;&amp;#x7406;&amp;#x548C;&amp;#x663E;&amp;#x793A;&amp;#x5E94;&amp;#x7528;&amp;#x7A0B;&amp;#x5E8F;&amp;#x754C;&amp;#x9762;&amp;#x7684;&amp;#x6838;&amp;#x5FC3;&amp;#x7EC4;&amp;#x4EF6;&amp;#x4E4B;&amp;#x4E00;&amp;#x3002;&amp;#x7406;&amp;#x89E3;&lt;code&gt;DecorView&lt;/code&gt;&amp;#x7684;&amp;#x521B;&amp;#x5EFA;&amp;#x6D41;&amp;#x7A0B;&amp;#x5BF9;&amp;#x4E8E;&amp;#x7406;&amp;#x89E3;Android&amp;#x89C6;&amp;#x56FE;&amp;#x7CFB;&amp;#x7EDF;&amp;#x7684;&amp;#x8FD0;&amp;#x4F5C;&amp;#x65B9;&amp;#x5F0F;&amp;#x81F3;&amp;#x5173;&amp;#x91CD;&amp;#x8981;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x7B80;&amp;#x4ECB;&quot;&gt;&lt;a href=&quot;#&amp;#x7B80;&amp;#x4ECB;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x7B80;&amp;#x4ECB;&quot;&gt;&lt;/a&gt;&amp;#x7B80;&amp;#x4ECB;&lt;/h2&gt;&lt;p&gt;DecorView&amp;#x7684;&amp;#x4E3B;&amp;#x8981;&amp;#x89D2;&amp;#x8272;&amp;#x662F;&amp;#x4F5C;&amp;#x4E3A;&amp;#x9876;&amp;#x5C42;&amp;#x5BB9;&amp;#x5668;&amp;#xFF0C;&amp;#x627F;&amp;#x8F7D;&amp;#x7740;&amp;#x5E94;&amp;#x7528;&amp;#x7684;&amp;#x89C6;&amp;#x56FE;&amp;#x7ED3;&amp;#x6784;&amp;#x3002;&amp;#x5F53;&amp;#x5728;&amp;#x5E94;&amp;#x7528;&amp;#x4E2D;&amp;#x4F7F;&amp;#x7528;setContentView&amp;#x65B9;&amp;#x6CD5;&amp;#x52A0;&amp;#x8F7D;&amp;#x5E03;&amp;#x5C40;&amp;#x65F6;&amp;#xFF0C;&amp;#x5B9E;&amp;#x9645;&amp;#x4E0A;&amp;#x662F;&amp;#x5C06;&amp;#x8FD9;&amp;#x4E2A;&amp;#x5E03;&amp;#x5C40;&amp;#x4F5C;&amp;#x4E3A;&amp;#x5B50;&amp;#x89C6;&amp;#x56FE;&amp;#x6DFB;&amp;#x52A0;&amp;#x5230;DecorView&amp;#x4E2D;&amp;#x3002;&amp;#x56E0;&amp;#x6B64;&amp;#xFF0C;DecorView&amp;#x5B9A;&amp;#x4E49;&amp;#x4E86;&amp;#x5E94;&amp;#x7528;&amp;#x754C;&amp;#x9762;&amp;#x7684;&amp;#x8FB9;&amp;#x754C;&amp;#xFF0C;&amp;#x6240;&amp;#x6709;&amp;#x7684;&amp;#x89C6;&amp;#x56FE;&amp;#x90FD;&amp;#x5728;&amp;#x8FD9;&amp;#x4E2A;&amp;#x8FB9;&amp;#x754C;&amp;#x5185;&amp;#x8FDB;&amp;#x884C;&amp;#x7ED8;&amp;#x5236;&amp;#x548C;&amp;#x4E8B;&amp;#x4EF6;&amp;#x5206;&amp;#x53D1;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x4E0B;&amp;#x9762;&amp;#x6211;&amp;#x4EEC;&amp;#x6765;&amp;#x8BF4;&amp;#x4E00;&amp;#x4E0B;&amp;#xFF0C;DecorView&amp;#x4E0E;Window&amp;#x3001;Activity&amp;#x548C;ViewRootImpl&amp;#x4E4B;&amp;#x95F4;&amp;#x7684;&amp;#x5173;&amp;#x7CFB;&amp;#xFF0C;&amp;#x8FD9;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x597D;&amp;#x5730;&amp;#x5E2E;&amp;#x52A9;&amp;#x6211;&amp;#x4EEC;&amp;#x7406;&amp;#x89E3;&amp;#x5E94;&amp;#x7528;&amp;#x7684;&amp;#x89C6;&amp;#x56FE;&amp;#x5C42;&amp;#x6B21;&amp;#x7ED3;&amp;#x6784;&amp;#x3002;&lt;/p&gt;
&lt;h3 id=&quot;&amp;#x4E0E;Window&amp;#x7684;&amp;#x5173;&amp;#x7CFB;&quot;&gt;&lt;a href=&quot;#&amp;#x4E0E;Window&amp;#x7684;&amp;#x5173;&amp;#x7CFB;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4E0E;Window&amp;#x7684;&amp;#x5173;&amp;#x7CFB;&quot;&gt;&lt;/a&gt;&amp;#x4E0E;Window&amp;#x7684;&amp;#x5173;&amp;#x7CFB;&lt;/h3&gt;&lt;p&gt;Window&amp;#x662F;Android&amp;#x4E2D;&amp;#x7684;&amp;#x4E00;&amp;#x4E2A;&amp;#x62BD;&amp;#x8C61;&amp;#x6982;&amp;#x5FF5;&amp;#xFF0C;&amp;#x4EE3;&amp;#x8868;&amp;#x7740;&amp;#x5C4F;&amp;#x5E55;&amp;#x4E0A;&amp;#x7684;&amp;#x4E00;&amp;#x5757;&amp;#x533A;&amp;#x57DF;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x7528;&amp;#x6765;&amp;#x663E;&amp;#x793A;&amp;#x89C6;&amp;#x56FE;&amp;#x3002;&amp;#x6BCF;&amp;#x4E2A;Activity&amp;#x90FD;&amp;#x4F1A;&amp;#x88AB;&amp;#x8D4B;&amp;#x4E88;&amp;#x4E00;&amp;#x4E2A;Window&amp;#xFF0C;&amp;#x800C;&amp;#x8FD9;&amp;#x4E2A;Window&amp;#x5219;&amp;#x8D1F;&amp;#x8D23;&amp;#x627F;&amp;#x8F7D;DecorView&amp;#x3002;&amp;#x7B80;&amp;#x5355;&amp;#x6765;&amp;#x8BF4;&amp;#xFF0C;Window&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x663E;&amp;#x793A;DecorView&amp;#x7684;&amp;#x5BB9;&amp;#x5668;&amp;#x3002;&amp;#x5728;Android&amp;#x4E2D;&amp;#xFF0C;Window&amp;#x548C;View&amp;#x901A;&amp;#x8FC7;WindowManager&amp;#x670D;&amp;#x52A1;&amp;#x6765;&amp;#x7BA1;&amp;#x7406;&amp;#xFF0C;WindowManager&amp;#x8D1F;&amp;#x8D23;&amp;#x5C06;Window&amp;#xFF08;&amp;#x53CA;&amp;#x5176;&amp;#x5305;&amp;#x542B;&amp;#x7684;DecorView&amp;#xFF09;&amp;#x653E;&amp;#x7F6E;&amp;#x5230;&amp;#x5C4F;&amp;#x5E55;&amp;#x4E0A;&amp;#x7684;&amp;#x6B63;&amp;#x786E;&amp;#x4F4D;&amp;#x7F6E;&amp;#x3002;&lt;/p&gt;
&lt;h3 id=&quot;&amp;#x4E0E;Activity&amp;#x7684;&amp;#x5173;&amp;#x7CFB;&quot;&gt;&lt;a href=&quot;#&amp;#x4E0E;Activity&amp;#x7684;&amp;#x5173;&amp;#x7CFB;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4E0E;Activity&amp;#x7684;&amp;#x5173;&amp;#x7CFB;&quot;&gt;&lt;/a&gt;&amp;#x4E0E;Activity&amp;#x7684;&amp;#x5173;&amp;#x7CFB;&lt;/h3&gt;&lt;p&gt;Activity&amp;#x662F;Android&amp;#x5E94;&amp;#x7528;&amp;#x4E2D;&amp;#x7684;&amp;#x4E00;&amp;#x4E2A;&amp;#x57FA;&amp;#x672C;&amp;#x7EC4;&amp;#x4EF6;&amp;#xFF0C;&amp;#x8D1F;&amp;#x8D23;&amp;#x521B;&amp;#x5EFA;&amp;#x7528;&amp;#x6237;&amp;#x754C;&amp;#x9762;&amp;#x3002;&amp;#x6BCF;&amp;#x4E2A;Activity&amp;#x90FD;&amp;#x4F1A;&amp;#x6709;&amp;#x4E00;&amp;#x4E2A;&amp;#x4E0E;&amp;#x4E4B;&amp;#x5173;&amp;#x8054;&amp;#x7684;Window&amp;#xFF0C;&amp;#x800C;&amp;#x8FD9;&amp;#x4E2A;Window&amp;#x5219;&amp;#x627F;&amp;#x8F7D;&amp;#x7740;DecorView&amp;#x3002;&amp;#x5728;Activity&amp;#x7684;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x4E2D;&amp;#xFF0C;&amp;#x5F53;&amp;#x8C03;&amp;#x7528;&lt;code&gt;setContentView&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x65F6;&amp;#xFF0C;&amp;#x7CFB;&amp;#x7EDF;&amp;#x5C31;&amp;#x4F1A;&amp;#x5F00;&amp;#x59CB;&amp;#x6784;&amp;#x5EFA;&amp;#x89C6;&amp;#x56FE;&amp;#x5C42;&amp;#x6B21;&amp;#x7ED3;&amp;#x6784;&amp;#xFF0C;&amp;#x5C06;&amp;#x6307;&amp;#x5B9A;&amp;#x7684;&amp;#x5E03;&amp;#x5C40;&amp;#x6587;&amp;#x4EF6;&amp;#x52A0;&amp;#x8F7D;&amp;#x5230;&amp;#x5F53;&amp;#x524D;Activity&amp;#x7684;Window&amp;#x6240;&amp;#x5173;&amp;#x8054;&amp;#x7684;DecorView&amp;#x4E2D;&amp;#x3002;&lt;/p&gt;
&lt;h3 id=&quot;&amp;#x4E0E;ViewRootImpl&amp;#x7684;&amp;#x5173;&amp;#x7CFB;&quot;&gt;&lt;a href=&quot;#&amp;#x4E0E;ViewRootImpl&amp;#x7684;&amp;#x5173;&amp;#x7CFB;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4E0E;ViewRootImpl&amp;#x7684;&amp;#x5173;&amp;#x7CFB;&quot;&gt;&lt;/a&gt;&amp;#x4E0E;ViewRootImpl&amp;#x7684;&amp;#x5173;&amp;#x7CFB;&lt;/h3&gt;&lt;p&gt;ViewRootImpl&amp;#x662F;Android UI&amp;#x7CFB;&amp;#x7EDF;&amp;#x7684;&amp;#x5185;&amp;#x90E8;&amp;#x673A;&amp;#x5236;&amp;#xFF0C;&amp;#x4F5C;&amp;#x4E3A;&amp;#x6865;&amp;#x6881;&amp;#x8FDE;&amp;#x63A5;Window&amp;#x548C;DecorView&amp;#x3002;&amp;#x5B83;&amp;#x8D1F;&amp;#x8D23;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x89C6;&amp;#x56FE;&amp;#x5C42;&amp;#x6B21;&amp;#x7ED3;&amp;#x6784;&amp;#x7684;&amp;#x6839;&amp;#xFF0C;&amp;#x5904;&amp;#x7406;&amp;#x5E03;&amp;#x5C40;&amp;#x3001;&amp;#x7ED8;&amp;#x5236;&amp;#x3001;&amp;#x4E8B;&amp;#x4EF6;&amp;#x5206;&amp;#x53D1;&amp;#x7B49;&amp;#x3002;&amp;#x5F53;&amp;#x4E00;&amp;#x4E2A;Activity&amp;#x7684;&amp;#x89C6;&amp;#x56FE;&amp;#x88AB;&amp;#x8BBE;&amp;#x7F6E;&amp;#x6216;&amp;#x8005;&amp;#x7A97;&amp;#x53E3;&amp;#x53D1;&amp;#x751F;&amp;#x53D8;&amp;#x5316;&amp;#x65F6;&amp;#xFF0C;ViewRootImpl&amp;#x786E;&amp;#x4FDD;DecorView&amp;#x5F97;&amp;#x5230;&amp;#x66F4;&amp;#x65B0;&amp;#x548C;&amp;#x91CD;&amp;#x65B0;&amp;#x7ED8;&amp;#x5236;&amp;#x3002;ViewRootImpl&amp;#x662F;&amp;#x4E0D;&amp;#x5BF9;&amp;#x5F00;&amp;#x53D1;&amp;#x8005;&amp;#x516C;&amp;#x5F00;&amp;#x7684;&amp;#xFF0C;&amp;#x4F46;&amp;#x5B83;&amp;#x5728;&amp;#x89C6;&amp;#x56FE;&amp;#x6E32;&amp;#x67D3;&amp;#x548C;&amp;#x4E8B;&amp;#x4EF6;&amp;#x5904;&amp;#x7406;&amp;#x8FC7;&amp;#x7A0B;&amp;#x4E2D;&amp;#x8D77;&amp;#x7740;&amp;#x5173;&amp;#x952E;&amp;#x4F5C;&amp;#x7528;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x521B;&amp;#x5EFA;&amp;#x6D41;&amp;#x7A0B;&quot;&gt;&lt;a href=&quot;#&amp;#x521B;&amp;#x5EFA;&amp;#x6D41;&amp;#x7A0B;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x521B;&amp;#x5EFA;&amp;#x6D41;&amp;#x7A0B;&quot;&gt;&lt;/a&gt;&amp;#x521B;&amp;#x5EFA;&amp;#x6D41;&amp;#x7A0B;&lt;/h2&gt;&lt;p&gt;DecorView&amp;#x7684;&amp;#x521B;&amp;#x5EFA;&amp;#x901A;&amp;#x5E38;&amp;#x5728;Activity&amp;#x7684;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x7684;onCreate&amp;#x65B9;&amp;#x6CD5;&amp;#x4E2D;&amp;#x5F00;&amp;#x59CB;&amp;#xFF0C;&amp;#x5177;&amp;#x4F53;&amp;#x662F;&amp;#x901A;&amp;#x8FC7;&amp;#x8C03;&amp;#x7528;setContentView&amp;#x65B9;&amp;#x6CD5;&amp;#x89E6;&amp;#x53D1;&amp;#x7684;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x5F53;Activity&amp;#x7684;&lt;code&gt;setContentView&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x88AB;&amp;#x8C03;&amp;#x7528;&amp;#x65F6;&amp;#xFF0C;&amp;#x80CC;&amp;#x540E;&amp;#x7684;LayoutInflater&amp;#x5C31;&amp;#x5F00;&amp;#x59CB;&amp;#x53D1;&amp;#x6325;&amp;#x4F5C;&amp;#x7528;&amp;#x3002;&amp;#x8FD9;&amp;#x4E2A;&amp;#x65B9;&amp;#x6CD5;&amp;#x63A5;&amp;#x53D7;&amp;#x4E00;&amp;#x4E2A;&amp;#x5E03;&amp;#x5C40;&amp;#x8D44;&amp;#x6E90;ID&amp;#xFF0C;&amp;#x7136;&amp;#x540E;LayoutInflater&amp;#x8D1F;&amp;#x8D23;&amp;#x627E;&amp;#x5230;&amp;#x5BF9;&amp;#x5E94;&amp;#x7684;&amp;#x5E03;&amp;#x5C40;&amp;#x6587;&amp;#x4EF6;&amp;#xFF0C;&amp;#x89E3;&amp;#x6790;&amp;#x5B83;&amp;#xFF0C;&amp;#x5E76;&amp;#x6839;&amp;#x636E;&amp;#x6587;&amp;#x4EF6;&amp;#x4E2D;&amp;#x7684;&amp;#x5B9A;&amp;#x4E49;&amp;#x6784;&amp;#x5EFA;&amp;#x51FA;&amp;#x4E00;&amp;#x4E2A;&amp;#x5B8C;&amp;#x6574;&amp;#x7684;View&amp;#x6811;&amp;#x3002;&amp;#x8FD9;&amp;#x4E2A;View&amp;#x6811;&amp;#x968F;&amp;#x540E;&amp;#x88AB;&amp;#x8BBE;&amp;#x7F6E;&amp;#x4E3A;Activity&amp;#x7684;&amp;#x5185;&amp;#x5BB9;&amp;#x89C6;&amp;#x56FE;&amp;#xFF0C;&amp;#x5B9E;&amp;#x8D28;&amp;#x4E0A;&amp;#x662F;&amp;#x88AB;&amp;#x6DFB;&amp;#x52A0;&amp;#x5230;Activity&amp;#x6240;&amp;#x5173;&amp;#x8054;&amp;#x7684;Window&amp;#x7684;DecorView&amp;#x4E2D;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x7C7B;&amp;#x4F3C;&amp;#x4E8E;&amp;#x6211;&amp;#x4EEC;&amp;#x76F4;&amp;#x63A5;&amp;#x4F7F;&amp;#x7528;LayoutInflater&amp;#x52A0;&amp;#x8F7D;&amp;#x83B7;&amp;#x53D6;&amp;#x5230;View&amp;#x662F;&amp;#x4E00;&amp;#x6837;&amp;#x7684;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;onCreate&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(savedInstanceState: &lt;span class=&quot;type&quot;&gt;Bundle&lt;/span&gt;?)&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;super&lt;/span&gt;.onCreate(savedInstanceState)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x4F7F;&amp;#x7528;LayoutInflater&amp;#x52A0;&amp;#x8F7D;&amp;#x5E03;&amp;#x5C40;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; inflater = LayoutInflater.from(&lt;span class=&quot;keyword&quot;&gt;this&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; view = inflater.inflate(R.layout.activity_main, &lt;span class=&quot;literal&quot;&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    setContentView(view)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x6240;&amp;#x4EE5;&amp;#xFF0C;DecorView&amp;#x7684;&amp;#x521B;&amp;#x5EFA;&amp;#x4E4B;&amp;#x524D;&amp;#xFF0C;&amp;#x9700;&amp;#x8981;&amp;#x7ECF;&amp;#x8FC7;Activity&amp;#x7684;&amp;#x542F;&amp;#x52A8;&amp;#x3002;&lt;/p&gt;
&lt;h3 id=&quot;&amp;#x521B;&amp;#x5EFA;PhoneWindow&quot;&gt;&lt;a href=&quot;#&amp;#x521B;&amp;#x5EFA;PhoneWindow&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x521B;&amp;#x5EFA;PhoneWindow&quot;&gt;&lt;/a&gt;&amp;#x521B;&amp;#x5EFA;PhoneWindow&lt;/h3&gt;&lt;p&gt;&amp;#x5728; Activity &amp;#x7684; attach() &amp;#x65B9;&amp;#x6CD5;&amp;#x4E2D;&amp;#xFF0C;&amp;#x4F1A;&amp;#x521B;&amp;#x5EFA;&amp;#x4E00;&amp;#x4E2A; PhoneWindow &amp;#x5BF9;&amp;#x8C61;&amp;#x3002;PhoneWindow &amp;#x662F; Window &amp;#x7684;&amp;#x4E00;&amp;#x4E2A;&amp;#x5B50;&amp;#x7C7B;&amp;#xFF0C;&amp;#x5B83;&amp;#x8D1F;&amp;#x8D23;&amp;#x7BA1;&amp;#x7406;&amp;#x5E94;&amp;#x7528;&amp;#x7A0B;&amp;#x5E8F;&amp;#x7A97;&amp;#x53E3;&amp;#x7684;&amp;#x5916;&amp;#x89C2;&amp;#x548C;&amp;#x884C;&amp;#x4E3A;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;final void attach(Context context, ActivityThread aThread,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        Instrumentation instr, IBinder token, int ident,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        Application application, Intent intent, ActivityInfo info,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        CharSequence title, Activity parent, String id,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        NonConfigurationInstances lastNonConfigurationInstances,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        Configuration config, String referrer, IVoiceInteractor voiceInteractor,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        Window window, ActivityConfigCallback activityConfigCallback, IBinder assistToken,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        IBinder shareableActivityToken) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    attachBaseContext(context);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    mFragments.attachHost(null /*parent*/);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    mActivityInfo = info;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    // &amp;#x521B;&amp;#x5EFA;Window&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    mWindow = new PhoneWindow(this, window, activityConfigCallback);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    mWindow.setWindowControllerCallback(mWindowControllerCallback);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    mWindow.setCallback(this);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    mWindow.setOnWindowDismissedCallback(this);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    mWindow.getLayoutInflater().setPrivateFactory(this);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    ....&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x5728;PhoneWindow&amp;#x4E2D;&amp;#xFF0C;&amp;#x4F1A;&amp;#x521D;&amp;#x59CB;&amp;#x5316;DecorView&amp;#xFF0C;&amp;#x4F46;&amp;#x5B83;&amp;#x7684;&amp;#x89E6;&amp;#x53D1;&amp;#x903B;&amp;#x8F91;&amp;#x662F;&amp;#x5728;&amp;#x8C03;&amp;#x7528;&lt;code&gt;setContentView&lt;/code&gt;&amp;#x7684;&amp;#x65F6;&amp;#x5019;&lt;/p&gt;
&lt;h3 id=&quot;&amp;#x521D;&amp;#x59CB;&amp;#x5316;DecorView&quot;&gt;&lt;a href=&quot;#&amp;#x521D;&amp;#x59CB;&amp;#x5316;DecorView&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x521D;&amp;#x59CB;&amp;#x5316;DecorView&quot;&gt;&lt;/a&gt;&amp;#x521D;&amp;#x59CB;&amp;#x5316;DecorView&lt;/h3&gt;&lt;p&gt;&amp;#x5F53;Activity&amp;#x542F;&amp;#x52A8;&amp;#x65F6;&amp;#xFF0C;&amp;#x5728;&lt;code&gt;onCreate&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x4E2D;&amp;#x901A;&amp;#x5E38;&amp;#x4F1A;&amp;#x8C03;&amp;#x7528;&lt;code&gt;setContentView&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x6765;&amp;#x8BBE;&amp;#x7F6E;Activity&amp;#x7684;&amp;#x7528;&amp;#x6237;&amp;#x754C;&amp;#x9762;&amp;#x5E03;&amp;#x5C40;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;onCreate&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(savedInstanceState: &lt;span class=&quot;type&quot;&gt;Bundle&lt;/span&gt;?)&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;super&lt;/span&gt;.onCreate(savedInstanceState)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    setContentView(R.layout.activity_main)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x8FD9;&amp;#x6BB5;&amp;#x4EE3;&amp;#x7801;&amp;#x4E2D;&amp;#xFF0C;&lt;code&gt;setContentView&lt;/code&gt;&amp;#x662F;&lt;code&gt;Activity&lt;/code&gt;&amp;#x7C7B;&amp;#x4E2D;&amp;#x7684;&amp;#x4E00;&amp;#x4E2A;&amp;#x65B9;&amp;#x6CD5;&amp;#xFF0C;&amp;#x5B83;&amp;#x63A5;&amp;#x53D7;&amp;#x4E00;&amp;#x4E2A;&amp;#x5E03;&amp;#x5C40;&amp;#x8D44;&amp;#x6E90;ID&amp;#xFF0C;&amp;#x7528;&amp;#x4E8E;&amp;#x6307;&amp;#x5B9A;Activity&amp;#x7684;&amp;#x5E03;&amp;#x5C40;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x5728;Activity&amp;#x7684;&lt;code&gt;setContentView&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x5185;&amp;#x90E8;&amp;#xFF0C;&amp;#x4F1A;&amp;#x8FDB;&amp;#x884C;&amp;#x4EE5;&amp;#x4E0B;&amp;#x51E0;&amp;#x4E2A;&amp;#x5173;&amp;#x952E;&amp;#x6B65;&amp;#x9AA4;&amp;#xFF1A;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x83B7;&amp;#x53D6;Window&lt;/strong&gt;: &amp;#x9996;&amp;#x5148;&amp;#xFF0C;&lt;code&gt;setContentView&lt;/code&gt;&amp;#x901A;&amp;#x8FC7;&lt;code&gt;getWindow()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x83B7;&amp;#x53D6;&amp;#x5F53;&amp;#x524D;Activity&amp;#x7684;Window&amp;#x5BF9;&amp;#x8C61;&amp;#x3002;Window&amp;#x5BF9;&amp;#x8C61;&amp;#x4EE3;&amp;#x8868;&amp;#x4E86;Android&amp;#x7A97;&amp;#x53E3;&amp;#x7BA1;&amp;#x7406;&amp;#x7CFB;&amp;#x7EDF;&amp;#x4E2D;&amp;#x7684;&amp;#x4E00;&amp;#x4E2A;&amp;#x7A97;&amp;#x53E3;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x5E03;&amp;#x5C40;&amp;#x89E3;&amp;#x6790;&lt;/strong&gt;: &amp;#x4F7F;&amp;#x7528;LayoutInflater&amp;#x89E3;&amp;#x6790;&amp;#x6307;&amp;#x5B9A;&amp;#x7684;&amp;#x5E03;&amp;#x5C40;&amp;#x8D44;&amp;#x6E90;ID&amp;#x3002;&amp;#x8FD9;&amp;#x4E2A;&amp;#x8FC7;&amp;#x7A0B;&amp;#x4F1A;&amp;#x6839;&amp;#x636E;&amp;#x5E03;&amp;#x5C40;&amp;#x6587;&amp;#x4EF6;&amp;#x4E2D;&amp;#x7684;&amp;#x5B9A;&amp;#x4E49;&amp;#xFF0C;&amp;#x521B;&amp;#x5EFA;&amp;#x51FA;&amp;#x5BF9;&amp;#x5E94;&amp;#x7684;View&amp;#x5BF9;&amp;#x8C61;&amp;#xFF0C;&amp;#x5E76;&amp;#x6309;&amp;#x7167;&amp;#x5E03;&amp;#x5C40;&amp;#x6587;&amp;#x4EF6;&amp;#x7684;&amp;#x5C42;&amp;#x6B21;&amp;#x7ED3;&amp;#x6784;&amp;#x7EC4;&amp;#x88C5;&amp;#x8FD9;&amp;#x4E9B;&amp;#x5BF9;&amp;#x8C61;&amp;#xFF0C;&amp;#x5F62;&amp;#x6210;&amp;#x4E00;&amp;#x4E2A;&amp;#x5B8C;&amp;#x6574;&amp;#x7684;&amp;#x89C6;&amp;#x56FE;&amp;#x6811;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x8BBE;&amp;#x7F6E;&amp;#x5185;&amp;#x5BB9;&amp;#x89C6;&amp;#x56FE;&lt;/strong&gt;: &amp;#x901A;&amp;#x8FC7;Window&amp;#x7684;&lt;code&gt;setContentView&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#xFF0C;&amp;#x5C06;&amp;#x89E3;&amp;#x6790;&amp;#x597D;&amp;#x7684;&amp;#x89C6;&amp;#x56FE;&amp;#x6811;&amp;#x8BBE;&amp;#x7F6E;&amp;#x4E3A;Window&amp;#x7684;&amp;#x5185;&amp;#x5BB9;&amp;#x89C6;&amp;#x56FE;&amp;#x3002;&amp;#x8FD9;&amp;#x4E2A;&amp;#x89C6;&amp;#x56FE;&amp;#x6811;&amp;#x7684;&amp;#x6839;&amp;#x8282;&amp;#x70B9;&amp;#xFF0C;&amp;#x5C31;&amp;#x662F;&amp;#x6211;&amp;#x4EEC;&amp;#x6240;&amp;#x8BF4;&amp;#x7684;DecorView&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;setContentView&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(&lt;span class=&quot;keyword&quot;&gt;int&lt;/span&gt; layoutResID)&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    getWindow().setContentView(layoutResID);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    initWindowDecorActionBar();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;Window&amp;#x7684;&lt;code&gt;setContentView&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x5185;&amp;#x90E8;&amp;#xFF0C;&amp;#x8FDB;&amp;#x4E00;&amp;#x6B65;&amp;#x8C03;&amp;#x7528;&amp;#x4E86;&lt;code&gt;PhoneWindow&lt;/code&gt;&amp;#x7684;&lt;code&gt;setContentView&lt;/code&gt;&amp;#x5B9E;&amp;#x73B0;&amp;#x3002;&amp;#x5728;&amp;#x8FD9;&amp;#x4E2A;&amp;#x65B9;&amp;#x6CD5;&amp;#x4E2D;&amp;#xFF0C;&amp;#x4F1A;&amp;#x521B;&amp;#x5EFA;&amp;#x6216;&amp;#x627E;&amp;#x5230;DecorView&amp;#xFF0C;&amp;#x7136;&amp;#x540E;&amp;#x5C06;&amp;#x89E3;&amp;#x6790;&amp;#x7684;&amp;#x89C6;&amp;#x56FE;&amp;#x6811;&amp;#x6DFB;&amp;#x52A0;&amp;#x5230;DecorView&amp;#x4E2D;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;22&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;23&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;meta&quot;&gt;@Override&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;setContentView&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(&lt;span class=&quot;keyword&quot;&gt;int&lt;/span&gt; layoutResID)&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x786E;&amp;#x4FDD;DecorView&amp;#x5DF2;&amp;#x7ECF;&amp;#x88AB;&amp;#x521B;&amp;#x5EFA;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt; (mContentParent == &lt;span class=&quot;keyword&quot;&gt;null&lt;/span&gt;) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        installDecor();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    } &lt;span class=&quot;keyword&quot;&gt;else&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt; (!hasFeature(FEATURE_CONTENT_TRANSITIONS)) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        mContentParent.removeAllViews();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt; (hasFeature(FEATURE_CONTENT_TRANSITIONS)) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;final&lt;/span&gt; Scene newScene = Scene.getSceneForLayout(mContentParent, layoutResID,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                getContext());&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        transitionTo(newScene);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    } &lt;span class=&quot;keyword&quot;&gt;else&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        mLayoutInflater.inflate(layoutResID, mContentParent);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    mContentParent.requestApplyInsets();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;final&lt;/span&gt; Callback cb = getCallback();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt; (cb != &lt;span class=&quot;keyword&quot;&gt;null&lt;/span&gt; &amp;amp;&amp;amp; !isDestroyed()) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        cb.onContentChanged();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    mContentParentExplicitlySet = &lt;span class=&quot;keyword&quot;&gt;true&lt;/span&gt;;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&lt;code&gt;installDecor&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x8D1F;&amp;#x8D23;&amp;#x521D;&amp;#x59CB;&amp;#x5316;DecorView&amp;#x3002;&amp;#x5982;&amp;#x679C;DecorView&amp;#x8FD8;&amp;#x6CA1;&amp;#x6709;&amp;#x88AB;&amp;#x521B;&amp;#x5EFA;&amp;#xFF0C;&lt;code&gt;PhoneWindow&lt;/code&gt;&amp;#x4F1A;&amp;#x521B;&amp;#x5EFA;&amp;#x4E00;&amp;#x4E2A;&amp;#x65B0;&amp;#x7684;DecorView&amp;#x5B9E;&amp;#x4F8B;&amp;#xFF0C;&amp;#x5E76;&amp;#x5C06;&amp;#x5176;&amp;#x8BBE;&amp;#x7F6E;&amp;#x4E3A;&amp;#x7A97;&amp;#x53E3;&amp;#x7684;&amp;#x6839;&amp;#x89C6;&amp;#x56FE;&amp;#x3002;&amp;#x63A5;&amp;#x7740;&amp;#xFF0C;&amp;#x89E3;&amp;#x6790;&amp;#x7684;&amp;#x89C6;&amp;#x56FE;&amp;#x6811;&amp;#xFF08;&amp;#x5373;Activity&amp;#x7684;&amp;#x5E03;&amp;#x5C40;&amp;#xFF09;&amp;#x88AB;&amp;#x6DFB;&amp;#x52A0;&amp;#x5230;DecorView&amp;#x4E2D;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;installDecor&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt; (mDecor == &lt;span class=&quot;keyword&quot;&gt;null&lt;/span&gt;) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        mDecor = generateDecor(-&lt;span class=&quot;number&quot;&gt;1&lt;/span&gt;);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        mDecor.setDescendantFocusability(ViewGroup.FOCUS_AFTER_DESCENDANTS);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        mDecor.setIsRootNamespace(&lt;span class=&quot;keyword&quot;&gt;true&lt;/span&gt;);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        ...&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    } &lt;span class=&quot;keyword&quot;&gt;else&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        ...&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt; (mContentParent == &lt;span class=&quot;keyword&quot;&gt;null&lt;/span&gt;) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        mContentParent = generateLayout(mDecor);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x5176;&amp;#x4ED6;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x4EE3;&amp;#x7801;...&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x901A;&amp;#x8FC7;&amp;#x8FD9;&amp;#x4E2A;&amp;#x6D41;&amp;#x7A0B;&amp;#xFF0C;DecorView&amp;#x88AB;&amp;#x521B;&amp;#x5EFA;&amp;#x5E76;&amp;#x4F5C;&amp;#x4E3A;Window&amp;#x7684;&amp;#x5185;&amp;#x5BB9;&amp;#x89C6;&amp;#x56FE;&amp;#x3002;&amp;#x5B83;&amp;#x4E0D;&amp;#x4EC5;&amp;#x5305;&amp;#x542B;&amp;#x4E86;Activity&amp;#x7684;&amp;#x5E03;&amp;#x5C40;&amp;#xFF0C;&amp;#x8FD8;&amp;#x53EF;&amp;#x80FD;&amp;#x5305;&amp;#x542B;&amp;#x7A97;&amp;#x53E3;&amp;#x7EA7;&amp;#x522B;&amp;#x7684;UI&amp;#x5143;&amp;#x7D20;&amp;#xFF0C;&amp;#x5982;&amp;#x72B6;&amp;#x6001;&amp;#x680F;&amp;#x548C;&amp;#x5BFC;&amp;#x822A;&amp;#x680F;&amp;#x3002;&lt;/p&gt;
&lt;h3 id=&quot;&amp;#x5C06;DecorView&amp;#x6DFB;&amp;#x52A0;&amp;#x5230;WindowManager&amp;#x4E2D;&quot;&gt;&lt;a href=&quot;#&amp;#x5C06;DecorView&amp;#x6DFB;&amp;#x52A0;&amp;#x5230;WindowManager&amp;#x4E2D;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5C06;DecorView&amp;#x6DFB;&amp;#x52A0;&amp;#x5230;WindowManager&amp;#x4E2D;&quot;&gt;&lt;/a&gt;&amp;#x5C06;DecorView&amp;#x6DFB;&amp;#x52A0;&amp;#x5230;WindowManager&amp;#x4E2D;&lt;/h3&gt;&lt;p&gt;WindowManager &amp;#x662F;&amp;#x7CFB;&amp;#x7EDF;&amp;#x670D;&amp;#x52A1;&amp;#xFF0C;&amp;#x5B83;&amp;#x8D1F;&amp;#x8D23;&amp;#x7BA1;&amp;#x7406;&amp;#x5E94;&amp;#x7528;&amp;#x7A0B;&amp;#x5E8F;&amp;#x7A97;&amp;#x53E3;&amp;#x7684;&amp;#x663E;&amp;#x793A;&amp;#x3002;&amp;#x5B83;&amp;#x63D0;&amp;#x4F9B;&amp;#x4E86;&amp;#x4E00;&amp;#x4E9B;&amp;#x7528;&amp;#x4E8E;&amp;#x7BA1;&amp;#x7406;&amp;#x7A97;&amp;#x53E3;&amp;#x663E;&amp;#x793A;&amp;#x7684;&amp;#x65B9;&amp;#x6CD5;&amp;#xFF0C;&amp;#x4F8B;&amp;#x5982;&amp;#x6DFB;&amp;#x52A0;&amp;#x3001;&amp;#x5220;&amp;#x9664;&amp;#x3001;&amp;#x66F4;&amp;#x65B0;&amp;#x7A97;&amp;#x53E3;&amp;#x7B49;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x5728; Activity &amp;#x7684; onResume() &amp;#x65B9;&amp;#x6CD5;&amp;#x4E4B;&amp;#x540E;&amp;#xFF0C;&amp;#x4F1A;&amp;#x5C06; DecorView &amp;#x6DFB;&amp;#x52A0;&amp;#x5230; WindowManager &amp;#x4E2D;&amp;#x3002;&amp;#x8FD9;&amp;#x5C06;&amp;#x5BFC;&amp;#x81F4; DecorView &amp;#x663E;&amp;#x793A;&amp;#x5728;&amp;#x5C4F;&amp;#x5E55;&amp;#x4E0A;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x89E6;&amp;#x53D1;&amp;#x70B9;&amp;#x662F;&amp;#x5728;&amp;#xFF0C;&lt;code&gt;ActivityThread&lt;/code&gt;&amp;#x4E2D;&amp;#x7684;&lt;code&gt;handleResumeActivity()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x4E2D;&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;22&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;23&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;24&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;25&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;26&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;27&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;28&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;29&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;30&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;31&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;32&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;33&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;34&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;35&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;36&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;37&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;38&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;39&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;@Override&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;public void handleResumeActivity(ActivityClientRecord r, boolean finalStateRequest,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        boolean isForward, boolean shouldSendCompatFakeFocus, String reason) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    ...&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    // &amp;#x6267;&amp;#x884C;Activity onResume&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    if (!performResumeActivity(r, finalStateRequest, reason)) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        return;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    ...&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    if (r.window == null &amp;amp;&amp;amp; !a.mFinished &amp;amp;&amp;amp; willBeVisible) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        // PhoneWindow&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        r.window = r.activity.getWindow();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        View decor = r.window.getDecorView();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        decor.setVisibility(View.INVISIBLE);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        ViewManager wm = a.getWindowManager();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        WindowManager.LayoutParams l = r.window.getAttributes();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        a.mDecor = decor;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        ...&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        if (a.mVisibleFromClient) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            if (!a.mWindowAdded) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                a.mWindowAdded = true;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                // &amp;#x6DFB;&amp;#x52A0;&amp;#x5230;WindowManager&amp;#x4E2D;&amp;#xFF0C;&amp;#x5E76;&amp;#x4E0E;wms&amp;#x5EFA;&amp;#x7ACB;&amp;#x53CC;&amp;#x5411;&amp;#x901A;&amp;#x4FE1;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                wm.addView(decor, l);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            } else {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                a.onWindowAttributesChanged(l);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    } else if (!willBeVisible) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        if (localLOGV) Slog.v(TAG, &amp;quot;Launch &amp;quot; + r + &amp;quot; mStartedActivity set&amp;quot;);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        r.hideForNow = true;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    ...&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x8FD9;&amp;#x5C31;&amp;#x662F;&amp;#x4E3A;&amp;#x4EC0;&amp;#x4E48;&amp;#x6211;&amp;#x4EEC;&amp;#x5728;&lt;code&gt;onCreate&lt;/code&gt;&amp;#x4E0E;&lt;code&gt;onResume&lt;/code&gt;&amp;#x7684;&amp;#x65F6;&amp;#x5019;&amp;#x4E0D;&amp;#x80FD;&amp;#x76F4;&amp;#x63A5;&amp;#x62FF;&amp;#x5230;View&amp;#x7684;&amp;#x5BBD;&amp;#x9AD8;&amp;#x7684;&amp;#x539F;&amp;#x56E0;&amp;#x3002;&amp;#x56E0;&amp;#x4E3A;&lt;code&gt;DecorView&lt;/code&gt;&amp;#x6DFB;&amp;#x52A0;&amp;#x662F;&amp;#x5728;&lt;code&gt;onResume&lt;/code&gt;&amp;#x4E4B;&amp;#x540E;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x7ED8;&amp;#x5236;&quot;&gt;&lt;a href=&quot;#&amp;#x7ED8;&amp;#x5236;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x7ED8;&amp;#x5236;&quot;&gt;&lt;/a&gt;&amp;#x7ED8;&amp;#x5236;&lt;/h2&gt;&lt;p&gt;&amp;#x4E00;&amp;#x65E6;DecorView&amp;#x88AB;&amp;#x521B;&amp;#x5EFA;&amp;#x5E76;&amp;#x8BBE;&amp;#x7F6E;&amp;#x5185;&amp;#x5BB9;&amp;#xFF0C;&lt;code&gt;ViewRootImpl&lt;/code&gt;&amp;#x5C31;&amp;#x8D1F;&amp;#x8D23;&amp;#x5C06;DecorView&amp;#x9644;&amp;#x52A0;&amp;#x5230;&amp;#x7A97;&amp;#x53E3;&amp;#x3002;&lt;code&gt;ViewRootImpl&lt;/code&gt;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x7CFB;&amp;#x7EDF;&amp;#x5185;&amp;#x90E8;&amp;#x4F7F;&amp;#x7528;&amp;#x7684;&amp;#x7C7B;&amp;#xFF0C;&amp;#x5B83;&amp;#x8FDE;&amp;#x63A5;&amp;#x7A97;&amp;#x53E3;&amp;#x7BA1;&amp;#x7406;&amp;#x5668;&amp;#xFF08;WindowManager&amp;#xFF09;&amp;#x548C;DecorView&amp;#xFF0C;&amp;#x5904;&amp;#x7406;&amp;#x5E03;&amp;#x5C40;&amp;#x3001;&amp;#x7ED8;&amp;#x5236;&amp;#x548C;&amp;#x4E8B;&amp;#x4EF6;&amp;#x5206;&amp;#x53D1;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x5728;&amp;#x4E0A;&amp;#x9762;&amp;#x5C06;DecorView&amp;#x6DFB;&amp;#x52A0;&amp;#x5230;WindowManager&amp;#x4E2D;&amp;#x65F6;&amp;#xFF0C;&amp;#x5185;&amp;#x90E8;&amp;#x662F;&amp;#x4EA4;&amp;#x7531;&lt;code&gt;WindowManagerGlobal&lt;/code&gt;&amp;#x7684;&lt;code&gt;addView&lt;/code&gt;&amp;#x5904;&amp;#x7406;&amp;#xFF0C;&amp;#x5728;&amp;#x8BE5;&amp;#x65B9;&amp;#x6CD5;&amp;#x4E2D;&amp;#x4F1A;&amp;#x521B;&amp;#x5EFA;&lt;code&gt;ViewRootImpl&lt;/code&gt;&amp;#x5BF9;&amp;#x8C61;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;22&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;23&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;24&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;25&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;26&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;27&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;28&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;29&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;30&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;31&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;32&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;33&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;34&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;35&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;36&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;37&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;38&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;public void addView(View view, ViewGroup.LayoutParams params,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        Display display, Window parentWindow, int userId) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    ...&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    ViewRootImpl root;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    View panelParentView = null;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    synchronized (mLock) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        ...&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        // &amp;#x521B;&amp;#x5EFA;ViewRootImpl&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        if (windowlessSession == null) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            root = new ViewRootImpl(view.getContext(), display);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        } else {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            root = new ViewRootImpl(view.getContext(), display,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                    windowlessSession, new WindowlessWindowLayout());&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        view.setLayoutParams(wparams);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        mViews.add(view);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        mRoots.add(root);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        mParams.add(wparams);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        try {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            // &amp;#x5C06;DecorView&amp;#x4EA4;&amp;#x7531;ViewRootImpl&amp;#xFF0C;&amp;#x8FDB;&amp;#x884C;&amp;#x540E;&amp;#x7EED;&amp;#x7684;&amp;#x7ED8;&amp;#x5236;&amp;#x4E0E;&amp;#x4E8B;&amp;#x4EF6;&amp;#x5206;&amp;#x53D1;&amp;#x7B49;&amp;#x51FA;&amp;#x6765;&amp;#x3002;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            root.setView(view, wparams, panelParentView, userId);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        } catch (RuntimeException e) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            final int viewIndex = (index &amp;gt;= 0) ? index : (mViews.size() - 1);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            if (viewIndex &amp;gt;= 0) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                removeViewLocked(viewIndex, true);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            throw e;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x5728;&amp;#x8FD9;&amp;#x91CC;&amp;#x6211;&amp;#x4EEC;&amp;#x5C31;&amp;#x80FD;&amp;#x53D1;&amp;#x73B0;&amp;#xFF0C;DecorView&amp;#x7684;&amp;#x7ED8;&amp;#x5236;&amp;#x662F;&amp;#x7531;&lt;code&gt;ViewRootImpl&lt;/code&gt;&amp;#x89E6;&amp;#x53D1;&amp;#x7684;&amp;#xFF0C;&amp;#x800C;&amp;#x5185;&amp;#x90E8;&amp;#x5176;&amp;#x5B9E;&amp;#x662F;&amp;#x8C03;&amp;#x7528;&amp;#x4E86;&amp;#x5B83;&amp;#x7684;&lt;code&gt;requestLayout()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;public void setView(View view, WindowManager.LayoutParams attrs, View panelParentView,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        int userId) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    ...&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    requestLayout()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    ...&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;@Override&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;public void requestLayout() {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    if (!mHandlingLayoutInLayoutRequest) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        // &amp;#x4E3B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x5224;&amp;#x65AD;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        checkThread();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        mLayoutRequested = true;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        // &amp;#x7B49;&amp;#x5F85;&amp;#x5782;&amp;#x76F4;&amp;#x5237;&amp;#x65B0;&amp;#x4FE1;&amp;#x53F7;&amp;#x91CF;&amp;#x7684;&amp;#x5230;&amp;#x6765;&amp;#xFF0C;&amp;#x89E6;&amp;#x53D1;&amp;#x5206;&amp;#x53D1;&amp;#x7ED8;&amp;#x5236;&amp;#x6D41;&amp;#x7A0B;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        scheduleTraversals();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x5728;&lt;code&gt;requestLayout()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x4E2D;&amp;#xFF0C;&amp;#x505A;&amp;#x4E86;&amp;#x7ECF;&amp;#x5178;&amp;#x7684;&amp;#x4E24;&amp;#x4EF6;&amp;#x4E8B;&amp;#x60C5;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&amp;#x9A8C;&amp;#x8BC1;&amp;#x662F;&amp;#x5426;&amp;#x662F;&amp;#x5728;&amp;#x4E3B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x89E6;&amp;#x53D1;&lt;/li&gt;
&lt;li&gt;&amp;#x7B49;&amp;#x5F85;&amp;#x5237;&amp;#x65B0;&amp;#xFF0C;&amp;#x89E6;&amp;#x53D1;&amp;#x540E;&amp;#x7EED;&amp;#x7684;&amp;#x7ED8;&amp;#x5236;&amp;#x6D41;&amp;#x7A0B;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;&amp;#x603B;&amp;#x7ED3;&quot;&gt;&lt;a href=&quot;#&amp;#x603B;&amp;#x7ED3;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x603B;&amp;#x7ED3;&quot;&gt;&lt;/a&gt;&amp;#x603B;&amp;#x7ED3;&lt;/h2&gt;&lt;p&gt;&amp;#x6700;&amp;#x540E;&amp;#xFF0C;&amp;#x603B;&amp;#x7ED3;&amp;#x4E00;&amp;#x4E0B;&amp;#xFF0C;&amp;#x6574;&amp;#x4E2A;&amp;#x6D41;&amp;#x7A0B;&amp;#x4E3B;&amp;#x8981;&amp;#x53EF;&amp;#x4EE5;&amp;#x5F52;&amp;#x7EB3;&amp;#x4E3A;&amp;#x56DB;&amp;#x6B65;&amp;#xFF1A;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&amp;#x5728;&lt;code&gt;Activity&lt;/code&gt;&amp;#x7684;&lt;code&gt;attach()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x91CC;&amp;#x9762;&amp;#x5148;&amp;#x521B;&amp;#x5EFA;&lt;code&gt;PhoneWindow&lt;/code&gt;&amp;#x5E76;&amp;#x83B7;&amp;#x53D6;&lt;code&gt;WindowManager&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&amp;#x5728;&lt;code&gt;Activity&lt;/code&gt;&amp;#x7684;&lt;code&gt;onCreate()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x91CC;&amp;#x8C03;&amp;#x7528;&lt;code&gt;setContentView()&lt;/code&gt;&amp;#x4F1A;&amp;#x901A;&amp;#x8FC7;&amp;#x8C03;&amp;#x7528;&amp;#x7528;&lt;code&gt;PhoneWindow&lt;/code&gt;&amp;#x7684;&lt;code&gt;installDecor()&lt;/code&gt;&amp;#x6765;&amp;#x521B;&amp;#x5EFA;&lt;code&gt;DecorView&lt;/code&gt;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x5728;&lt;code&gt;Activity&lt;/code&gt;&amp;#x7684;&lt;code&gt;onResume()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x4E4B;&amp;#x540E;&amp;#xFF0C;&amp;#x4E5F;&amp;#x5C31;&amp;#x662F;&lt;code&gt;handleResumeActivity()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x4E2D;&amp;#xFF0C;&amp;#x4F1A;&amp;#x628A;&lt;code&gt;DecorView&lt;/code&gt;&amp;#x6DFB;&amp;#x52A0;&amp;#x5230;&lt;code&gt;WindowMangaer&lt;/code&gt;&amp;#x4E2D;&amp;#xFF0C;&amp;#x5E76;&amp;#x4E0E;&lt;code&gt;wms&lt;/code&gt;&amp;#x5EFA;&amp;#x7ACB;&amp;#x53CC;&amp;#x5411;&amp;#x901A;&amp;#x4FE1;&amp;#x3002;&amp;#x6700;&amp;#x7EC8;&amp;#x4EA4;&amp;#x4E2A;&lt;code&gt;ViewRootImpl&lt;/code&gt;&amp;#x8FDB;&amp;#x884C;&amp;#x540E;&amp;#x7EED;&amp;#x7684;&amp;#x7ED8;&amp;#x5236;&amp;#x6D41;&amp;#x7A0B;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x5728;&lt;code&gt;ViewRootImple&lt;/code&gt;&amp;#x4E2D;&amp;#xFF0C;&amp;#x9A8C;&amp;#x8BC1;&amp;#x89E6;&amp;#x53D1;&amp;#x7EBF;&amp;#x7A0B;&amp;#xFF0C;&amp;#x5E76;&amp;#x7B49;&amp;#x5230;&amp;#x5C4F;&amp;#x5E55;&amp;#x5237;&amp;#x65B0;&amp;#x4FE1;&amp;#x53F7;&amp;#x6765;&amp;#x4E86;&amp;#xFF0C;&amp;#x4F1A;&amp;#x8C03;&amp;#x7528;&amp;#x5230;&lt;code&gt;ViewRootImpl&lt;/code&gt;&amp;#x7684;&lt;code&gt;performTraversals()&lt;/code&gt;&amp;#x6765;&amp;#x8FDB;&amp;#x884C;&amp;#x540E;&amp;#x7EED;&amp;#x7684;&amp;#x7ED8;&amp;#x5236;&amp;#x3002;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;a href=&quot;#&amp;#x63A8;&amp;#x8350;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;/a&gt;&amp;#x63A8;&amp;#x8350;&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-startup&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android_startup&lt;/a&gt;: &amp;#x63D0;&amp;#x4F9B;&amp;#x4E00;&amp;#x79CD;&amp;#x5728;&amp;#x5E94;&amp;#x7528;&amp;#x542F;&amp;#x52A8;&amp;#x65F6;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x52A0;&amp;#x7B80;&amp;#x5355;&amp;#x3001;&amp;#x9AD8;&amp;#x6548;&amp;#x7684;&amp;#x65B9;&amp;#x5F0F;&amp;#x6765;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x7EC4;&amp;#x4EF6;&amp;#xFF0C;&amp;#x4F18;&amp;#x5316;&amp;#x542F;&amp;#x52A8;&amp;#x901F;&amp;#x5EA6;&amp;#x3002;&amp;#x4E0D;&amp;#x4EC5;&amp;#x652F;&amp;#x6301;Jetpack App Startup&amp;#x7684;&amp;#x5168;&amp;#x90E8;&amp;#x529F;&amp;#x80FD;&amp;#xFF0C;&amp;#x8FD8;&amp;#x63D0;&amp;#x4F9B;&amp;#x989D;&amp;#x5916;&amp;#x7684;&amp;#x540C;&amp;#x6B65;&amp;#x4E0E;&amp;#x5F02;&amp;#x6B65;&amp;#x7B49;&amp;#x5F85;&amp;#x3001;&amp;#x7EBF;&amp;#x7A0B;&amp;#x63A7;&amp;#x5236;&amp;#x4E0E;&amp;#x591A;&amp;#x8FDB;&amp;#x7A0B;&amp;#x652F;&amp;#x6301;&amp;#x7B49;&amp;#x529F;&amp;#x80FD;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/AwesomeGithub&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AwesomeGithub&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Github&amp;#x7684;&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x7EAF;&amp;#x7EC3;&amp;#x4E60;&amp;#x9879;&amp;#x76EE;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x7EC4;&amp;#x4EF6;&amp;#x5316;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x8D26;&amp;#x6237;&amp;#x5BC6;&amp;#x7801;&amp;#x4E0E;&amp;#x8BA4;&amp;#x8BC1;&amp;#x767B;&amp;#x9646;&amp;#x3002;&amp;#x4F7F;&amp;#x7528;Kotlin&amp;#x8BED;&amp;#x8A00;&amp;#x8FDB;&amp;#x884C;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x9879;&amp;#x76EE;&amp;#x67B6;&amp;#x6784;&amp;#x662F;&amp;#x57FA;&amp;#x4E8E;JetPack\&amp;amp;DataBinding&amp;#x7684;MVVM&amp;#xFF1B;&amp;#x9879;&amp;#x76EE;&amp;#x4E2D;&amp;#x4F7F;&amp;#x7528;&amp;#x4E86;Arouter&amp;#x3001;Retrofit&amp;#x3001;Coroutine&amp;#x3001;Glide&amp;#x3001;Dagger&amp;#x4E0E;Hilt&amp;#x7B49;&amp;#x6D41;&amp;#x884C;&amp;#x5F00;&amp;#x6E90;&amp;#x6280;&amp;#x672F;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/flutter_github&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;flutter_github&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Flutter&amp;#x7684;&amp;#x8DE8;&amp;#x5E73;&amp;#x53F0;&amp;#x7248;&amp;#x672C;Github&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x4E0E;AwesomeGithub&amp;#x76F8;&amp;#x5BF9;&amp;#x5E94;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-api-analysis&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android-api-analysis&lt;/a&gt;: &amp;#x7ED3;&amp;#x5408;&amp;#x8BE6;&amp;#x7EC6;&amp;#x7684;Demo&amp;#x6765;&amp;#x5168;&amp;#x9762;&amp;#x89E3;&amp;#x6790;Android&amp;#x76F8;&amp;#x5173;&amp;#x7684;&amp;#x77E5;&amp;#x8BC6;&amp;#x70B9;, &amp;#x5E2E;&amp;#x52A9;&amp;#x8BFB;&amp;#x8005;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x5FEB;&amp;#x7684;&amp;#x638C;&amp;#x63E1;&amp;#x4E0E;&amp;#x7406;&amp;#x89E3;&amp;#x6240;&amp;#x9610;&amp;#x8FF0;&amp;#x7684;&amp;#x8981;&amp;#x70B9;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/daily_algorithm&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;daily_algorithm&lt;/a&gt;: &amp;#x6BCF;&amp;#x65E5;&amp;#x4E00;&amp;#x7B97;&amp;#x6CD5;&amp;#xFF0C;&amp;#x7531;&amp;#x6D45;&amp;#x5165;&amp;#x6DF1;&amp;#xFF0C;&amp;#x6B22;&amp;#x8FCE;&amp;#x52A0;&amp;#x5165;&amp;#x4E00;&amp;#x8D77;&amp;#x5171;&amp;#x52C9;&amp;#x3002;&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;p&gt;&lt;code&gt;DecorView&lt;/code&gt;&amp;#x662F;Android&amp;#x5E94;&amp;#x7528;&amp;#x7A0B;&amp;#x5E8F;&amp;#x4E2D;&amp;#x6240;&amp;#x6709;&amp;#x89C6;&amp;#x56FE;&amp;#x7684;&amp;#x6839;&amp;#x89C6;&amp;#x5
    
    </summary>
    
      <category term="android" scheme="https://www.rousetime.com/categories/android/"/>
    
    
      <category term="android" scheme="https://www.rousetime.com/tags/android/"/>
    
  </entry>
  
  <entry>
    <title>Recyclerview竟能够如此丝滑，这14个优化策略不容错过...</title>
    <link href="https://www.rousetime.com/2024/03/25/Recyclerview%E7%AB%9F%E8%83%BD%E5%A4%9F%E5%A6%82%E6%AD%A4%E4%B8%9D%E6%BB%91%EF%BC%8C%E8%BF%9914%E4%B8%AA%E4%BC%98%E5%8C%96%E7%AD%96%E7%95%A5%E4%B8%8D%E5%AE%B9%E9%94%99%E8%BF%87/"/>
    <id>https://www.rousetime.com/2024/03/25/Recyclerview竟能够如此丝滑，这14个优化策略不容错过/</id>
    <published>2024-03-25T13:48:02.000Z</published>
    <updated>2024-03-25T13:48:57.222Z</updated>
    
    <content type="html">&lt;h2 id=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;a href=&quot;#&amp;#x5F15;&amp;#x8A00;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;/a&gt;&amp;#x5F15;&amp;#x8A00;&lt;/h2&gt;&lt;p&gt;&amp;#x5728;Android&amp;#x5F00;&amp;#x53D1;&amp;#x4E2D;&amp;#xFF0C;RecyclerView&amp;#x662F;&amp;#x4E00;&amp;#x79CD;&amp;#x5E38;&amp;#x7528;&amp;#x7684;&amp;#x5217;&amp;#x8868;&amp;#x63A7;&amp;#x4EF6;&amp;#xFF0C;&amp;#x7528;&amp;#x4E8E;&amp;#x5C55;&amp;#x793A;&amp;#x5927;&amp;#x91CF;&amp;#x6570;&amp;#x636E;&amp;#x3002;&amp;#x7136;&amp;#x800C;&amp;#xFF0C;&amp;#x968F;&amp;#x7740;&amp;#x6570;&amp;#x636E;&amp;#x91CF;&amp;#x7684;&amp;#x589E;&amp;#x52A0;&amp;#xFF0C;RecyclerView&amp;#x7684;&amp;#x6027;&amp;#x80FD;&amp;#x53EF;&amp;#x80FD;&amp;#x4F1A;&amp;#x53D7;&amp;#x5230;&amp;#x5F71;&amp;#x54CD;&amp;#xFF0C;&amp;#x5BFC;&amp;#x81F4;&amp;#x5361;&amp;#x987F;&amp;#x3001;&amp;#x5185;&amp;#x5B58;&amp;#x6CC4;&amp;#x6F0F;&amp;#x7B49;&amp;#x95EE;&amp;#x9898;&amp;#x3002;&amp;#x672C;&amp;#x6587;&amp;#x5C06;&amp;#x4ECB;&amp;#x7ECD;&amp;#x4E00;&amp;#x4E9B;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&amp;#xFF0C;&amp;#x5E2E;&amp;#x52A9;&amp;#x5927;&amp;#x5BB6;&amp;#x63D0;&amp;#x5347;RecyclerView&amp;#x7684;&amp;#x6027;&amp;#x80FD;&amp;#xFF0C;&amp;#x4F7F;&amp;#x5176;&amp;#x5728;&amp;#x5404;&amp;#x79CD;&amp;#x60C5;&amp;#x51B5;&amp;#x4E0B;&amp;#x90FD;&amp;#x80FD;&amp;#x4FDD;&amp;#x6301;&amp;#x6D41;&amp;#x7545;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x4F18;&amp;#x5316;&amp;#x601D;&amp;#x8DEF;&quot;&gt;&lt;a href=&quot;#&amp;#x4F18;&amp;#x5316;&amp;#x601D;&amp;#x8DEF;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4F18;&amp;#x5316;&amp;#x601D;&amp;#x8DEF;&quot;&gt;&lt;/a&gt;&amp;#x4F18;&amp;#x5316;&amp;#x601D;&amp;#x8DEF;&lt;/h2&gt;&lt;p&gt;RecyclerView &amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&amp;#x7684;&amp;#x6838;&amp;#x5FC3;&amp;#x601D;&amp;#x8DEF;&amp;#x53EF;&amp;#x4EE5;&amp;#x6982;&amp;#x62EC;&amp;#x4E3A;&amp;#x4EE5;&amp;#x4E0B;&amp;#x51E0;&amp;#x4E2A;&amp;#x65B9;&amp;#x9762;&amp;#xFF1A;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&amp;#x5E03;&amp;#x5C40;&amp;#x4F18;&amp;#x5316;: &amp;#x4F18;&amp;#x5316; RecyclerView &amp;#x7684;&amp;#x5E03;&amp;#x5C40;&amp;#x7ED3;&amp;#x6784;&amp;#xFF0C;&amp;#x51CF;&amp;#x5C11;&amp;#x5D4C;&amp;#x5957;&amp;#x5C42;&amp;#x7EA7;&amp;#xFF0C;&amp;#x63D0;&amp;#x9AD8;&amp;#x5E03;&amp;#x5C40;&amp;#x6548;&amp;#x7387;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x51CF;&amp;#x5C11;&amp;#x7ED8;&amp;#x5236;: &amp;#x5C3D;&amp;#x53EF;&amp;#x80FD;&amp;#x51CF;&amp;#x5C11;&amp;#x89C6;&amp;#x56FE;&amp;#x7684;&amp;#x7ED8;&amp;#x5236;&amp;#x6B21;&amp;#x6570;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x8FC7;&amp;#x5EA6;&amp;#x7ED8;&amp;#x5236;&amp;#x5E26;&amp;#x6765;&amp;#x7684;&amp;#x6027;&amp;#x80FD;&amp;#x6D88;&amp;#x8017;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x6ED1;&amp;#x52A8;&amp;#x4F18;&amp;#x5316;: &amp;#x5728;&amp;#x6ED1;&amp;#x52A8;&amp;#x8FC7;&amp;#x7A0B;&amp;#x4E2D;&amp;#xFF0C;&amp;#x5C3D;&amp;#x53EF;&amp;#x80FD;&amp;#x7684;&amp;#x51CF;&amp;#x5C11;&amp;#x8017;&amp;#x65F6;&amp;#x64CD;&amp;#x4F5C;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x5F71;&amp;#x54CD;&amp;#x6ED1;&amp;#x52A8;&amp;#x6548;&amp;#x679C;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x9884;&amp;#x52A0;&amp;#x8F7D;: &amp;#x9884;&amp;#x52A0;&amp;#x8F7D;&amp;#x5373;&amp;#x5C06;&amp;#x663E;&amp;#x793A;&amp;#x7684;&amp;#x89C6;&amp;#x56FE;&amp;#xFF0C;&amp;#x63D0;&amp;#x9AD8;&amp;#x5C55;&amp;#x793A;&amp;#x6027;&amp;#x80FD;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x5185;&amp;#x5B58;&amp;#x4F18;&amp;#x5316;: &amp;#x51CF;&amp;#x5C11;&amp;#x5185;&amp;#x5B58;&amp;#x7684;&amp;#x6D88;&amp;#x8017;&amp;#xFF0C;&amp;#x5408;&amp;#x7406;&amp;#x91CA;&amp;#x653E;&amp;#x5185;&amp;#x5B58;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x5185;&amp;#x5B58;&amp;#x6CC4;&amp;#x6F0F;&amp;#x3002;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;#x4E0B;&amp;#x9762;&amp;#x9488;&amp;#x5BF9;&amp;#x8FD9;&amp;#x4E9B;&amp;#x5206;&amp;#x522B;&amp;#x7ED9;&amp;#x51FA;&amp;#x5177;&amp;#x4F53;&amp;#x7684;&amp;#x4F18;&amp;#x5316;&amp;#x7B56;&amp;#x7565;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x5E03;&amp;#x5C40;&amp;#x4F18;&amp;#x5316;&quot;&gt;&lt;a href=&quot;#&amp;#x5E03;&amp;#x5C40;&amp;#x4F18;&amp;#x5316;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5E03;&amp;#x5C40;&amp;#x4F18;&amp;#x5316;&quot;&gt;&lt;/a&gt;&amp;#x5E03;&amp;#x5C40;&amp;#x4F18;&amp;#x5316;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&amp;#x51CF;&amp;#x5C11;&amp;#x5E03;&amp;#x5C40;&amp;#x5D4C;&amp;#x5957;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;#x907F;&amp;#x514D;&amp;#x5728;RecyclerView&amp;#x7684;Item&amp;#x5E03;&amp;#x5C40;&amp;#x4E2D;&amp;#x4F7F;&amp;#x7528;&amp;#x8FC7;&amp;#x591A;&amp;#x7684;&amp;#x5D4C;&amp;#x5957;&amp;#x5E03;&amp;#x5C40;&amp;#x548C;&amp;#x590D;&amp;#x6742;&amp;#x7684;&amp;#x5C42;&amp;#x6B21;&amp;#x7ED3;&amp;#x6784;&amp;#xFF0C;&amp;#x8FD9;&amp;#x4F1A;&amp;#x589E;&amp;#x52A0;&amp;#x6E32;&amp;#x67D3;&amp;#x7684;&amp;#x65F6;&amp;#x95F4;&amp;#x548C;&amp;#x6D88;&amp;#x8017;&amp;#x3002;&amp;#x5C3D;&amp;#x91CF;&amp;#x4F7F;&amp;#x7528;&amp;#x7B80;&amp;#x5355;&amp;#x7684;&amp;#x5E03;&amp;#x5C40;&amp;#x7ED3;&amp;#x6784;&amp;#xFF0C;&amp;#x5E76;&amp;#x5408;&amp;#x7406;&amp;#x4F7F;&amp;#x7528;ConstraintLayout&amp;#x7B49;&amp;#x9AD8;&amp;#x6548;&amp;#x5E03;&amp;#x5C40;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight xml&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;&amp;lt;!-- item_layout.xml --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;span class=&quot;name&quot;&gt;androidx.constraintlayout.widget.ConstraintLayout&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;tag&quot;&gt;    &lt;span class=&quot;attr&quot;&gt;android:layout_width&lt;/span&gt;=&lt;span class=&quot;string&quot;&gt;&amp;quot;match_parent&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;tag&quot;&gt;    &lt;span class=&quot;attr&quot;&gt;android:layout_height&lt;/span&gt;=&lt;span class=&quot;string&quot;&gt;&amp;quot;wrap_content&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;span class=&quot;name&quot;&gt;TextView&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;tag&quot;&gt;        &lt;span class=&quot;attr&quot;&gt;android:id&lt;/span&gt;=&lt;span class=&quot;string&quot;&gt;&amp;quot;@+id/textView&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;tag&quot;&gt;        &lt;span class=&quot;attr&quot;&gt;android:layout_width&lt;/span&gt;=&lt;span class=&quot;string&quot;&gt;&amp;quot;wrap_content&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;tag&quot;&gt;        &lt;span class=&quot;attr&quot;&gt;android:layout_height&lt;/span&gt;=&lt;span class=&quot;string&quot;&gt;&amp;quot;wrap_content&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;tag&quot;&gt;        &lt;span class=&quot;attr&quot;&gt;app:layout_constraintStart_toStartOf&lt;/span&gt;=&lt;span class=&quot;string&quot;&gt;&amp;quot;parent&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;tag&quot;&gt;        &lt;span class=&quot;attr&quot;&gt;app:layout_constraintTop_toTopOf&lt;/span&gt;=&lt;span class=&quot;string&quot;&gt;&amp;quot;parent&amp;quot;&lt;/span&gt;/&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;&amp;lt;!-- &amp;#x5176;&amp;#x4ED6;&amp;#x89C6;&amp;#x56FE;&amp;#x7EC4;&amp;#x4EF6; --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;/&lt;span class=&quot;name&quot;&gt;androidx.constraintlayout.widget.ConstraintLayout&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;&amp;#x4F7F;&amp;#x7528;merge&amp;#x6807;&amp;#x7B7E;&amp;#x6765;&amp;#x5408;&amp;#x5E76;&amp;#x5E03;&amp;#x5C40;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;#x4F7F;&amp;#x7528;merge&amp;#x6807;&amp;#x7B7E;&amp;#x53EF;&amp;#x4EE5;&amp;#x5C06;&amp;#x591A;&amp;#x4E2A;&amp;#x5E03;&amp;#x5C40;&amp;#x6587;&amp;#x4EF6;&amp;#x5408;&amp;#x5E76;&amp;#x4E3A;&amp;#x4E00;&amp;#x4E2A;&amp;#xFF0C;&amp;#x51CF;&amp;#x5C11;&amp;#x5E03;&amp;#x5C40;&amp;#x5C42;&amp;#x7EA7;&amp;#xFF0C;&amp;#x63D0;&amp;#x9AD8;&amp;#x7ED8;&amp;#x5236;&amp;#x6027;&amp;#x80FD;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight xml&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;&amp;lt;!-- &amp;#x4F7F;&amp;#x7528;merge&amp;#x6807;&amp;#x7B7E;&amp;#x5408;&amp;#x5E76;&amp;#x5E03;&amp;#x5C40; --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;span class=&quot;name&quot;&gt;merge&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;xmlns:android&lt;/span&gt;=&lt;span class=&quot;string&quot;&gt;&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;span class=&quot;name&quot;&gt;ImageView&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;tag&quot;&gt;        &lt;span class=&quot;attr&quot;&gt;android:id&lt;/span&gt;=&lt;span class=&quot;string&quot;&gt;&amp;quot;@+id/imageView&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;tag&quot;&gt;        &lt;span class=&quot;attr&quot;&gt;android:layout_width&lt;/span&gt;=&lt;span class=&quot;string&quot;&gt;&amp;quot;wrap_content&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;tag&quot;&gt;        &lt;span class=&quot;attr&quot;&gt;android:layout_height&lt;/span&gt;=&lt;span class=&quot;string&quot;&gt;&amp;quot;wrap_content&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;tag&quot;&gt;        &lt;span class=&quot;attr&quot;&gt;android:src&lt;/span&gt;=&lt;span class=&quot;string&quot;&gt;&amp;quot;@drawable/image&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;span class=&quot;name&quot;&gt;TextView&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;tag&quot;&gt;        &lt;span class=&quot;attr&quot;&gt;android:id&lt;/span&gt;=&lt;span class=&quot;string&quot;&gt;&amp;quot;@+id/textView&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;tag&quot;&gt;        &lt;span class=&quot;attr&quot;&gt;android:layout_width&lt;/span&gt;=&lt;span class=&quot;string&quot;&gt;&amp;quot;wrap_content&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;tag&quot;&gt;        &lt;span class=&quot;attr&quot;&gt;android:layout_height&lt;/span&gt;=&lt;span class=&quot;string&quot;&gt;&amp;quot;wrap_content&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;tag&quot;&gt;        &lt;span class=&quot;attr&quot;&gt;android:text&lt;/span&gt;=&lt;span class=&quot;string&quot;&gt;&amp;quot;Text&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;/&lt;span class=&quot;name&quot;&gt;merge&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;&amp;#x542F;&amp;#x7528;setHasFixedSize&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;#x8BBE;&amp;#x7F6E; &lt;code&gt;setHasFixedSize(true)&lt;/code&gt; &amp;#x540E;&amp;#xFF0C;RecyclerView&amp;#x4F1A;&amp;#x5047;&amp;#x8BBE;&amp;#x6240;&amp;#x6709;&amp;#x7684;Item&amp;#x7684;&amp;#x9AD8;&amp;#x5EA6;&amp;#x662F;&amp;#x56FA;&amp;#x5B9A;&amp;#x7684;&amp;#xFF0C;&amp;#x4E0D;&amp;#x4F1A;&amp;#x56E0;&amp;#x4E3A;Item&amp;#x7684;&amp;#x53D8;&amp;#x5316;&amp;#x800C;&amp;#x89E6;&amp;#x53D1;&amp;#x91CD;&amp;#x65B0;&amp;#x8BA1;&amp;#x7B97;&amp;#x5E03;&amp;#x5C40;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&lt;code&gt;requestLayout&lt;/code&gt;&amp;#x5BFC;&amp;#x81F4;&amp;#x7684;&amp;#x8D44;&amp;#x6E90;&amp;#x6D6A;&amp;#x8D39;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; recyclerView = findViewById&amp;lt;RecyclerView&amp;gt;(R.id.recyclerView)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;recyclerView.setHasFixedSize(&lt;span class=&quot;literal&quot;&gt;true&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x9700;&amp;#x8981;&amp;#x6CE8;&amp;#x610F;&amp;#x7684;&amp;#x662F;&amp;#xFF0C;&amp;#x4F7F;&amp;#x7528; &lt;code&gt;setHasFixedSize(true)&lt;/code&gt;&amp;#x9002;&amp;#x7528;&amp;#x4E8E;&amp;#x6240;&amp;#x6709;Item&amp;#x9AD8;&amp;#x5EA6;&amp;#x56FA;&amp;#x5B9A;&amp;#x4E14;&amp;#x4E0D;&amp;#x4F1A;&amp;#x53D1;&amp;#x751F;&amp;#x53D8;&amp;#x5316;&amp;#x7684;&amp;#x60C5;&amp;#x51B5;&amp;#x3002;&amp;#x5982;&amp;#x679C;Item&amp;#x9AD8;&amp;#x5EA6;&amp;#x4E0D;&amp;#x56FA;&amp;#x5B9A;&amp;#x6216;&amp;#x8005;&amp;#x4F1A;&amp;#x53D1;&amp;#x751F;&amp;#x53D8;&amp;#x5316;&amp;#xFF0C;&amp;#x5E94;&amp;#x8BE5;&amp;#x907F;&amp;#x514D;&amp;#x4F7F;&amp;#x7528;&amp;#x8BE5;&amp;#x65B9;&amp;#x6CD5;&amp;#xFF0C;&amp;#x5426;&amp;#x5219;&amp;#x53EF;&amp;#x80FD;&amp;#x5BFC;&amp;#x81F4;&amp;#x5E03;&amp;#x5C40;&amp;#x663E;&amp;#x793A;&amp;#x5F02;&amp;#x5E38;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x51CF;&amp;#x5C11;&amp;#x7ED8;&amp;#x5236;&quot;&gt;&lt;a href=&quot;#&amp;#x51CF;&amp;#x5C11;&amp;#x7ED8;&amp;#x5236;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x51CF;&amp;#x5C11;&amp;#x7ED8;&amp;#x5236;&quot;&gt;&lt;/a&gt;&amp;#x51CF;&amp;#x5C11;&amp;#x7ED8;&amp;#x5236;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&amp;#x4F7F;&amp;#x7528;DiffUtil&amp;#x8FDB;&amp;#x884C;&amp;#x6570;&amp;#x636E;&amp;#x66F4;&amp;#x65B0;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;#x5728;&amp;#x6570;&amp;#x636E;&amp;#x96C6;&amp;#x53D8;&amp;#x5316;&amp;#x65F6;&amp;#xFF0C;&amp;#x4F7F;&amp;#x7528;DiffUtil&amp;#x8FDB;&amp;#x884C;&amp;#x5DEE;&amp;#x5F02;&amp;#x8BA1;&amp;#x7B97;&amp;#x53EF;&amp;#x4EE5;&amp;#x51CF;&amp;#x5C11;&amp;#x4E0D;&amp;#x5FC5;&amp;#x8981;&amp;#x7684;UI&amp;#x66F4;&amp;#x65B0;&amp;#xFF0C;&amp;#x63D0;&amp;#x9AD8;&amp;#x6027;&amp;#x80FD;&amp;#x3002;DiffUtil&amp;#x53EF;&amp;#x4EE5;&amp;#x5728;&amp;#x540E;&amp;#x53F0;&amp;#x7EBF;&amp;#x7A0B;&amp;#x4E2D;&amp;#x9AD8;&amp;#x6548;&amp;#x5730;&amp;#x8BA1;&amp;#x7B97;&amp;#x6570;&amp;#x636E;&amp;#x96C6;&amp;#x7684;&amp;#x5DEE;&amp;#x5F02;&amp;#xFF0C;&amp;#x5E76;&amp;#x5C06;&amp;#x7ED3;&amp;#x679C;&amp;#x5E94;&amp;#x7528;&amp;#x5230;RecyclerView&amp;#x4E2D;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;MyDiffCallback&lt;/span&gt;&lt;/span&gt;(&lt;span class=&quot;keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; oldList: List&amp;lt;String&amp;gt;, &lt;span class=&quot;keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; newList: List&amp;lt;String&amp;gt;) : DiffUtil.Callback() {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;getOldListSize&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt;&lt;/span&gt;: &lt;span class=&quot;built_in&quot;&gt;Int&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; oldList.size&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;getNewListSize&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt;&lt;/span&gt;: &lt;span class=&quot;built_in&quot;&gt;Int&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; newList.size&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;areItemsTheSame&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(oldItemPosition: &lt;span class=&quot;type&quot;&gt;Int&lt;/span&gt;, newItemPosition: &lt;span class=&quot;type&quot;&gt;Int&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;: &lt;span class=&quot;built_in&quot;&gt;Boolean&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; oldList[oldItemPosition] == newList[newItemPosition]&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;areContentsTheSame&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(oldItemPosition: &lt;span class=&quot;type&quot;&gt;Int&lt;/span&gt;, newItemPosition: &lt;span class=&quot;type&quot;&gt;Int&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;: &lt;span class=&quot;built_in&quot;&gt;Boolean&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; oldList[oldItemPosition] == newList[newItemPosition]&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x5728;Adapter&amp;#x4E2D;&amp;#x5E94;&amp;#x7528;DiffUtil&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; diffResult = DiffUtil.calculateDiff(MyDiffCallback(oldList, newList))&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;diffResult.dispatchUpdatesTo(&lt;span class=&quot;keyword&quot;&gt;this&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;&amp;#x9650;&amp;#x5236;&amp;#x5217;&amp;#x8868;&amp;#x9879;&amp;#x7684;&amp;#x6570;&amp;#x91CF;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;#x5982;&amp;#x679C;&amp;#x5217;&amp;#x8868;&amp;#x4E2D;&amp;#x7684;&amp;#x6570;&amp;#x636E;&amp;#x91CF;&amp;#x975E;&amp;#x5E38;&amp;#x5927;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x8003;&amp;#x8651;&amp;#x8FDB;&amp;#x884C;&amp;#x5206;&amp;#x9875;&amp;#x52A0;&amp;#x8F7D;&amp;#x6216;&amp;#x8005;&amp;#x53EA;&amp;#x52A0;&amp;#x8F7D;&amp;#x53EF;&amp;#x89C1;&amp;#x8303;&amp;#x56F4;&amp;#x5185;&amp;#x7684;&amp;#x6570;&amp;#x636E;&amp;#xFF0C;&amp;#x4EE5;&amp;#x51CF;&amp;#x5C11;&amp;#x5185;&amp;#x5B58;&amp;#x5360;&amp;#x7528;&amp;#x548C;&amp;#x6E32;&amp;#x67D3;&amp;#x65F6;&amp;#x95F4;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x4EC5;&amp;#x52A0;&amp;#x8F7D;&amp;#x53EF;&amp;#x89C1;&amp;#x8303;&amp;#x56F4;&amp;#x5185;&amp;#x7684;&amp;#x6570;&amp;#x636E;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;recyclerView.layoutManager?.setInitialPrefetchItemCount(&lt;span class=&quot;number&quot;&gt;10&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h2 id=&quot;&amp;#x6ED1;&amp;#x52A8;&amp;#x4F18;&amp;#x5316;&quot;&gt;&lt;a href=&quot;#&amp;#x6ED1;&amp;#x52A8;&amp;#x4F18;&amp;#x5316;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x6ED1;&amp;#x52A8;&amp;#x4F18;&amp;#x5316;&quot;&gt;&lt;/a&gt;&amp;#x6ED1;&amp;#x52A8;&amp;#x4F18;&amp;#x5316;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&amp;#x5728;onCreateViewHolder&amp;#x4E2D;&amp;#x8FDB;&amp;#x884C;&amp;#x5FC5;&amp;#x8981;&amp;#x7684;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x64CD;&amp;#x4F5C;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;#x5728;ViewHolder&amp;#x7684;&amp;#x521B;&amp;#x5EFA;&amp;#x9636;&amp;#x6BB5;&amp;#xFF0C;&amp;#x8FDB;&amp;#x884C;&amp;#x5FC5;&amp;#x8981;&amp;#x7684;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x64CD;&amp;#x4F5C;&amp;#xFF0C;&amp;#x5982;&amp;#x8BBE;&amp;#x7F6E;&amp;#x76D1;&amp;#x542C;&amp;#x5668;&amp;#x7B49;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x5728;&lt;code&gt;onBindViewHolder()&lt;/code&gt;&amp;#x4E2D;&amp;#x8FDB;&amp;#x884C;&amp;#x8017;&amp;#x65F6;&amp;#x64CD;&amp;#x4F5C;&amp;#xFF0C;&amp;#x63D0;&amp;#x9AD8;&amp;#x6EDA;&amp;#x52A8;&amp;#x6027;&amp;#x80FD;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;onCreateViewHolder&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(parent: &lt;span class=&quot;type&quot;&gt;ViewGroup&lt;/span&gt;, viewType: &lt;span class=&quot;type&quot;&gt;Int&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;: RecyclerView.ViewHolder {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; view = LayoutInflater.from(parent.context).inflate(R.layout.item_layout, parent, &lt;span class=&quot;literal&quot;&gt;false&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; viewHolder = ViewHolder(view)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x8FDB;&amp;#x884C;&amp;#x5FC5;&amp;#x8981;&amp;#x7684;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x64CD;&amp;#x4F5C;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; viewHolder&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;&amp;#x6ED1;&amp;#x52A8;&amp;#x505C;&amp;#x6B62;&amp;#x52A0;&amp;#x8F7D;&amp;#x64CD;&amp;#x4F5C;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;#x53EF;&amp;#x4EE5;&amp;#x901A;&amp;#x8FC7; &lt;code&gt;RecyclerView.addOnScrollListener(listener)&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x6DFB;&amp;#x52A0;&amp;#x4E00;&amp;#x4E2A;&amp;#x6EDA;&amp;#x52A8;&amp;#x76D1;&amp;#x542C;&amp;#x5668;&amp;#xFF0C;&amp;#x7136;&amp;#x540E;&amp;#x5728;&amp;#x76D1;&amp;#x542C;&amp;#x5668;&amp;#x4E2D;&amp;#x8FDB;&amp;#x884C;&amp;#x76F8;&amp;#x5E94;&amp;#x7684;&amp;#x64CD;&amp;#x4F5C;&amp;#xFF0C;&amp;#x8FDB;&amp;#x4E00;&amp;#x6B65;&amp;#x4F18;&amp;#x5316;&amp;#x6ED1;&amp;#x52A8;&amp;#x7684;&amp;#x6548;&amp;#x679C;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; recyclerView = findViewById&amp;lt;RecyclerView&amp;gt;(R.id.recyclerView)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; layoutManager = LinearLayoutManager(&lt;span class=&quot;keyword&quot;&gt;this&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;recyclerView.layoutManager = layoutManager&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; adapter = MyAdapter(dataList)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;recyclerView.adapter = adapter&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;recyclerView.addOnScrollListener(&lt;span class=&quot;keyword&quot;&gt;object&lt;/span&gt; : RecyclerView.OnScrollListener() {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;onScrollStateChanged&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(recyclerView: &lt;span class=&quot;type&quot;&gt;RecyclerView&lt;/span&gt;, newState: &lt;span class=&quot;type&quot;&gt;Int&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;super&lt;/span&gt;.onScrollStateChanged(recyclerView, newState)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x5224;&amp;#x65AD;&amp;#x6EDA;&amp;#x52A8;&amp;#x72B6;&amp;#x6001;&amp;#x662F;&amp;#x5426;&amp;#x4E3A;&amp;#x505C;&amp;#x6B62;&amp;#x6EDA;&amp;#x52A8;&amp;#x72B6;&amp;#x6001;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt; (newState == RecyclerView.SCROLL_STATE_IDLE) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            startLoaidng()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        } &lt;span class=&quot;keyword&quot;&gt;else&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;comment&quot;&gt;// &amp;#x6267;&amp;#x884C;&amp;#x505C;&amp;#x6B62;&amp;#x52A0;&amp;#x8F7D;&amp;#x64CD;&amp;#x4F5C;&amp;#xFF0C;&amp;#x4F8B;&amp;#x5982;&amp;#x505C;&amp;#x6B62;&amp;#x56FE;&amp;#x7247;&amp;#x52A0;&amp;#x8F7D;&amp;#x7B49;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            stopLoading()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;})&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h2 id=&quot;&amp;#x9884;&amp;#x52A0;&amp;#x8F7D;&quot;&gt;&lt;a href=&quot;#&amp;#x9884;&amp;#x52A0;&amp;#x8F7D;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x9884;&amp;#x52A0;&amp;#x8F7D;&quot;&gt;&lt;/a&gt;&amp;#x9884;&amp;#x52A0;&amp;#x8F7D;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&amp;#x542F;&amp;#x52A8;calculateExtraLayoutSpace&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;calculateExtraLayoutSpace&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x53EF;&amp;#x4EE5;&amp;#x7528;&amp;#x6765;&amp;#x589E;&amp;#x52A0;RecyclerView&amp;#x9884;&amp;#x7559;&amp;#x7684;&amp;#x989D;&amp;#x5916;&amp;#x7A7A;&amp;#x95F4;&amp;#xFF0C;&amp;#x6709;&amp;#x52A9;&amp;#x4E8E;&amp;#x63D0;&amp;#x524D;&amp;#x52A0;&amp;#x8F7D;&amp;#x5C4F;&amp;#x5E55;&amp;#x5916;&amp;#x7684;Item&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x6ED1;&amp;#x52A8;&amp;#x8FC7;&amp;#x7A0B;&amp;#x4E2D;&amp;#x7684;&amp;#x5361;&amp;#x987F;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x60A8;&amp;#x53EF;&amp;#x4EE5;&amp;#x901A;&amp;#x8FC7;&amp;#x91CD;&amp;#x5199;&lt;code&gt;calculateExtraLayoutSpace&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x6765;&amp;#x8FD4;&amp;#x56DE;&amp;#x989D;&amp;#x5916;&amp;#x7684;&amp;#x7A7A;&amp;#x95F4;&amp;#x5927;&amp;#x5C0F;&amp;#xFF0C;&amp;#x4EE5;&amp;#x4FBF;RecyclerView&amp;#x5728;&amp;#x6ED1;&amp;#x52A8;&amp;#x8FC7;&amp;#x7A0B;&amp;#x4E2D;&amp;#x9884;&amp;#x52A0;&amp;#x8F7D;&amp;#x5C4F;&amp;#x5E55;&amp;#x5916;&amp;#x7684;Item&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;CustomLayoutManager&lt;/span&gt; : &lt;span class=&quot;type&quot;&gt;LinearLayoutManager {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;constructor&lt;/span&gt;(context: Context) : &lt;span class=&quot;keyword&quot;&gt;super&lt;/span&gt;(context)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;constructor&lt;/span&gt;(context: Context, orientation: &lt;span class=&quot;built_in&quot;&gt;Int&lt;/span&gt;, reverseLayout: &lt;span class=&quot;built_in&quot;&gt;Boolean&lt;/span&gt;) : &lt;span class=&quot;keyword&quot;&gt;super&lt;/span&gt;(context, orientation, reverseLayout)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;calculateExtraLayoutSpace&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(state: &lt;span class=&quot;type&quot;&gt;RecyclerView&lt;/span&gt;.&lt;span class=&quot;type&quot;&gt;State&lt;/span&gt;, extraLayoutSpace: &lt;span class=&quot;type&quot;&gt;IntArray&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;super&lt;/span&gt;.calculateExtraLayoutSpace(state, extraLayoutSpace)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x8BBE;&amp;#x7F6E;&amp;#x989D;&amp;#x5916;&amp;#x7684;&amp;#x5E03;&amp;#x5C40;&amp;#x7A7A;&amp;#x95F4;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x6839;&amp;#x636E;&amp;#x9700;&amp;#x8981;&amp;#x52A8;&amp;#x6001;&amp;#x8BA1;&amp;#x7B97;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        extraLayoutSpace[&lt;span class=&quot;number&quot;&gt;0&lt;/span&gt;] = &lt;span class=&quot;number&quot;&gt;200&lt;/span&gt; &lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        extraLayoutSpace[&lt;span class=&quot;number&quot;&gt;1&lt;/span&gt;] = &lt;span class=&quot;number&quot;&gt;200&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;&amp;#x91CD;&amp;#x5199;collectAdjacentPrefetchPositions&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;collectAdjacentPrefetchPositions&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x662F;RecyclerView&amp;#x4E2D;&amp;#x7684;&amp;#x4E00;&amp;#x4E2A;&amp;#x4FDD;&amp;#x62A4;&amp;#x65B9;&amp;#x6CD5;&amp;#xFF0C;&amp;#x7528;&amp;#x4E8E;&amp;#x6536;&amp;#x96C6;&amp;#x4E0E;&amp;#x7ED9;&amp;#x5B9A;&amp;#x4F4D;&amp;#x7F6E;&amp;#x76F8;&amp;#x90BB;&amp;#x7684;&amp;#x9884;&amp;#x53D6;&amp;#x4F4D;&amp;#x7F6E;&amp;#x3002;&amp;#x8FD9;&amp;#x4E2A;&amp;#x65B9;&amp;#x6CD5;&amp;#x4E3B;&amp;#x8981;&amp;#x7528;&amp;#x4E8E;RecyclerView&amp;#x7684;&amp;#x9884;&amp;#x53D6;&amp;#x673A;&amp;#x5236;&amp;#xFF0C;&amp;#x7528;&amp;#x4E8E;&amp;#x5728;&amp;#x6ED1;&amp;#x52A8;&amp;#x8FC7;&amp;#x7A0B;&amp;#x4E2D;&amp;#x9884;&amp;#x53D6;&amp;#x4E0E;&amp;#x5F53;&amp;#x524D;&amp;#x4F4D;&amp;#x7F6E;&amp;#x76F8;&amp;#x90BB;&amp;#x7684;Item&amp;#x6570;&amp;#x636E;&amp;#xFF0C;&amp;#x63D0;&amp;#x9AD8;&amp;#x6ED1;&amp;#x52A8;&amp;#x7684;&amp;#x6D41;&amp;#x7545;&amp;#x5EA6;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x4F60;&amp;#x53EF;&amp;#x4EE5;&amp;#x5728;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;LayoutManager&amp;#x4E2D;&amp;#x91CD;&amp;#x5199;&lt;code&gt;collectAdjacentPrefetchPositions&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x6765;&amp;#x5B9E;&amp;#x73B0;&amp;#x76F8;&amp;#x90BB;&amp;#x4F4D;&amp;#x7F6E;&amp;#x7684;&amp;#x9884;&amp;#x53D6;&amp;#x903B;&amp;#x8F91;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;22&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;23&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;24&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;CustomLayoutManager&lt;/span&gt; : &lt;span class=&quot;type&quot;&gt;LinearLayoutManager {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;constructor&lt;/span&gt;(context: Context) : &lt;span class=&quot;keyword&quot;&gt;super&lt;/span&gt;(context)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;constructor&lt;/span&gt;(context: Context, orientation: &lt;span class=&quot;built_in&quot;&gt;Int&lt;/span&gt;, reverseLayout: &lt;span class=&quot;built_in&quot;&gt;Boolean&lt;/span&gt;) : &lt;span class=&quot;keyword&quot;&gt;super&lt;/span&gt;(context, orientation, reverseLayout)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;collectAdjacentPrefetchPositions&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(dx: &lt;span class=&quot;type&quot;&gt;Int&lt;/span&gt;, dy: &lt;span class=&quot;type&quot;&gt;Int&lt;/span&gt;, state: &lt;span class=&quot;type&quot;&gt;RecyclerView&lt;/span&gt;.&lt;span class=&quot;type&quot;&gt;State&lt;/span&gt;?, layoutPrefetchRegistry: &lt;span class=&quot;type&quot;&gt;LayoutPrefetchRegistry&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;super&lt;/span&gt;.collectAdjacentPrefetchPositions(dx, dy, state, layoutPrefetchRegistry)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x6839;&amp;#x636E;&amp;#x6ED1;&amp;#x52A8;&amp;#x65B9;&amp;#x5411;(dx, dy)&amp;#x6536;&amp;#x96C6;&amp;#x76F8;&amp;#x90BB;&amp;#x7684;&amp;#x9884;&amp;#x53D6;&amp;#x4F4D;&amp;#x7F6E;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; anchorPos = findFirstVisibleItemPosition()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt; (dy &amp;gt; &lt;span class=&quot;number&quot;&gt;0&lt;/span&gt;) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;comment&quot;&gt;// &amp;#x5411;&amp;#x4E0B;&amp;#x6ED1;&amp;#x52A8;&amp;#xFF0C;&amp;#x9884;&amp;#x53D6;&amp;#x4E0B;&amp;#x9762;&amp;#x7684;Item&amp;#x6570;&amp;#x636E;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;keyword&quot;&gt;for&lt;/span&gt; (i &lt;span class=&quot;keyword&quot;&gt;in&lt;/span&gt; anchorPos + &lt;span class=&quot;number&quot;&gt;1&lt;/span&gt; until state?.itemCount ?: &lt;span class=&quot;number&quot;&gt;0&lt;/span&gt;) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                layoutPrefetchRegistry.addPosition(i, &lt;span class=&quot;number&quot;&gt;0&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        } &lt;span class=&quot;keyword&quot;&gt;else&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;comment&quot;&gt;// &amp;#x5411;&amp;#x4E0A;&amp;#x6ED1;&amp;#x52A8;&amp;#xFF0C;&amp;#x9884;&amp;#x53D6;&amp;#x4E0A;&amp;#x9762;&amp;#x7684;Item&amp;#x6570;&amp;#x636E;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;keyword&quot;&gt;for&lt;/span&gt; (i &lt;span class=&quot;keyword&quot;&gt;in&lt;/span&gt; anchorPos - &lt;span class=&quot;number&quot;&gt;1&lt;/span&gt; downTo &lt;span class=&quot;number&quot;&gt;0&lt;/span&gt;) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                layoutPrefetchRegistry.addPosition(i, &lt;span class=&quot;number&quot;&gt;0&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h2 id=&quot;&amp;#x5185;&amp;#x5B58;&amp;#x4F18;&amp;#x5316;&quot;&gt;&lt;a href=&quot;#&amp;#x5185;&amp;#x5B58;&amp;#x4F18;&amp;#x5316;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5185;&amp;#x5B58;&amp;#x4F18;&amp;#x5316;&quot;&gt;&lt;/a&gt;&amp;#x5185;&amp;#x5B58;&amp;#x4F18;&amp;#x5316;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&amp;#x5171;&amp;#x7528;RecyclerViewPool&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;#x5982;&amp;#x679C;&amp;#x591A;&amp;#x4E2A; &lt;code&gt;RecycledView&lt;/code&gt; &amp;#x7684; &lt;code&gt;Adapter&lt;/code&gt; &amp;#x662F;&amp;#x4E00;&amp;#x6837;&amp;#x7684;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x8BA9;RecyclerView&amp;#x4E4B;&amp;#x95F4;&amp;#x5171;&amp;#x4EAB;&amp;#x4E00;&amp;#x4E2A;RecycledViewPool&amp;#x4EE5;&amp;#x63D0;&amp;#x9AD8;&amp;#x6027;&amp;#x80FD;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x521B;&amp;#x5EFA;&amp;#x4E00;&amp;#x4E2A;&amp;#x5171;&amp;#x4EAB;&amp;#x7684;RecycledViewPool&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; recycledViewPool = RecyclerView.RecycledViewPool()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x8BBE;&amp;#x7F6E;&amp;#x5171;&amp;#x4EAB;&amp;#x7684;RecycledViewPool&amp;#x7ED9;&amp;#x591A;&amp;#x4E2A;RecyclerView&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;recyclerView1.setRecycledViewPool(recycledViewPool)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;recyclerView2.setRecycledViewPool(recycledViewPool)&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x8FD9;&amp;#x79CD;&amp;#x505A;&amp;#x6CD5;&amp;#x7279;&amp;#x522B;&amp;#x9002;&amp;#x7528;&amp;#x4E8E;&amp;#x591A;&amp;#x4E2A;RecyclerView&amp;#x4E4B;&amp;#x95F4;&amp;#x7684;&amp;#x6570;&amp;#x636E;&amp;#x6216;&amp;#x5E03;&amp;#x5C40;&amp;#x7ED3;&amp;#x6784;&amp;#x6709;&amp;#x8F83;&amp;#x5927;&amp;#x76F8;&amp;#x4F3C;&amp;#x6027;&amp;#x7684;&amp;#x60C5;&amp;#x51B5;&amp;#x4E0B;&amp;#xFF0C;&amp;#x901A;&amp;#x8FC7;&amp;#x5171;&amp;#x4EAB;RecycledViewPool&amp;#x53EF;&amp;#x4EE5;&amp;#x8FDB;&amp;#x4E00;&amp;#x6B65;&amp;#x63D0;&amp;#x5347;&amp;#x6027;&amp;#x80FD;&amp;#x3002;&lt;/p&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;&amp;#x4F7F;&amp;#x7528;Adapter.setHasStableIds(true)&amp;#x63D0;&amp;#x9AD8;Item&amp;#x7A33;&amp;#x5B9A;&amp;#x6027;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;#x8BBE;&amp;#x7F6E;Adapter&amp;#x7684;&lt;code&gt;setHasStableIds(true)&lt;/code&gt;&amp;#x53EF;&amp;#x4EE5;&amp;#x63D0;&amp;#x9AD8;Item&amp;#x7684;&amp;#x7A33;&amp;#x5B9A;&amp;#x6027;&amp;#xFF0C;&amp;#x5E2E;&amp;#x52A9;RecyclerView&amp;#x66F4;&amp;#x597D;&amp;#x5730;&amp;#x8BC6;&amp;#x522B;&amp;#x548C;&amp;#x590D;&amp;#x7528;ViewHolder&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x9891;&amp;#x7E41;&amp;#x521B;&amp;#x5EFA;&amp;#x548C;&amp;#x9500;&amp;#x6BC1;ViewHolder&amp;#xFF0C;&amp;#x51CF;&amp;#x5C11;&amp;#x5185;&amp;#x5B58;&amp;#x6D88;&amp;#x8017;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;adapter.setHasStableIds(&lt;span class=&quot;literal&quot;&gt;true&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;&amp;#x4F7F;&amp;#x7528;RecyclerView.setItemViewCacheSize(size)&amp;#x8BBE;&amp;#x7F6E;&amp;#x7F13;&amp;#x5B58;&amp;#x5927;&amp;#x5C0F;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;#x901A;&amp;#x8FC7;&amp;#x8BBE;&amp;#x7F6E;RecyclerView&amp;#x7684;&lt;code&gt;setItemViewCacheSize(size)&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x6765;&amp;#x8BBE;&amp;#x7F6E;&amp;#x7F13;&amp;#x5B58;&amp;#x5927;&amp;#x5C0F;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x63A7;&amp;#x5236;RecyclerView&amp;#x4E2D;&amp;#x7F13;&amp;#x5B58;ViewHolder&amp;#x7684;&amp;#x6570;&amp;#x91CF;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x8FC7;&amp;#x591A;&amp;#x7684;&amp;#x7F13;&amp;#x5B58;&amp;#x5360;&amp;#x7528;&amp;#x8FC7;&amp;#x591A;&amp;#x5185;&amp;#x5B58;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;recyclerView.setItemViewCacheSize(&lt;span class=&quot;number&quot;&gt;20&lt;/span&gt;) &lt;span class=&quot;comment&quot;&gt;// &amp;#x8BBE;&amp;#x7F6E;&amp;#x7F13;&amp;#x5B58;&amp;#x5927;&amp;#x5C0F;&amp;#x4E3A;20&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;ol start=&quot;4&quot;&gt;
&lt;li&gt;&amp;#x5171;&amp;#x4EAB;&amp;#x4E8B;&amp;#x4EF6;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;#x4F8B;&amp;#x5982;&amp;#x70B9;&amp;#x51FB;&amp;#x4E8B;&amp;#x4EF6;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x521B;&amp;#x5EFA;&amp;#x4E00;&amp;#x4E2A;&amp;#x5171;&amp;#x7528;&amp;#x7684;&amp;#x76D1;&amp;#x542C;&amp;#x5668;&amp;#x5BF9;&amp;#x8C61;&amp;#xFF0C;&amp;#x5E76;&amp;#x5C06;&amp;#x5176;&amp;#x8BBE;&amp;#x7F6E;&amp;#x7ED9;&amp;#x6240;&amp;#x6709;&amp;#x7684;ItemView&amp;#x3002;&amp;#x7136;&amp;#x540E;&amp;#x6839;&amp;#x636E;ID&amp;#x6765;&amp;#x533A;&amp;#x5206;&amp;#x6267;&amp;#x884C;&amp;#x4E0D;&amp;#x540C;&amp;#x7684;&amp;#x64CD;&amp;#x4F5C;&amp;#x3002;&amp;#x4ECE;&amp;#x800C;&amp;#x907F;&amp;#x514D;&amp;#x4E86;&amp;#x5BF9;&amp;#x6BCF;&amp;#x4E2A;Item&amp;#x90FD;&amp;#x521B;&amp;#x5EFA;&amp;#x76D1;&amp;#x542C;&amp;#x5668;&amp;#x5BF9;&amp;#x8C61;&amp;#xFF0C;&amp;#x4F18;&amp;#x5316;&amp;#x4E86;&amp;#x8D44;&amp;#x6E90;&amp;#x6D88;&amp;#x8017;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x5171;&amp;#x7528;&amp;#x7684;&amp;#x76D1;&amp;#x542C;&amp;#x5668;&amp;#x5BF9;&amp;#x8C61;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; itemClickListener = View.OnClickListener { view -&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x6839;&amp;#x636E;view&amp;#x7684;ID&amp;#x6765;&amp;#x6267;&amp;#x884C;&amp;#x4E0D;&amp;#x540C;&amp;#x7684;&amp;#x64CD;&amp;#x4F5C;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;when&lt;/span&gt; (view.id) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        R.id.button -&amp;gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;comment&quot;&gt;// &amp;#x6267;&amp;#x884C;&amp;#x6309;&amp;#x94AE;&amp;#x70B9;&amp;#x51FB;&amp;#x64CD;&amp;#x4F5C;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        R.id.imageView -&amp;gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;comment&quot;&gt;// &amp;#x6267;&amp;#x884C;&amp;#x56FE;&amp;#x7247;&amp;#x70B9;&amp;#x51FB;&amp;#x64CD;&amp;#x4F5C;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x5176;&amp;#x4ED6;ID&amp;#x7684;&amp;#x5904;&amp;#x7406;...&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x5728;ViewHolder&amp;#x4E2D;&amp;#x4E3A;ItemView&amp;#x8BBE;&amp;#x7F6E;&amp;#x5171;&amp;#x7528;&amp;#x7684;&amp;#x76D1;&amp;#x542C;&amp;#x5668;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;inner&lt;/span&gt; &lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;ViewHolder&lt;/span&gt;&lt;/span&gt;(itemView: View) : RecyclerView.ViewHolder(itemView) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;init&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x4E3A;&amp;#x6240;&amp;#x6709;&amp;#x9700;&amp;#x8981;&amp;#x7684;ItemView&amp;#x8BBE;&amp;#x7F6E;&amp;#x5171;&amp;#x7528;&amp;#x7684;&amp;#x76D1;&amp;#x542C;&amp;#x5668;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        itemView.setOnClickListener(itemClickListener)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;ol start=&quot;5&quot;&gt;
&lt;li&gt;&amp;#x91CD;&amp;#x5199;RecyclerView.onViewRecycled()&amp;#x56DE;&amp;#x6536;&amp;#x8D44;&amp;#x6E90;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;#x5728; &lt;code&gt;onViewRecycled(holder: ViewHolder)&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x4E2D;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x53EF;&amp;#x4EE5;&amp;#x6267;&amp;#x884C;&amp;#x4E00;&amp;#x4E9B;&amp;#x8D44;&amp;#x6E90;&amp;#x91CA;&amp;#x653E;&amp;#x64CD;&amp;#x4F5C;&amp;#xFF0C;&amp;#x4F8B;&amp;#x5982;&amp;#x91CA;&amp;#x653E;ViewHolder&amp;#x4E2D;&amp;#x7684;&amp;#x56FE;&amp;#x7247;&amp;#x8D44;&amp;#x6E90;&amp;#x3001;&amp;#x79FB;&amp;#x9664;&amp;#x76D1;&amp;#x542C;&amp;#x5668;&amp;#x7B49;&amp;#xFF0C;&amp;#x4EE5;&amp;#x4FBF;&amp;#x5728;ViewHolder&amp;#x88AB;&amp;#x56DE;&amp;#x6536;&amp;#x65F6;&amp;#x53CA;&amp;#x65F6;&amp;#x91CA;&amp;#x653E;&amp;#x76F8;&amp;#x5173;&amp;#x8D44;&amp;#x6E90;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x5185;&amp;#x5B58;&amp;#x6CC4;&amp;#x6F0F;&amp;#x548C;&amp;#x8D44;&amp;#x6E90;&amp;#x6D6A;&amp;#x8D39;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;onViewRecycled&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(holder: &lt;span class=&quot;type&quot;&gt;ViewHolder&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;super&lt;/span&gt;.onViewRecycled(holder)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x91CA;&amp;#x653E;ViewHolder&amp;#x4E2D;&amp;#x7684;&amp;#x56FE;&amp;#x7247;&amp;#x8D44;&amp;#x6E90;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    holder.imageView.setImageDrawable(&lt;span class=&quot;literal&quot;&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x79FB;&amp;#x9664;ViewHolder&amp;#x4E2D;&amp;#x7684;&amp;#x76D1;&amp;#x542C;&amp;#x5668;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    holder.itemView.setOnClickListener(&lt;span class=&quot;literal&quot;&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h2 id=&quot;&amp;#x603B;&amp;#x7ED3;&quot;&gt;&lt;a href=&quot;#&amp;#x603B;&amp;#x7ED3;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x603B;&amp;#x7ED3;&quot;&gt;&lt;/a&gt;&amp;#x603B;&amp;#x7ED3;&lt;/h2&gt;&lt;p&gt;&amp;#x901A;&amp;#x8FC7;&amp;#x9009;&amp;#x62E9;&amp;#x5408;&amp;#x9002;&amp;#x7684;&amp;#x4F18;&amp;#x5316;&amp;#x5E03;&amp;#x5C40;&amp;#x3001;&amp;#x51CF;&amp;#x5C11;&amp;#x7ED8;&amp;#x5236;&amp;#x3001;&amp;#x6ED1;&amp;#x52A8;&amp;#x4F18;&amp;#x5316;&amp;#x3001;&amp;#x9884;&amp;#x52A0;&amp;#x8F7D;&amp;#x4E0E;&amp;#x5185;&amp;#x5B58;&amp;#x4F18;&amp;#x5316;&amp;#x7B56;&amp;#x7565;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x6709;&amp;#x6548;&amp;#x63D0;&amp;#x5347;RecyclerView&amp;#x7684;&amp;#x6027;&amp;#x80FD;&amp;#xFF0C;&amp;#x4F7F;&amp;#x5176;&amp;#x5728;&amp;#x5404;&amp;#x79CD;&amp;#x60C5;&amp;#x51B5;&amp;#x4E0B;&amp;#x90FD;&amp;#x80FD;&amp;#x4FDD;&amp;#x6301;&amp;#x6D41;&amp;#x7545;&amp;#x3002;&amp;#x5728;&amp;#x5B9E;&amp;#x9645;&amp;#x5F00;&amp;#x53D1;&amp;#x4E2D;&amp;#xFF0C;&amp;#x8FD8;&amp;#x9700;&amp;#x8981;&amp;#x6839;&amp;#x636E;&amp;#x5177;&amp;#x4F53;&amp;#x60C5;&amp;#x51B5;&amp;#x9009;&amp;#x62E9;&amp;#x5408;&amp;#x9002;&amp;#x7684;&amp;#x4F18;&amp;#x5316;&amp;#x7B56;&amp;#x7565;&amp;#xFF0C;&amp;#x5E76;&amp;#x8FDB;&amp;#x884C;&amp;#x9002;&amp;#x5F53;&amp;#x7684;&amp;#x6D4B;&amp;#x8BD5;&amp;#x548C;&amp;#x8C03;&amp;#x6574;&amp;#xFF0C;&amp;#x4EE5;&amp;#x8FBE;&amp;#x5230;&amp;#x6700;&amp;#x4F73;&amp;#x7684;&amp;#x6027;&amp;#x80FD;&amp;#x6548;&amp;#x679C;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;a href=&quot;#&amp;#x63A8;&amp;#x8350;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;/a&gt;&amp;#x63A8;&amp;#x8350;&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-startup&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android_startup&lt;/a&gt;: &amp;#x63D0;&amp;#x4F9B;&amp;#x4E00;&amp;#x79CD;&amp;#x5728;&amp;#x5E94;&amp;#x7528;&amp;#x542F;&amp;#x52A8;&amp;#x65F6;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x52A0;&amp;#x7B80;&amp;#x5355;&amp;#x3001;&amp;#x9AD8;&amp;#x6548;&amp;#x7684;&amp;#x65B9;&amp;#x5F0F;&amp;#x6765;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x7EC4;&amp;#x4EF6;&amp;#xFF0C;&amp;#x4F18;&amp;#x5316;&amp;#x542F;&amp;#x52A8;&amp;#x901F;&amp;#x5EA6;&amp;#x3002;&amp;#x4E0D;&amp;#x4EC5;&amp;#x652F;&amp;#x6301;Jetpack App Startup&amp;#x7684;&amp;#x5168;&amp;#x90E8;&amp;#x529F;&amp;#x80FD;&amp;#xFF0C;&amp;#x8FD8;&amp;#x63D0;&amp;#x4F9B;&amp;#x989D;&amp;#x5916;&amp;#x7684;&amp;#x540C;&amp;#x6B65;&amp;#x4E0E;&amp;#x5F02;&amp;#x6B65;&amp;#x7B49;&amp;#x5F85;&amp;#x3001;&amp;#x7EBF;&amp;#x7A0B;&amp;#x63A7;&amp;#x5236;&amp;#x4E0E;&amp;#x591A;&amp;#x8FDB;&amp;#x7A0B;&amp;#x652F;&amp;#x6301;&amp;#x7B49;&amp;#x529F;&amp;#x80FD;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/AwesomeGithub&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AwesomeGithub&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Github&amp;#x7684;&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x7EAF;&amp;#x7EC3;&amp;#x4E60;&amp;#x9879;&amp;#x76EE;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x7EC4;&amp;#x4EF6;&amp;#x5316;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x8D26;&amp;#x6237;&amp;#x5BC6;&amp;#x7801;&amp;#x4E0E;&amp;#x8BA4;&amp;#x8BC1;&amp;#x767B;&amp;#x9646;&amp;#x3002;&amp;#x4F7F;&amp;#x7528;Kotlin&amp;#x8BED;&amp;#x8A00;&amp;#x8FDB;&amp;#x884C;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x9879;&amp;#x76EE;&amp;#x67B6;&amp;#x6784;&amp;#x662F;&amp;#x57FA;&amp;#x4E8E;JetPack\&amp;amp;DataBinding&amp;#x7684;MVVM&amp;#xFF1B;&amp;#x9879;&amp;#x76EE;&amp;#x4E2D;&amp;#x4F7F;&amp;#x7528;&amp;#x4E86;Arouter&amp;#x3001;Retrofit&amp;#x3001;Coroutine&amp;#x3001;Glide&amp;#x3001;Dagger&amp;#x4E0E;Hilt&amp;#x7B49;&amp;#x6D41;&amp;#x884C;&amp;#x5F00;&amp;#x6E90;&amp;#x6280;&amp;#x672F;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/flutter_github&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;flutter_github&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Flutter&amp;#x7684;&amp;#x8DE8;&amp;#x5E73;&amp;#x53F0;&amp;#x7248;&amp;#x672C;Github&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x4E0E;AwesomeGithub&amp;#x76F8;&amp;#x5BF9;&amp;#x5E94;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-api-analysis&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android-api-analysis&lt;/a&gt;: &amp;#x7ED3;&amp;#x5408;&amp;#x8BE6;&amp;#x7EC6;&amp;#x7684;Demo&amp;#x6765;&amp;#x5168;&amp;#x9762;&amp;#x89E3;&amp;#x6790;Android&amp;#x76F8;&amp;#x5173;&amp;#x7684;&amp;#x77E5;&amp;#x8BC6;&amp;#x70B9;, &amp;#x5E2E;&amp;#x52A9;&amp;#x8BFB;&amp;#x8005;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x5FEB;&amp;#x7684;&amp;#x638C;&amp;#x63E1;&amp;#x4E0E;&amp;#x7406;&amp;#x89E3;&amp;#x6240;&amp;#x9610;&amp;#x8FF0;&amp;#x7684;&amp;#x8981;&amp;#x70B9;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/daily_algorithm&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;daily_algorithm&lt;/a&gt;: &amp;#x6BCF;&amp;#x65E5;&amp;#x4E00;&amp;#x7B97;&amp;#x6CD5;&amp;#xFF0C;&amp;#x7531;&amp;#x6D45;&amp;#x5165;&amp;#x6DF1;&amp;#xFF0C;&amp;#x6B22;&amp;#x8FCE;&amp;#x52A0;&amp;#x5165;&amp;#x4E00;&amp;#x8D77;&amp;#x5171;&amp;#x52C9;&amp;#x3002;&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;h2 id=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;a href=&quot;#&amp;#x5F15;&amp;#x8A00;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;/a&gt;&amp;#x5F15;&amp;#x8A00;&lt;/h2&gt;&lt;p&gt;&amp;#x5728;Androi
    
    </summary>
    
      <category term="android" scheme="https://www.rousetime.com/categories/android/"/>
    
    
      <category term="android" scheme="https://www.rousetime.com/tags/android/"/>
    
  </entry>
  
  <entry>
    <title>Android布局耗时监测的三种方式，你的选择将决定你的高度</title>
    <link href="https://www.rousetime.com/2024/03/22/Android%E5%B8%83%E5%B1%80%E8%80%97%E6%97%B6%E7%9B%91%E6%B5%8B%E7%9A%84%E4%B8%89%E7%A7%8D%E6%96%B9%E5%BC%8F%EF%BC%8C%E4%BD%A0%E7%9A%84%E9%80%89%E6%8B%A9%E5%B0%86%E5%86%B3%E5%AE%9A%E4%BD%A0%E7%9A%84%E9%AB%98%E5%BA%A6/"/>
    <id>https://www.rousetime.com/2024/03/22/Android布局耗时监测的三种方式，你的选择将决定你的高度/</id>
    <published>2024-03-22T01:35:55.000Z</published>
    <updated>2024-03-22T01:36:30.386Z</updated>
    
    <content type="html">&lt;p&gt;&amp;#x5728;Android&amp;#x5E94;&amp;#x7528;&amp;#x5F00;&amp;#x53D1;&amp;#x4E2D;&amp;#xFF0C;&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x81F3;&amp;#x5173;&amp;#x91CD;&amp;#x8981;&amp;#x7684;&amp;#x65B9;&amp;#x9762;&amp;#x3002;&amp;#x5176;&amp;#x4E2D;&amp;#xFF0C;&amp;#x5E03;&amp;#x5C40;&amp;#x6E32;&amp;#x67D3;&amp;#x7684;&amp;#x6027;&amp;#x80FD;&amp;#x76F4;&amp;#x63A5;&amp;#x5F71;&amp;#x54CD;&amp;#x7528;&amp;#x6237;&amp;#x4F53;&amp;#x9A8C;&amp;#xFF0C;&amp;#x7279;&amp;#x522B;&amp;#x662F;&amp;#x5728;&amp;#x4E00;&amp;#x4E9B;&amp;#x590D;&amp;#x6742;&amp;#x9875;&amp;#x9762;&amp;#x4E2D;&amp;#xFF0C;&amp;#x5E03;&amp;#x5C40;&amp;#x6E32;&amp;#x67D3;&amp;#x7684;&amp;#x8017;&amp;#x65F6;&amp;#x53EF;&amp;#x80FD;&amp;#x4F1A;&amp;#x5BFC;&amp;#x81F4;&amp;#x754C;&amp;#x9762;&amp;#x5361;&amp;#x987F;&amp;#xFF0C;&amp;#x5F71;&amp;#x54CD;&amp;#x7528;&amp;#x6237;&amp;#x4F53;&amp;#x9A8C;&amp;#x3002;&amp;#x56E0;&amp;#x6B64;&amp;#xFF0C;&amp;#x4E3A;&amp;#x4E86;&amp;#x66F4;&amp;#x597D;&amp;#x5730;&amp;#x76D1;&amp;#x6D4B;&amp;#x5E03;&amp;#x5C40;&amp;#x6E32;&amp;#x67D3;&amp;#x7684;&amp;#x8017;&amp;#x65F6;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x9700;&amp;#x8981;&amp;#x4E00;&amp;#x79CD;&amp;#x53EF;&amp;#x9760;&amp;#x7684;&amp;#x5B9E;&amp;#x73B0;&amp;#x65B9;&amp;#x6848;&amp;#x3002;&amp;#x672C;&amp;#x6587;&amp;#x5C06;&amp;#x4ECB;&amp;#x7ECD;&amp;#x4E09;&amp;#x79CD;&amp;#x9488;&amp;#x5BF9;Android&amp;#x5E03;&amp;#x5C40;&amp;#x8017;&amp;#x65F6;&amp;#x76D1;&amp;#x6D4B;&amp;#x7684;&amp;#x5B9E;&amp;#x73B0;&amp;#x65B9;&amp;#x6848;&amp;#xFF0C;&amp;#x5E2E;&amp;#x52A9;&amp;#x5F00;&amp;#x53D1;&amp;#x8005;&amp;#x53CA;&amp;#x65F6;&amp;#x53D1;&amp;#x73B0;&amp;#x5E76;&amp;#x89E3;&amp;#x51B3;&amp;#x5E03;&amp;#x5C40;&amp;#x6027;&amp;#x80FD;&amp;#x95EE;&amp;#x9898;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x4ECB;&amp;#x7ECD;&quot;&gt;&lt;a href=&quot;#&amp;#x4ECB;&amp;#x7ECD;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4ECB;&amp;#x7ECD;&quot;&gt;&lt;/a&gt;&amp;#x4ECB;&amp;#x7ECD;&lt;/h2&gt;&lt;p&gt;&amp;#x5E03;&amp;#x5C40;&amp;#x6E32;&amp;#x67D3;&amp;#x7684;&amp;#x8017;&amp;#x65F6;&amp;#x662F;&amp;#x6307;&amp;#x4ECE;&amp;#x5E03;&amp;#x5C40;&amp;#x6587;&amp;#x4EF6;&amp;#x52A0;&amp;#x8F7D;&amp;#x5230;&amp;#x754C;&amp;#x9762;&amp;#x663E;&amp;#x793A;&amp;#x5B8C;&amp;#x6210;&amp;#x6240;&amp;#x82B1;&amp;#x8D39;&amp;#x7684;&amp;#x65F6;&amp;#x95F4;&amp;#x3002;&amp;#x901A;&amp;#x5E38;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x4F7F;&amp;#x7528;&amp;#x5F00;&amp;#x53D1;&amp;#x8005;&amp;#x9009;&amp;#x9879;&amp;#x4E2D;&amp;#x7684;&amp;#x5E03;&amp;#x5C40;&amp;#x8FB9;&amp;#x754C;&amp;#x7EBF;&amp;#x6765;&amp;#x67E5;&amp;#x770B;&amp;#x5E03;&amp;#x5C40;&amp;#x6E32;&amp;#x67D3;&amp;#x7684;&amp;#x6027;&amp;#x80FD;&amp;#x60C5;&amp;#x51B5;&amp;#xFF0C;&amp;#x4F46;&amp;#x662F;&amp;#x8FD9;&amp;#x79CD;&amp;#x65B9;&amp;#x6CD5;&amp;#x5E76;&amp;#x4E0D;&amp;#x80FD;&amp;#x51C6;&amp;#x786E;&amp;#x5730;&amp;#x53CD;&amp;#x6620;&amp;#x5E03;&amp;#x5C40;&amp;#x6E32;&amp;#x67D3;&amp;#x7684;&amp;#x8017;&amp;#x65F6;&amp;#x3002;&amp;#x56E0;&amp;#x6B64;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x9700;&amp;#x8981;&amp;#x4E00;&amp;#x79CD;&amp;#x66F4;&amp;#x7CBE;&amp;#x786E;&amp;#x7684;&amp;#x76D1;&amp;#x6D4B;&amp;#x65B9;&amp;#x6848;&amp;#x6765;&amp;#x5B9A;&amp;#x4F4D;&amp;#x5E03;&amp;#x5C40;&amp;#x6027;&amp;#x80FD;&amp;#x95EE;&amp;#x9898;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x539F;&amp;#x7406;&quot;&gt;&lt;a href=&quot;#&amp;#x539F;&amp;#x7406;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x539F;&amp;#x7406;&quot;&gt;&lt;/a&gt;&amp;#x539F;&amp;#x7406;&lt;/h2&gt;&lt;p&gt;&amp;#x5E03;&amp;#x5C40;&amp;#x8017;&amp;#x65F6;&amp;#x76D1;&amp;#x6D4B;&amp;#x7684;&amp;#x539F;&amp;#x7406;&amp;#x5C31;&amp;#x662F;&amp;#x5728;&amp;#x5E03;&amp;#x5C40;&amp;#x8FC7;&amp;#x7A0B;&amp;#x4E2D;&amp;#x7684;&amp;#x5173;&amp;#x952E;&amp;#x8282;&amp;#x70B9;&amp;#x63D2;&amp;#x5165;&amp;#x8BA1;&amp;#x65F6;&amp;#x4EE3;&amp;#x7801;&amp;#xFF0C;&amp;#x8BB0;&amp;#x5F55;&amp;#x6BCF;&amp;#x4E2A;&amp;#x9636;&amp;#x6BB5;&amp;#x7684;&amp;#x8017;&amp;#x65F6;&amp;#xFF0C;&amp;#x4ECE;&amp;#x800C;&amp;#x5206;&amp;#x6790;&amp;#x51FA;&amp;#x5E03;&amp;#x5C40;&amp;#x8017;&amp;#x65F6;&amp;#x7684;&amp;#x74F6;&amp;#x9888;&amp;#x6240;&amp;#x5728;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x624B;&amp;#x52A8;&amp;#x57CB;&amp;#x70B9;&quot;&gt;&lt;a href=&quot;#&amp;#x624B;&amp;#x52A8;&amp;#x57CB;&amp;#x70B9;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x624B;&amp;#x52A8;&amp;#x57CB;&amp;#x70B9;&quot;&gt;&lt;/a&gt;&amp;#x624B;&amp;#x52A8;&amp;#x57CB;&amp;#x70B9;&lt;/h2&gt;&lt;p&gt;&amp;#x6700;&amp;#x7B80;&amp;#x5355;&amp;#x7684;&amp;#x5E03;&amp;#x5C40;&amp;#x8017;&amp;#x65F6;&amp;#x76D1;&amp;#x6D4B;&amp;#x65B9;&amp;#x6848;&amp;#x5C31;&amp;#x662F;&amp;#x5728;&amp;#x5E03;&amp;#x5C40;&amp;#x8FC7;&amp;#x7A0B;&amp;#x4E2D;&amp;#x7684;&amp;#x5173;&amp;#x952E;&amp;#x8282;&amp;#x70B9;&amp;#x624B;&amp;#x52A8;&amp;#x63D2;&amp;#x5165;&amp;#x8BA1;&amp;#x65F6;&amp;#x4EE3;&amp;#x7801;&amp;#xFF0C;&amp;#x4F8B;&amp;#x5982;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;override fun onCreate(savedInstanceState: Bundle?) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    super.onCreate(savedInstanceState)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    long startTime = System.currentTimeMillis();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    // &amp;#x89E3;&amp;#x6790; XML &amp;#x5E03;&amp;#x5C40;&amp;#x6587;&amp;#x4EF6;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    setContentView(R.layout.activity_main);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    long endTime = System.currentTimeMillis();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    long cost = endTime - startTime;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    Log.d(&amp;quot;TAG&amp;quot;, &amp;quot;&amp;#x5E03;&amp;#x5C40;&amp;#x8017;&amp;#x65F6;&amp;#xFF1A;&amp;quot; + cost + &amp;quot;ms&amp;quot;);    &lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x8FD9;&amp;#x79CD;&amp;#x65B9;&amp;#x6848;&amp;#x7684;&amp;#x7F3A;&amp;#x70B9;&amp;#x662F;&amp;#x9700;&amp;#x8981;&amp;#x624B;&amp;#x52A8;&amp;#x63D2;&amp;#x5165;&amp;#x4EE3;&amp;#x7801;&amp;#xFF0C;&amp;#x6BD4;&amp;#x8F83;&amp;#x7E41;&amp;#x7410;&amp;#xFF0C;&amp;#x800C;&amp;#x4E14;&amp;#x4E0D;&amp;#x591F;&amp;#x7075;&amp;#x6D3B;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;AOP&amp;#x5207;&amp;#x9762;&amp;#x7F16;&amp;#x7A0B;&quot;&gt;&lt;a href=&quot;#AOP&amp;#x5207;&amp;#x9762;&amp;#x7F16;&amp;#x7A0B;&quot; class=&quot;headerlink&quot; title=&quot;AOP&amp;#x5207;&amp;#x9762;&amp;#x7F16;&amp;#x7A0B;&quot;&gt;&lt;/a&gt;AOP&amp;#x5207;&amp;#x9762;&amp;#x7F16;&amp;#x7A0B;&lt;/h2&gt;&lt;p&gt;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;AOP&lt;/code&gt;&amp;#x5207;&amp;#x9762;&amp;#x7F16;&amp;#x7A0B;&amp;#x53EF;&amp;#x4EE5;&amp;#x66F4;&amp;#x52A0;&amp;#x4F18;&amp;#x96C5;&amp;#x5730;&amp;#x5B9E;&amp;#x73B0;&amp;#x5E03;&amp;#x5C40;&amp;#x8017;&amp;#x65F6;&amp;#x76D1;&amp;#x6D4B;&amp;#x3002;&amp;#x4F8B;&amp;#x5982;&amp;#xFF0C;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;AspectJ&lt;/code&gt;&amp;#x6846;&amp;#x67B6;&amp;#x53EF;&amp;#x4EE5;&amp;#x5B9A;&amp;#x4E49;&amp;#x4E00;&amp;#x4E2A;&amp;#x5207;&amp;#x9762;&amp;#xFF0C;&amp;#x5728;&lt;code&gt;setContentView()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x6267;&amp;#x884C;&amp;#x524D;&amp;#x540E;&amp;#x5206;&amp;#x522B;&amp;#x63D2;&amp;#x5165;&amp;#x8BA1;&amp;#x65F6;&amp;#x4EE3;&amp;#x7801;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;@Aspect&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;public class LayoutTimeAspect {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    @Around(&amp;quot;call(* android.app.Activity.setContentView(..))&amp;quot;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    public void aroundSetContentView(ProceedingJoinPoint joinPoint) throws Throwable {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        long startTime = System.currentTimeMillis();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        joinPoint.proceed();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        long endTime = System.currentTimeMillis();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        long cost = endTime - startTime;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        Log.d(&amp;quot;TAG&amp;quot;, &amp;quot;&amp;#x5E03;&amp;#x5C40;&amp;#x8017;&amp;#x65F6;&amp;#xFF1A;&amp;quot; + cost + &amp;quot;ms&amp;quot;);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x8FD9;&amp;#x79CD;&amp;#x65B9;&amp;#x6848;&amp;#x7684;&amp;#x4F18;&amp;#x70B9;&amp;#x662F;&amp;#x4EE3;&amp;#x7801;&amp;#x66F4;&amp;#x52A0;&amp;#x7B80;&amp;#x6D01;&amp;#x4F18;&amp;#x96C5;&amp;#xFF0C;&amp;#x800C;&amp;#x4E14;&amp;#x53EF;&amp;#x4EE5;&amp;#x6269;&amp;#x5C55;&amp;#x5230;&amp;#x5176;&amp;#x4ED6;&amp;#x9700;&amp;#x8981;&amp;#x76D1;&amp;#x6D4B;&amp;#x8017;&amp;#x65F6;&amp;#x7684;&amp;#x64CD;&amp;#x4F5C;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x7C7B;&amp;#x4F3C;&amp;#x7684;&amp;#x8FD8;&amp;#x6709;&amp;#x901A;&amp;#x8FC7;ASM&amp;#x7684;&amp;#x65B9;&amp;#x6CD5;&amp;#x8FDB;&amp;#x884C;&amp;#x63D2;&amp;#x6869;&amp;#xFF0C;&amp;#x672C;&amp;#x8D28;&amp;#x90FD;&amp;#x662F;&amp;#x4E00;&amp;#x6837;&amp;#xFF0C;&amp;#x5728;&amp;#x7279;&amp;#x5B9A;&amp;#x7684;&amp;#x65B9;&amp;#x6CD5;&amp;#x65F6;&amp;#x673A;&amp;#x4E2D;&amp;#x63D2;&amp;#x5165;&amp;#x5BF9;&amp;#x5E94;&amp;#x7684;&amp;#x76D1;&amp;#x6D4B;&amp;#x4EE3;&amp;#x7801;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;Factory&quot;&gt;&lt;a href=&quot;#Factory&quot; class=&quot;headerlink&quot; title=&quot;Factory&quot;&gt;&lt;/a&gt;Factory&lt;/h2&gt;&lt;p&gt;&amp;#x5982;&amp;#x679C;&amp;#x6211;&amp;#x4EEC;&amp;#x8981;&amp;#x77E5;&amp;#x9053;&amp;#x7279;&amp;#x5B9A;&amp;#x7684;&amp;#x67D0;&amp;#x4E2A;view&amp;#x7684;&amp;#x8017;&amp;#x65F6;&amp;#xFF0C;&amp;#x8FD9;&amp;#x4E2A;&amp;#x65F6;&amp;#x5019;&amp;#x5C31;&amp;#x53EF;&amp;#x4EE5;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;LayoutInflaterCompat.Factory2&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&amp;#x8BE5;&amp;#x65B9;&amp;#x6CD5;&amp;#x7528;&amp;#x4E8E;&amp;#x8BBE;&amp;#x7F6E;&amp;#x4E00;&amp;#x4E2A;&lt;code&gt;LayoutInflater.Factory2&lt;/code&gt;&amp;#x5BF9;&amp;#x8C61;&amp;#xFF0C;&amp;#x7528;&amp;#x4E8E;&amp;#x66FF;&amp;#x6362;&lt;code&gt;LayoutInflater&lt;/code&gt;&amp;#x5728;&amp;#x89E3;&amp;#x6790;XML&amp;#x5E03;&amp;#x5C40;&amp;#x6587;&amp;#x4EF6;&amp;#x65F6;&amp;#x521B;&amp;#x5EFA;View&amp;#x7684;&amp;#x884C;&amp;#x4E3A;&amp;#x3002;&amp;#x901A;&amp;#x8FC7;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49; &lt;code&gt;LayoutInflater.Factory2&lt;/code&gt;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x53EF;&amp;#x4EE5;&amp;#x62E6;&amp;#x622A;&amp;#x548C;&amp;#x4FEE;&amp;#x6539;&amp;#x5E03;&amp;#x5C40;&amp;#x7684;&amp;#x52A0;&amp;#x8F7D;&amp;#x8FC7;&amp;#x7A0B;&amp;#xFF0C;&amp;#x5305;&amp;#x62EC;&amp;#x521B;&amp;#x5EFA;View&amp;#x548C;&amp;#x8BBE;&amp;#x7F6E;&amp;#x5C5E;&amp;#x6027;&amp;#x7B49;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x7B80;&amp;#x5355;&amp;#x7684;&amp;#x7406;&amp;#x89E3;&amp;#xFF0C;&amp;#x5C31;&amp;#x662F;&amp;#x5B83;&amp;#x80FD;&amp;#x62E6;&amp;#x622A;view&amp;#x7684;&amp;#x521B;&amp;#x5EFA;&amp;#x8FC7;&amp;#x7A0B;&amp;#xFF0C;&amp;#x6240;&amp;#x4EE5;&amp;#x6211;&amp;#x4EEC;&amp;#x53EF;&amp;#x4EE5;&amp;#x901A;&amp;#x8FC7;&amp;#x8FD9;&amp;#x4E2A;&amp;#x7279;&amp;#x6027;&amp;#x6765;&amp;#x76D1;&amp;#x542C;&amp;#x5E03;&amp;#x5C40;&amp;#x4E2D;&amp;#x6BCF;&amp;#x4E00;&amp;#x4E2A;view&amp;#x7684;&amp;#x5177;&amp;#x4F53;&amp;#x8017;&amp;#x65F6;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x4E0B;&amp;#x9762;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x7B80;&amp;#x5355;&amp;#x7684;&amp;#x793A;&amp;#x4F8B;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;class MyFactory2 : LayoutInflater.Factory2 {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    override fun onCreateView(parent: View?, name: String, context: Context, attrs: AttributeSet): View? {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        val startTime = System.nanoTime()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        val view = LayoutInflater.from(context).createView(name, attrs)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        val endTime = System.nanoTime()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        val costTime = endTime - startTime&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        Log.d(&amp;quot;TAG&amp;quot;, &amp;quot;View $name layout cost time: $costTime&amp;quot;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        return view&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    ...&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x8FD9;&amp;#x79CD;&amp;#x65B9;&amp;#x6848;&amp;#x7684;&amp;#x6709;&amp;#x70B9;&amp;#x662F;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x52A0;&amp;#x5177;&amp;#x4F53;&amp;#x5316;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x5E2E;&amp;#x52A9;&amp;#x76D1;&amp;#x6D4B;&amp;#x5230;&amp;#x5177;&amp;#x4F53;&amp;#x7684;view&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x5F00;&amp;#x53D1;&amp;#x5DE5;&amp;#x5177;&quot;&gt;&lt;a href=&quot;#&amp;#x5F00;&amp;#x53D1;&amp;#x5DE5;&amp;#x5177;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5F00;&amp;#x53D1;&amp;#x5DE5;&amp;#x5177;&quot;&gt;&lt;/a&gt;&amp;#x5F00;&amp;#x53D1;&amp;#x5DE5;&amp;#x5177;&lt;/h2&gt;&lt;p&gt;&amp;#x9664;&amp;#x4E86;&amp;#x7EBF;&amp;#x4E0A;&amp;#x7684;&amp;#x76D1;&amp;#x6D4B;&amp;#x529F;&amp;#x80FD;&amp;#xFF0C;&amp;#x7EBF;&amp;#x4E0B;&amp;#x7684;&amp;#x5206;&amp;#x6790;&amp;#x4E5F;&amp;#x81F3;&amp;#x5173;&amp;#x91CD;&amp;#x8981;&amp;#x3002;Android&amp;#x63D0;&amp;#x4F9B;&amp;#x4E86;&amp;#x4E00;&amp;#x4E9B;&amp;#x76F8;&amp;#x5173;&amp;#x5206;&amp;#x6790;&amp;#x5DE5;&amp;#x5177;&amp;#xFF0C;&amp;#x80FD;&amp;#x591F;&amp;#x5F88;&amp;#x597D;&amp;#x7684;&amp;#x5E2E;&amp;#x52A9;&amp;#x5F00;&amp;#x53D1;&amp;#x8005;&amp;#x5206;&amp;#x6790;&amp;#x5404;&amp;#x79CD;&amp;#x6027;&amp;#x80FD;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x4F8B;&amp;#x5982;&amp;#xFF0C;&lt;code&gt;Systrace&lt;/code&gt;&amp;#x662F;Android&amp;#x5F00;&amp;#x53D1;&amp;#x8005;&amp;#x5DE5;&amp;#x5177;&amp;#x4E2D;&amp;#x7684;&amp;#x4E00;&amp;#x90E8;&amp;#x5206;&amp;#xFF0C;&amp;#x5B83;&amp;#x53EF;&amp;#x4EE5;&amp;#x7528;&amp;#x6765;&amp;#x5206;&amp;#x6790;&amp;#x5E94;&amp;#x7528;&amp;#x7A0B;&amp;#x5E8F;&amp;#x5728;Android&amp;#x7CFB;&amp;#x7EDF;&amp;#x4E0A;&amp;#x7684;&amp;#x6027;&amp;#x80FD;&amp;#x95EE;&amp;#x9898;&amp;#xFF0C;&amp;#x5305;&amp;#x62EC;&amp;#x5E03;&amp;#x5C40;&amp;#x3001;&amp;#x7ED8;&amp;#x5236;&amp;#x3001;CPU&amp;#x3001;&amp;#x5185;&amp;#x5B58;&amp;#x7B49;&amp;#x65B9;&amp;#x9762;&amp;#x7684;&amp;#x6027;&amp;#x80FD;&amp;#x95EE;&amp;#x9898;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x6240;&amp;#x4EE5;&amp;#x9488;&amp;#x5BF9;&amp;#x5E03;&amp;#x5C40;&amp;#x8017;&amp;#x65F6;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x4E5F;&amp;#x53EF;&amp;#x4EE5;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;Systrace&lt;/code&gt;&amp;#x6765;&amp;#x8FDB;&amp;#x884C;&amp;#x7EBF;&amp;#x4E0B;&amp;#x5206;&amp;#x6790;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;TraceCompat.beginSection(&amp;quot;start&amp;quot;);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;TraceCompat.endSection();&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x5728;&amp;#x9700;&amp;#x8981;&amp;#x68C0;&amp;#x6D4B;&amp;#x7684;&amp;#x5730;&amp;#x65B9;&amp;#x505A;&amp;#x6807;&amp;#x8BB0;&amp;#xFF0C;&amp;#x7136;&amp;#x540E;&amp;#x518D;&amp;#x8FDB;&amp;#x884C;&amp;#x6536;&amp;#x96C6;&amp;#x6570;&amp;#x636E;&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;$ python systrace.py --time=10 -o my_trace.html sched gfx view&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x8FD9;&amp;#x6761;&amp;#x547D;&amp;#x4EE4;&amp;#x4F1A;&amp;#x5728;10&amp;#x79D2;&amp;#x5185;&amp;#x6536;&amp;#x96C6;&amp;#x4E0E;&amp;#x8C03;&amp;#x5EA6;&amp;#x3001;&amp;#x56FE;&amp;#x5F62;&amp;#x6E32;&amp;#x67D3;&amp;#x3001;&amp;#x89C6;&amp;#x56FE;&amp;#x5E03;&amp;#x5C40;&amp;#x76F8;&amp;#x5173;&amp;#x7684;&amp;#x6027;&amp;#x80FD;&amp;#x6570;&amp;#x636E;&amp;#xFF0C;&amp;#x5E76;&amp;#x5C06;&amp;#x6570;&amp;#x636E;&amp;#x4FDD;&amp;#x5B58;&amp;#x5230;&amp;#x540D;&amp;#x4E3A; my_trace.html &amp;#x7684;&amp;#x6587;&amp;#x4EF6;&amp;#x4E2D;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x751F;&amp;#x6210;&amp;#x5B8C;&amp;#x4E4B;&amp;#x540E;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x53EA;&amp;#x9700;&amp;#x8981;&amp;#x6253;&amp;#x5F00;&amp;#x5F97;&amp;#x5230;&amp;#x7684;html&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x76F4;&amp;#x63A5;&amp;#x5728;&amp;#x6D4F;&amp;#x89C8;&amp;#x5668;&amp;#x4E2D;&amp;#x6253;&amp;#x5F00;&amp;#x3002;&amp;#x62A5;&amp;#x544A;&amp;#x6587;&amp;#x4EF6;&amp;#x4E2D;&amp;#x5305;&amp;#x542B;&amp;#x4E86;&amp;#x5404;&amp;#x79CD;&amp;#x6027;&amp;#x80FD;&amp;#x6307;&amp;#x6807;&amp;#x7684;&amp;#x56FE;&amp;#x8868;&amp;#x548C;&amp;#x5206;&amp;#x6790;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x901A;&amp;#x8FC7;&amp;#x67E5;&amp;#x770B;&amp;#x76F8;&amp;#x5173;&amp;#x7684;&amp;#x90E8;&amp;#x5206;&amp;#x6765;&amp;#x4E86;&amp;#x89E3;&amp;#x5E03;&amp;#x5C40;&amp;#x7684;&amp;#x8017;&amp;#x65F6;&amp;#x60C5;&amp;#x51B5;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://p6-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/0a67aaf58ba14256980f7a811e21c03a~tplv-k3u1fbpfcp-jj-mark:0:0:0:0:q75.image#?w=958&amp;amp;h=422&amp;amp;s=78593&amp;amp;e=jpg&amp;amp;b=f6f4f4&quot; alt=&quot;1710229845178.jpg&quot;&gt;&lt;br&gt;&amp;#x9664;&amp;#x6B64;&amp;#x4E4B;&amp;#x5916;&amp;#x8FD8;&amp;#x6709;&amp;#xFF0C;&lt;code&gt;TraceView&lt;/code&gt;&amp;#x3001;&lt;code&gt;LayoutInspector&lt;/code&gt;&amp;#x7B49;&amp;#x5DE5;&amp;#x5177;&amp;#x90FD;&amp;#x80FD;&amp;#x6709;&amp;#x6548;&amp;#x7684;&amp;#x8F85;&amp;#x52A9;&amp;#x5206;&amp;#x6790;&amp;#x5E03;&amp;#x5C40;&amp;#x7684;&amp;#x8017;&amp;#x65F6;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&quot;&gt;&lt;a href=&quot;#&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&quot;&gt;&lt;/a&gt;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&lt;/h2&gt;&lt;p&gt;&amp;#x5728;&amp;#x76D1;&amp;#x6D4B;&amp;#x5E76;&amp;#x53D1;&amp;#x73B0;&amp;#x5230;&amp;#x5E03;&amp;#x5C40;&amp;#x95EE;&amp;#x9898;&amp;#x7684;&amp;#x65F6;&amp;#x5019;&amp;#xFF0C;&amp;#x5269;&amp;#x4E0B;&amp;#x7684;&amp;#x5C31;&amp;#x662F;&amp;#x89E3;&amp;#x51B3;&amp;#x5E03;&amp;#x5C40;&amp;#x8017;&amp;#x65F6;&amp;#x95EE;&amp;#x9898;&amp;#x3002;&amp;#x4E0B;&amp;#x9762;&amp;#x63D0;&amp;#x4F9B;&amp;#x4E00;&amp;#x4E9B;&amp;#x4F18;&amp;#x5316;&amp;#x5E03;&amp;#x5C40;&amp;#x8017;&amp;#x65F6;&amp;#x7684;&amp;#x65B9;&amp;#x6848;&amp;#x3002;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;#x6CE8;&amp;#x610F;&amp;#x907F;&amp;#x514D;&amp;#x5728;&amp;#x5E03;&amp;#x5C40;&amp;#x6E32;&amp;#x67D3;&amp;#x8FC7;&amp;#x7A0B;&amp;#x4E2D;&amp;#x8FDB;&amp;#x884C;&amp;#x8017;&amp;#x65F6;&amp;#x64CD;&amp;#x4F5C;&amp;#xFF0C;&amp;#x4EE5;&amp;#x514D;&amp;#x5F71;&amp;#x54CD;&amp;#x6027;&amp;#x80FD;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x4F7F;&amp;#x7528;&amp;#x5408;&amp;#x9002;&amp;#x7684;&amp;#x5E03;&amp;#x5C40;&amp;#x7BA1;&amp;#x7406;&amp;#x5668;&amp;#x548C;&amp;#x5E03;&amp;#x5C40;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&amp;#xFF0C;&amp;#x51CF;&amp;#x5C11;&amp;#x5E03;&amp;#x5C40;&amp;#x5C42;&amp;#x6B21;&amp;#x548C;&amp;#x590D;&amp;#x6742;&amp;#x5EA6;&amp;#xFF0C;&amp;#x63D0;&amp;#x9AD8;&amp;#x5E03;&amp;#x5C40;&amp;#x6E32;&amp;#x67D3;&amp;#x6548;&amp;#x7387;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x5BF9;&amp;#x4E8E;&amp;#x4E00;&amp;#x4E9B;&amp;#x590D;&amp;#x6742;&amp;#x5E03;&amp;#x5C40;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x8003;&amp;#x8651;&amp;#x4F7F;&amp;#x7528;&amp;#x5F02;&amp;#x6B65;&amp;#x52A0;&amp;#x8F7D;&amp;#x5E03;&amp;#x5C40;&amp;#x6765;&amp;#x51CF;&amp;#x5C11;&amp;#x5E03;&amp;#x5C40;&amp;#x52A0;&amp;#x8F7D;&amp;#x65F6;&amp;#x95F4;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;&amp;#x7ED3;&amp;#x8BED;&quot;&gt;&lt;a href=&quot;#&amp;#x7ED3;&amp;#x8BED;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x7ED3;&amp;#x8BED;&quot;&gt;&lt;/a&gt;&amp;#x7ED3;&amp;#x8BED;&lt;/h2&gt;&lt;p&gt;&amp;#x901A;&amp;#x8FC7;&amp;#x4EE5;&amp;#x4E0A;&amp;#x5B9E;&amp;#x73B0;&amp;#x65B9;&amp;#x6848;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x53EF;&amp;#x4EE5;&amp;#x51C6;&amp;#x786E;&amp;#x76D1;&amp;#x6D4B;Android&amp;#x5E94;&amp;#x7528;&amp;#x4E2D;&amp;#x5E03;&amp;#x5C40;&amp;#x6E32;&amp;#x67D3;&amp;#x7684;&amp;#x8017;&amp;#x65F6;&amp;#xFF0C;&amp;#x53CA;&amp;#x65F6;&amp;#x53D1;&amp;#x73B0;&amp;#x5E76;&amp;#x89E3;&amp;#x51B3;&amp;#x5E03;&amp;#x5C40;&amp;#x6027;&amp;#x80FD;&amp;#x95EE;&amp;#x9898;&amp;#xFF0C;&amp;#x4ECE;&amp;#x800C;&amp;#x63D0;&amp;#x5347;&amp;#x7528;&amp;#x6237;&amp;#x4F53;&amp;#x9A8C;&amp;#x3002;&amp;#x5E0C;&amp;#x671B;&amp;#x672C;&amp;#x6587;&amp;#x80FD;&amp;#x5E2E;&amp;#x52A9;&amp;#x5230;Android&amp;#x5F00;&amp;#x53D1;&amp;#x8005;&amp;#x66F4;&amp;#x597D;&amp;#x5730;&amp;#x4F18;&amp;#x5316;&amp;#x5E94;&amp;#x7528;&amp;#x6027;&amp;#x80FD;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;a href=&quot;#&amp;#x63A8;&amp;#x8350;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;/a&gt;&amp;#x63A8;&amp;#x8350;&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-startup&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android_startup&lt;/a&gt;: &amp;#x63D0;&amp;#x4F9B;&amp;#x4E00;&amp;#x79CD;&amp;#x5728;&amp;#x5E94;&amp;#x7528;&amp;#x542F;&amp;#x52A8;&amp;#x65F6;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x52A0;&amp;#x7B80;&amp;#x5355;&amp;#x3001;&amp;#x9AD8;&amp;#x6548;&amp;#x7684;&amp;#x65B9;&amp;#x5F0F;&amp;#x6765;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x7EC4;&amp;#x4EF6;&amp;#xFF0C;&amp;#x4F18;&amp;#x5316;&amp;#x542F;&amp;#x52A8;&amp;#x901F;&amp;#x5EA6;&amp;#x3002;&amp;#x4E0D;&amp;#x4EC5;&amp;#x652F;&amp;#x6301;Jetpack App Startup&amp;#x7684;&amp;#x5168;&amp;#x90E8;&amp;#x529F;&amp;#x80FD;&amp;#xFF0C;&amp;#x8FD8;&amp;#x63D0;&amp;#x4F9B;&amp;#x989D;&amp;#x5916;&amp;#x7684;&amp;#x540C;&amp;#x6B65;&amp;#x4E0E;&amp;#x5F02;&amp;#x6B65;&amp;#x7B49;&amp;#x5F85;&amp;#x3001;&amp;#x7EBF;&amp;#x7A0B;&amp;#x63A7;&amp;#x5236;&amp;#x4E0E;&amp;#x591A;&amp;#x8FDB;&amp;#x7A0B;&amp;#x652F;&amp;#x6301;&amp;#x7B49;&amp;#x529F;&amp;#x80FD;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/AwesomeGithub&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AwesomeGithub&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Github&amp;#x7684;&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x7EAF;&amp;#x7EC3;&amp;#x4E60;&amp;#x9879;&amp;#x76EE;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x7EC4;&amp;#x4EF6;&amp;#x5316;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x8D26;&amp;#x6237;&amp;#x5BC6;&amp;#x7801;&amp;#x4E0E;&amp;#x8BA4;&amp;#x8BC1;&amp;#x767B;&amp;#x9646;&amp;#x3002;&amp;#x4F7F;&amp;#x7528;Kotlin&amp;#x8BED;&amp;#x8A00;&amp;#x8FDB;&amp;#x884C;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x9879;&amp;#x76EE;&amp;#x67B6;&amp;#x6784;&amp;#x662F;&amp;#x57FA;&amp;#x4E8E;JetPack\&amp;amp;DataBinding&amp;#x7684;MVVM&amp;#xFF1B;&amp;#x9879;&amp;#x76EE;&amp;#x4E2D;&amp;#x4F7F;&amp;#x7528;&amp;#x4E86;Arouter&amp;#x3001;Retrofit&amp;#x3001;Coroutine&amp;#x3001;Glide&amp;#x3001;Dagger&amp;#x4E0E;Hilt&amp;#x7B49;&amp;#x6D41;&amp;#x884C;&amp;#x5F00;&amp;#x6E90;&amp;#x6280;&amp;#x672F;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/flutter_github&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;flutter_github&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Flutter&amp;#x7684;&amp;#x8DE8;&amp;#x5E73;&amp;#x53F0;&amp;#x7248;&amp;#x672C;Github&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x4E0E;AwesomeGithub&amp;#x76F8;&amp;#x5BF9;&amp;#x5E94;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-api-analysis&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android-api-analysis&lt;/a&gt;: &amp;#x7ED3;&amp;#x5408;&amp;#x8BE6;&amp;#x7EC6;&amp;#x7684;Demo&amp;#x6765;&amp;#x5168;&amp;#x9762;&amp;#x89E3;&amp;#x6790;Android&amp;#x76F8;&amp;#x5173;&amp;#x7684;&amp;#x77E5;&amp;#x8BC6;&amp;#x70B9;, &amp;#x5E2E;&amp;#x52A9;&amp;#x8BFB;&amp;#x8005;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x5FEB;&amp;#x7684;&amp;#x638C;&amp;#x63E1;&amp;#x4E0E;&amp;#x7406;&amp;#x89E3;&amp;#x6240;&amp;#x9610;&amp;#x8FF0;&amp;#x7684;&amp;#x8981;&amp;#x70B9;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/daily_algorithm&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;daily_algorithm&lt;/a&gt;: &amp;#x6BCF;&amp;#x65E5;&amp;#x4E00;&amp;#x7B97;&amp;#x6CD5;&amp;#xFF0C;&amp;#x7531;&amp;#x6D45;&amp;#x5165;&amp;#x6DF1;&amp;#xFF0C;&amp;#x6B22;&amp;#x8FCE;&amp;#x52A0;&amp;#x5165;&amp;#x4E00;&amp;#x8D77;&amp;#x5171;&amp;#x52C9;&amp;#x3002;&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;p&gt;&amp;#x5728;Android&amp;#x5E94;&amp;#x7528;&amp;#x5F00;&amp;#x53D1;&amp;#x4E2D;&amp;#xFF0C;&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x81F3;&amp;#x5173;&amp;#
    
    </summary>
    
      <category term="android" scheme="https://www.rousetime.com/categories/android/"/>
    
    
      <category term="android" scheme="https://www.rousetime.com/tags/android/"/>
    
  </entry>
  
  <entry>
    <title>提高10倍开发效率？APT如何让Android开发变得更轻松</title>
    <link href="https://www.rousetime.com/2024/03/16/%E6%8F%90%E9%AB%9810%E5%80%8D%E5%BC%80%E5%8F%91%E6%95%88%E7%8E%87%EF%BC%9FAPT%E5%A6%82%E4%BD%95%E8%AE%A9Android%E5%BC%80%E5%8F%91%E5%8F%98%E5%BE%97%E6%9B%B4%E8%BD%BB%E6%9D%BE/"/>
    <id>https://www.rousetime.com/2024/03/16/提高10倍开发效率？APT如何让Android开发变得更轻松/</id>
    <published>2024-03-16T02:27:27.000Z</published>
    <updated>2024-03-16T02:27:57.363Z</updated>
    
    <content type="html">&lt;h2 id=&quot;&amp;#x524D;&amp;#x8A00;&quot;&gt;&lt;a href=&quot;#&amp;#x524D;&amp;#x8A00;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x524D;&amp;#x8A00;&quot;&gt;&lt;/a&gt;&amp;#x524D;&amp;#x8A00;&lt;/h2&gt;&lt;p&gt;&amp;#x5728;Android&amp;#x5F00;&amp;#x53D1;&amp;#x4E2D;&amp;#xFF0C;APT&amp;#xFF08;Annotation Processing Tool&amp;#xFF09;&amp;#x662F;&amp;#x4E00;&amp;#x79CD;&amp;#x5F3A;&amp;#x5927;&amp;#x7684;&amp;#x5DE5;&amp;#x5177;&amp;#xFF0C;&amp;#x5B83;&amp;#x53EF;&amp;#x4EE5;&amp;#x8BA9;&amp;#x5F00;&amp;#x53D1;&amp;#x8005;&amp;#x5728;&amp;#x7F16;&amp;#x8BD1;&amp;#x671F;&amp;#x95F4;&amp;#x5904;&amp;#x7406;&amp;#x6CE8;&amp;#x89E3;&amp;#xFF0C;&amp;#x751F;&amp;#x6210;&amp;#x989D;&amp;#x5916;&amp;#x7684;&amp;#x4EE3;&amp;#x7801;&amp;#x3002;&amp;#x901A;&amp;#x8FC7;APT&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x53EF;&amp;#x4EE5;&amp;#x5B9E;&amp;#x73B0;&amp;#x5F88;&amp;#x591A;&amp;#x9AD8;&amp;#x7EA7;&amp;#x529F;&amp;#x80FD;&amp;#xFF0C;&amp;#x6BD4;&amp;#x5982;&amp;#x81EA;&amp;#x52A8;&amp;#x751F;&amp;#x6210;&amp;#x4EE3;&amp;#x7801;&amp;#x3001;&amp;#x5B9E;&amp;#x73B0;&amp;#x4F9D;&amp;#x8D56;&amp;#x6CE8;&amp;#x5165;&amp;#x3001;&amp;#x751F;&amp;#x6210;&amp;#x8DEF;&amp;#x7531;&amp;#x8868;&amp;#x7B49;&amp;#x3002;&amp;#x672C;&amp;#x6587;&amp;#x5C06;&amp;#x6DF1;&amp;#x5165;&amp;#x63A2;&amp;#x8BA8;APT&amp;#x7684;&amp;#x8FD0;&amp;#x7528;&amp;#x4EE5;&amp;#x53CA;&amp;#x80CC;&amp;#x540E;&amp;#x7684;&amp;#x539F;&amp;#x7406;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;APT&amp;#x7684;&amp;#x57FA;&amp;#x672C;&amp;#x539F;&amp;#x7406;&quot;&gt;&lt;a href=&quot;#APT&amp;#x7684;&amp;#x57FA;&amp;#x672C;&amp;#x539F;&amp;#x7406;&quot; class=&quot;headerlink&quot; title=&quot;APT&amp;#x7684;&amp;#x57FA;&amp;#x672C;&amp;#x539F;&amp;#x7406;&quot;&gt;&lt;/a&gt;APT&amp;#x7684;&amp;#x57FA;&amp;#x672C;&amp;#x539F;&amp;#x7406;&lt;/h2&gt;&lt;p&gt;APT&amp;#x7684;&amp;#x57FA;&amp;#x672C;&amp;#x539F;&amp;#x7406;&amp;#x662F;&amp;#x5728;&amp;#x7F16;&amp;#x8BD1;&amp;#x671F;&amp;#x95F4;&amp;#x626B;&amp;#x63CF;&amp;#x548C;&amp;#x5904;&amp;#x7406;&amp;#x6E90;&amp;#x4EE3;&amp;#x7801;&amp;#x4E2D;&amp;#x7684;&amp;#x6CE8;&amp;#x89E3;&amp;#xFF0C;&amp;#x7136;&amp;#x540E;&amp;#x6839;&amp;#x636E;&amp;#x6CE8;&amp;#x89E3;&amp;#x751F;&amp;#x6210;&amp;#x76F8;&amp;#x5E94;&amp;#x7684;Java&amp;#x4EE3;&amp;#x7801;&amp;#x3002;&amp;#x8FD9;&amp;#x4E9B;&amp;#x751F;&amp;#x6210;&amp;#x7684;&amp;#x4EE3;&amp;#x7801;&amp;#x53EF;&amp;#x4EE5;&amp;#x5728;&amp;#x7F16;&amp;#x8BD1;&amp;#x540E;&amp;#x88AB;&amp;#x7F16;&amp;#x8BD1;&amp;#x5668;&amp;#x5305;&amp;#x542B;&amp;#x5230;&amp;#x6700;&amp;#x7EC8;&amp;#x7684;APK&amp;#x4E2D;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;APT&amp;#x7684;&amp;#x8FD0;&amp;#x4F5C;&amp;#x6D41;&amp;#x7A0B;&quot;&gt;&lt;a href=&quot;#APT&amp;#x7684;&amp;#x8FD0;&amp;#x4F5C;&amp;#x6D41;&amp;#x7A0B;&quot; class=&quot;headerlink&quot; title=&quot;APT&amp;#x7684;&amp;#x8FD0;&amp;#x4F5C;&amp;#x6D41;&amp;#x7A0B;&quot;&gt;&lt;/a&gt;APT&amp;#x7684;&amp;#x8FD0;&amp;#x4F5C;&amp;#x6D41;&amp;#x7A0B;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x626B;&amp;#x63CF;&amp;#x6CE8;&amp;#x89E3;&lt;/strong&gt;: &amp;#x9996;&amp;#x5148;&amp;#xFF0C;&amp;#x7F16;&amp;#x8BD1;&amp;#x5668;&amp;#x4F1A;&amp;#x626B;&amp;#x63CF;&amp;#x6E90;&amp;#x4EE3;&amp;#x7801;&amp;#x4E2D;&amp;#x7684;&amp;#x6CE8;&amp;#x89E3;&amp;#xFF0C;&amp;#x627E;&amp;#x5230;&amp;#x88AB;&amp;#x6807;&amp;#x8BB0;&amp;#x7684;&amp;#x5143;&amp;#x7D20;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x89E3;&amp;#x6790;&amp;#x6CE8;&amp;#x89E3;&lt;/strong&gt;: &amp;#x7136;&amp;#x540E;&amp;#xFF0C;APT&amp;#x4F1A;&amp;#x89E3;&amp;#x6790;&amp;#x8FD9;&amp;#x4E9B;&amp;#x6CE8;&amp;#x89E3;&amp;#xFF0C;&amp;#x83B7;&amp;#x53D6;&amp;#x6CE8;&amp;#x89E3;&amp;#x4E2D;&amp;#x5B9A;&amp;#x4E49;&amp;#x7684;&amp;#x4FE1;&amp;#x606F;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x751F;&amp;#x6210;&amp;#x4EE3;&amp;#x7801;&lt;/strong&gt;: &amp;#x63A5;&amp;#x7740;&amp;#xFF0C;&amp;#x6839;&amp;#x636E;&amp;#x6CE8;&amp;#x89E3;&amp;#x4E2D;&amp;#x7684;&amp;#x4FE1;&amp;#x606F;&amp;#xFF0C;APT&amp;#x4F1A;&amp;#x751F;&amp;#x6210;&amp;#x76F8;&amp;#x5E94;&amp;#x7684;Java&amp;#x4EE3;&amp;#x7801;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x7F16;&amp;#x8BD1;&amp;#x4EE3;&amp;#x7801;&lt;/strong&gt;: &amp;#x6700;&amp;#x540E;&amp;#xFF0C;&amp;#x751F;&amp;#x6210;&amp;#x7684;Java&amp;#x4EE3;&amp;#x7801;&amp;#x4F1A;&amp;#x88AB;&amp;#x7F16;&amp;#x8BD1;&amp;#x5668;&amp;#x7F16;&amp;#x8BD1;&amp;#x6210;.class&amp;#x6587;&amp;#x4EF6;&amp;#xFF0C;&amp;#x4E0E;&amp;#x5176;&amp;#x4ED6;&amp;#x6E90;&amp;#x4EE3;&amp;#x7801;&amp;#x4E00;&amp;#x8D77;&amp;#x6784;&amp;#x5EFA;&amp;#x6210;APK&amp;#x3002;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;APT&amp;#x7684;&amp;#x5E94;&amp;#x7528;&amp;#x573A;&amp;#x666F;&quot;&gt;&lt;a href=&quot;#APT&amp;#x7684;&amp;#x5E94;&amp;#x7528;&amp;#x573A;&amp;#x666F;&quot; class=&quot;headerlink&quot; title=&quot;APT&amp;#x7684;&amp;#x5E94;&amp;#x7528;&amp;#x573A;&amp;#x666F;&quot;&gt;&lt;/a&gt;APT&amp;#x7684;&amp;#x5E94;&amp;#x7528;&amp;#x573A;&amp;#x666F;&lt;/h2&gt;&lt;p&gt;APT&amp;#x5728;Android&amp;#x5F00;&amp;#x53D1;&amp;#x4E2D;&amp;#x6709;&amp;#x7740;&amp;#x5E7F;&amp;#x6CDB;&amp;#x7684;&amp;#x5E94;&amp;#x7528;&amp;#xFF0C;&amp;#x5176;&amp;#x4E2D;&amp;#x4E00;&amp;#x4E9B;&amp;#x5178;&amp;#x578B;&amp;#x7684;&amp;#x5E94;&amp;#x7528;&amp;#x573A;&amp;#x666F;&amp;#x5305;&amp;#x62EC;&amp;#xFF1A;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x81EA;&amp;#x52A8;&amp;#x751F;&amp;#x6210;&amp;#x4EE3;&amp;#x7801;&amp;#xFF1A;&lt;/strong&gt; &amp;#x901A;&amp;#x8FC7;APT&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x53EF;&amp;#x4EE5;&amp;#x5728;&amp;#x7F16;&amp;#x8BD1;&amp;#x671F;&amp;#x95F4;&amp;#x751F;&amp;#x6210;&amp;#x4E00;&amp;#x4E9B;&amp;#x91CD;&amp;#x590D;&amp;#x6027;&amp;#x7684;&amp;#x4EE3;&amp;#x7801;&amp;#xFF0C;&amp;#x6BD4;&amp;#x5982;&lt;code&gt;Parcelable&lt;/code&gt;&amp;#x5B9E;&amp;#x73B0;&amp;#x3001;&lt;code&gt;ViewHolder&lt;/code&gt;&amp;#x7684;&amp;#x751F;&amp;#x6210;&amp;#x4E0E;&amp;#x6DFB;&amp;#x52A0;&amp;#x65E5;&amp;#x5FD7;&amp;#x7B49;&amp;#xFF0C;&amp;#x4ECE;&amp;#x800C;&amp;#x51CF;&amp;#x5C11;&amp;#x624B;&amp;#x52A8;&amp;#x7F16;&amp;#x5199;&amp;#x91CD;&amp;#x590D;&amp;#x4EE3;&amp;#x7801;&amp;#x7684;&amp;#x5DE5;&amp;#x4F5C;&amp;#x91CF;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x4F9D;&amp;#x8D56;&amp;#x6CE8;&amp;#x5165;&amp;#xFF1A;&lt;/strong&gt; APT&amp;#x53EF;&amp;#x4EE5;&amp;#x7ED3;&amp;#x5408;&amp;#x6CE8;&amp;#x89E3;&amp;#x5904;&amp;#x7406;&amp;#x5668;&amp;#xFF0C;&amp;#x5B9E;&amp;#x73B0;&amp;#x4F9D;&amp;#x8D56;&amp;#x6CE8;&amp;#x5165;&amp;#x7684;&amp;#x529F;&amp;#x80FD;&amp;#x3002;&amp;#x901A;&amp;#x8FC7;&amp;#x5728;&amp;#x6CE8;&amp;#x89E3;&amp;#x4E2D;&amp;#x6307;&amp;#x5B9A;&amp;#x4F9D;&amp;#x8D56;&amp;#x7684;&amp;#x5BF9;&amp;#x8C61;&amp;#xFF0C;&amp;#x6CE8;&amp;#x89E3;&amp;#x5904;&amp;#x7406;&amp;#x5668;&amp;#x53EF;&amp;#x4EE5;&amp;#x5728;&amp;#x7F16;&amp;#x8BD1;&amp;#x671F;&amp;#x95F4;&amp;#x751F;&amp;#x6210;&amp;#x4F9D;&amp;#x8D56;&amp;#x6CE8;&amp;#x5165;&amp;#x7684;&amp;#x4EE3;&amp;#x7801;&amp;#xFF0C;&amp;#x4ECE;&amp;#x800C;&amp;#x5B9E;&amp;#x73B0;&amp;#x4F9D;&amp;#x8D56;&amp;#x6CE8;&amp;#x5165;&amp;#x7684;&amp;#x529F;&amp;#x80FD;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x8DEF;&amp;#x7531;&amp;#x7BA1;&amp;#x7406;&amp;#xFF1A;&lt;/strong&gt; APT&amp;#x53EF;&amp;#x4EE5;&amp;#x7528;&amp;#x6765;&amp;#x751F;&amp;#x6210;&amp;#x8DEF;&amp;#x7531;&amp;#x8868;&amp;#xFF0C;&amp;#x4ECE;&amp;#x800C;&amp;#x5B9E;&amp;#x73B0;&amp;#x9875;&amp;#x9762;&amp;#x8DF3;&amp;#x8F6C;&amp;#x7684;&amp;#x7BA1;&amp;#x7406;&amp;#x3002;&amp;#x901A;&amp;#x8FC7;&amp;#x5728;&amp;#x6CE8;&amp;#x89E3;&amp;#x4E2D;&amp;#x6307;&amp;#x5B9A;&amp;#x9875;&amp;#x9762;&amp;#x7684;&amp;#x8DEF;&amp;#x5F84;&amp;#x548C;&amp;#x53C2;&amp;#x6570;&amp;#xFF0C;APT&amp;#x53EF;&amp;#x4EE5;&amp;#x5728;&amp;#x7F16;&amp;#x8BD1;&amp;#x671F;&amp;#x95F4;&amp;#x751F;&amp;#x6210;&amp;#x8DEF;&amp;#x7531;&amp;#x8868;&amp;#xFF0C;&amp;#x4ECE;&amp;#x800C;&amp;#x5B9E;&amp;#x73B0;&amp;#x9875;&amp;#x9762;&amp;#x8DF3;&amp;#x8F6C;&amp;#x7684;&amp;#x81EA;&amp;#x52A8;&amp;#x5316;&amp;#x7BA1;&amp;#x7406;&amp;#x3002;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;&amp;#x4F18;&amp;#x52BF;&quot;&gt;&lt;a href=&quot;#&amp;#x4F18;&amp;#x52BF;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4F18;&amp;#x52BF;&quot;&gt;&lt;/a&gt;&amp;#x4F18;&amp;#x52BF;&lt;/h2&gt;&lt;p&gt;APT &amp;#x5177;&amp;#x6709;&amp;#x4EE5;&amp;#x4E0B;&amp;#x4F18;&amp;#x52BF;&amp;#xFF1A;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x63D0;&amp;#x9AD8;&amp;#x5F00;&amp;#x53D1;&amp;#x6548;&amp;#x7387;&amp;#xFF1A;&lt;/strong&gt; APT &amp;#x53EF;&amp;#x4EE5;&amp;#x81EA;&amp;#x52A8;&amp;#x751F;&amp;#x6210;&amp;#x4EE3;&amp;#x7801;&amp;#xFF0C;&amp;#x51CF;&amp;#x5C11;&amp;#x5F00;&amp;#x53D1;&amp;#x4EBA;&amp;#x5458;&amp;#x7684;&amp;#x624B;&amp;#x52A8;&amp;#x7F16;&amp;#x7801;&amp;#x5DE5;&amp;#x4F5C;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x4EE3;&amp;#x7801;&amp;#x66F4;&amp;#x52A0;&amp;#x7B80;&amp;#x6D01;&amp;#x4F18;&amp;#x96C5;&amp;#xFF1A;&lt;/strong&gt; &amp;#x901A;&amp;#x8FC7; APT &amp;#x751F;&amp;#x6210;&amp;#x7684;&amp;#x4EE3;&amp;#x7801;&amp;#xFF0C;&amp;#x901A;&amp;#x5E38;&amp;#x66F4;&amp;#x52A0;&amp;#x7B80;&amp;#x6D01;&amp;#x4F18;&amp;#x96C5;&amp;#xFF0C;&amp;#x6613;&amp;#x4E8E;&amp;#x7406;&amp;#x89E3;&amp;#x548C;&amp;#x7EF4;&amp;#x62A4;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x63D0;&amp;#x9AD8;&amp;#x4EE3;&amp;#x7801;&amp;#x8D28;&amp;#x91CF;&amp;#xFF1A;&lt;/strong&gt; APT &amp;#x53EF;&amp;#x4EE5;&amp;#x5E2E;&amp;#x52A9;&amp;#x5F00;&amp;#x53D1;&amp;#x4EBA;&amp;#x5458;&amp;#x907F;&amp;#x514D;&amp;#x4E00;&amp;#x4E9B;&amp;#x5E38;&amp;#x89C1;&amp;#x7684;&amp;#x9519;&amp;#x8BEF;&amp;#xFF0C;&amp;#x63D0;&amp;#x9AD8;&amp;#x4EE3;&amp;#x7801;&amp;#x8D28;&amp;#x91CF;&amp;#x3002;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;&amp;#x4F7F;&amp;#x7528;&amp;#x4EE3;&amp;#x7801;&amp;#x793A;&amp;#x4F8B;&quot;&gt;&lt;a href=&quot;#&amp;#x4F7F;&amp;#x7528;&amp;#x4EE3;&amp;#x7801;&amp;#x793A;&amp;#x4F8B;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4F7F;&amp;#x7528;&amp;#x4EE3;&amp;#x7801;&amp;#x793A;&amp;#x4F8B;&quot;&gt;&lt;/a&gt;&amp;#x4F7F;&amp;#x7528;&amp;#x4EE3;&amp;#x7801;&amp;#x793A;&amp;#x4F8B;&lt;/h2&gt;&lt;p&gt;&amp;#x4E0B;&amp;#x9762;&amp;#x901A;&amp;#x8FC7;&amp;#x4E00;&amp;#x4E2A;&amp;#x7B80;&amp;#x5355;&amp;#x7684;&amp;#x4F8B;&amp;#x5B50;&amp;#x6765;&amp;#x6F14;&amp;#x793A;APT&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&amp;#xFF0C;&amp;#x5B9E;&amp;#x73B0;&amp;#x4E00;&amp;#x4E2A;&amp;#x7B80;&amp;#x5355;&amp;#x7684;&lt;code&gt;findViewById&lt;/code&gt;&amp;#x4E0E;&lt;code&gt;setText&lt;/code&gt;&amp;#x7684;&amp;#x529F;&amp;#x80FD;&amp;#x3002;&lt;/p&gt;
&lt;h3 id=&quot;&amp;#x5B9A;&amp;#x4E49;&amp;#x6CE8;&amp;#x89E3;&quot;&gt;&lt;a href=&quot;#&amp;#x5B9A;&amp;#x4E49;&amp;#x6CE8;&amp;#x89E3;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5B9A;&amp;#x4E49;&amp;#x6CE8;&amp;#x89E3;&quot;&gt;&lt;/a&gt;&amp;#x5B9A;&amp;#x4E49;&amp;#x6CE8;&amp;#x89E3;&lt;/h3&gt;&lt;p&gt;&amp;#x9996;&amp;#x5148;&amp;#x5B9A;&amp;#x4E49;&amp;#x4E00;&amp;#x4E2A;&amp;#x6CE8;&amp;#x89E3;&lt;code&gt;@BindView&lt;/code&gt;&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;@Retention(RetentionPolicy.SOURCE)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;@Target(ElementType.FIELD)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;public @interface BindView {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    @IdRes int[] value();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x5728;&amp;#x8FD9;&amp;#x91CC;&amp;#x4F7F;&amp;#x7528;&amp;#x4E86;&lt;code&gt;@Target&lt;/code&gt;&amp;#x548C;&lt;code&gt;@Retention&lt;/code&gt;&amp;#x4E24;&amp;#x4E2A;&amp;#x91CD;&amp;#x8981;&amp;#x7684;&amp;#x5143;&amp;#x6CE8;&amp;#x89E3;&amp;#xFF0C;&amp;#x7528;&amp;#x6765;&amp;#x5BF9;&amp;#x6CE8;&amp;#x89E3;&amp;#x8FDB;&amp;#x884C;&amp;#x5B9A;&amp;#x4E49;&amp;#x548C;&amp;#x4FEE;&amp;#x9970;&amp;#x3002;&lt;/p&gt;
&lt;h4 id=&quot;Target&quot;&gt;&lt;a href=&quot;#Target&quot; class=&quot;headerlink&quot; title=&quot;@Target&quot;&gt;&lt;/a&gt;@Target&lt;/h4&gt;&lt;p&gt;&lt;code&gt;@Target&lt;/code&gt;&amp;#x6CE8;&amp;#x89E3;&amp;#x7528;&amp;#x4E8E;&amp;#x6307;&amp;#x5B9A;&amp;#x6CE8;&amp;#x89E3;&amp;#x53EF;&amp;#x4EE5;&amp;#x5E94;&amp;#x7528;&amp;#x7684;&amp;#x8303;&amp;#x56F4;&amp;#xFF0C;&amp;#x5373;&amp;#x6CE8;&amp;#x89E3;&amp;#x53EF;&amp;#x4EE5;&amp;#x653E;&amp;#x7F6E;&amp;#x5728;&amp;#x54EA;&amp;#x4E9B;&amp;#x5143;&amp;#x7D20;&amp;#x4E4B;&amp;#x4E0A;&amp;#x3002;&amp;#x5B83;&amp;#x6709;&amp;#x4E00;&amp;#x4E2A;&amp;#x53C2;&amp;#x6570;&amp;#xFF0C;&amp;#x7C7B;&amp;#x578B;&amp;#x4E3A;&lt;code&gt;ElementType[]&lt;/code&gt;&amp;#xFF0C;&amp;#x8868;&amp;#x793A;&amp;#x6CE8;&amp;#x89E3;&amp;#x53EF;&amp;#x4EE5;&amp;#x5E94;&amp;#x7528;&amp;#x7684;&amp;#x76EE;&amp;#x6807;&amp;#x5143;&amp;#x7D20;&amp;#x7C7B;&amp;#x578B;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x5E38;&amp;#x89C1;&amp;#x7684;&lt;code&gt;ElementType&lt;/code&gt;&amp;#x5305;&amp;#x62EC;&amp;#xFF1A;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ElementType.TYPE&lt;/code&gt;: &amp;#x7C7B;&amp;#x3001;&amp;#x63A5;&amp;#x53E3;&amp;#x3001;&amp;#x679A;&amp;#x4E3E;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ElementType.FIELD&lt;/code&gt;: &amp;#x5B57;&amp;#x6BB5;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ElementType.METHOD&lt;/code&gt;: &amp;#x65B9;&amp;#x6CD5;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ElementType.PARAMETER&lt;/code&gt;: &amp;#x53C2;&amp;#x6570;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ElementType.CONSTRUCTOR&lt;/code&gt;: &amp;#x6784;&amp;#x9020;&amp;#x65B9;&amp;#x6CD5;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ElementType.LOCAL_VARIABLE&lt;/code&gt;: &amp;#x5C40;&amp;#x90E8;&amp;#x53D8;&amp;#x91CF;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ElementType.ANNOTATION_TYPE&lt;/code&gt;: &amp;#x6CE8;&amp;#x89E3;&amp;#x7C7B;&amp;#x578B;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ElementType.PACKAGE&lt;/code&gt;: &amp;#x5305;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;#x4F8B;&amp;#x5982;&amp;#xFF0C;&amp;#x5F53;&amp;#x6211;&amp;#x4EEC;&amp;#x6307;&amp;#x5B9A;&lt;code&gt;@Target(ElementType.FIELD)&lt;/code&gt;&amp;#x65F6;&amp;#xFF0C;&amp;#x8868;&amp;#x793A;&amp;#x8BE5;&amp;#x6CE8;&amp;#x89E3;&amp;#x53EA;&amp;#x80FD;&amp;#x5E94;&amp;#x7528;&amp;#x5728;&amp;#x5B57;&amp;#x6BB5;&amp;#x4E0A;&amp;#xFF0C;&amp;#x4E0D;&amp;#x80FD;&amp;#x5E94;&amp;#x7528;&amp;#x5728;&amp;#x5176;&amp;#x4ED6;&amp;#x5143;&amp;#x7D20;&amp;#x4E0A;&amp;#x3002;&lt;/p&gt;
&lt;h4 id=&quot;Retention&quot;&gt;&lt;a href=&quot;#Retention&quot; class=&quot;headerlink&quot; title=&quot;@Retention&quot;&gt;&lt;/a&gt;@Retention&lt;/h4&gt;&lt;p&gt;&lt;code&gt;@Retention&lt;/code&gt;&amp;#x6CE8;&amp;#x89E3;&amp;#x7528;&amp;#x4E8E;&amp;#x6307;&amp;#x5B9A;&amp;#x6CE8;&amp;#x89E3;&amp;#x7684;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#xFF0C;&amp;#x5373;&amp;#x6CE8;&amp;#x89E3;&amp;#x5728;&amp;#x7F16;&amp;#x8BD1;&amp;#x540E;&amp;#x662F;&amp;#x5426;&amp;#x4FDD;&amp;#x7559;&amp;#x5230;&amp;#x8FD0;&amp;#x884C;&amp;#x65F6;&amp;#x3002;&amp;#x5B83;&amp;#x6709;&amp;#x4E00;&amp;#x4E2A;&amp;#x53C2;&amp;#x6570;&amp;#xFF0C;&amp;#x7C7B;&amp;#x578B;&amp;#x4E3A;&lt;code&gt;RetentionPolicy&lt;/code&gt;&amp;#xFF0C;&amp;#x8868;&amp;#x793A;&amp;#x6CE8;&amp;#x89E3;&amp;#x7684;&amp;#x4FDD;&amp;#x7559;&amp;#x7B56;&amp;#x7565;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x5E38;&amp;#x89C1;&amp;#x7684;&amp;#x4FDD;&amp;#x7559;&amp;#x7B56;&amp;#x7565;&amp;#x5305;&amp;#x62EC;&amp;#xFF1A;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;RetentionPolicy.SOURCE&lt;/code&gt;: &amp;#x6CE8;&amp;#x89E3;&amp;#x4EC5;&amp;#x4FDD;&amp;#x7559;&amp;#x5728;&amp;#x6E90;&amp;#x4EE3;&amp;#x7801;&amp;#x4E2D;&amp;#xFF0C;&amp;#x7F16;&amp;#x8BD1;&amp;#x65F6;&amp;#x4F1A;&amp;#x88AB;&amp;#x4E22;&amp;#x5F03;&amp;#xFF0C;&amp;#x4E0D;&amp;#x4F1A;&amp;#x5305;&amp;#x542B;&amp;#x5728;&amp;#x751F;&amp;#x6210;&amp;#x7684;class&amp;#x6587;&amp;#x4EF6;&amp;#x4E2D;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;RetentionPolicy.CLASS&lt;/code&gt;: &amp;#x6CE8;&amp;#x89E3;&amp;#x4FDD;&amp;#x7559;&amp;#x5728;&amp;#x7F16;&amp;#x8BD1;&amp;#x540E;&amp;#x7684;class&amp;#x6587;&amp;#x4EF6;&amp;#x4E2D;&amp;#xFF0C;&amp;#x4F46;&amp;#x5728;&amp;#x8FD0;&amp;#x884C;&amp;#x65F6;&amp;#x4F1A;&amp;#x88AB;&amp;#x5FFD;&amp;#x7565;&amp;#xFF0C;&amp;#x9ED8;&amp;#x8BA4;&amp;#x503C;&amp;#x3002;&amp;#x5728;Kotlin&amp;#x4E2D;&amp;#x5BF9;&amp;#x5E94;&amp;#x7684;&amp;#x662F;&lt;code&gt;BINARY&lt;/code&gt;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;RetentionPolicy.RUNTIME&lt;/code&gt;: &amp;#x6CE8;&amp;#x89E3;&amp;#x4FDD;&amp;#x7559;&amp;#x5728;&amp;#x7F16;&amp;#x8BD1;&amp;#x540E;&amp;#x7684;class&amp;#x6587;&amp;#x4EF6;&amp;#x4E2D;&amp;#xFF0C;&amp;#x5E76;&amp;#x4E14;&amp;#x5728;&amp;#x8FD0;&amp;#x884C;&amp;#x65F6;&amp;#x53EF;&amp;#x4EE5;&amp;#x901A;&amp;#x8FC7;&amp;#x53CD;&amp;#x5C04;&amp;#x83B7;&amp;#x53D6;&amp;#x5230;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;#x901A;&amp;#x5E38;&amp;#x60C5;&amp;#x51B5;&amp;#x4E0B;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x5E0C;&amp;#x671B;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x6CE8;&amp;#x89E3;&amp;#x5728;&amp;#x8FD0;&amp;#x884C;&amp;#x65F6;&amp;#x4FDD;&amp;#x7559;&amp;#xFF0C;&amp;#x4EE5;&amp;#x4FBF;&amp;#x5728;&amp;#x8FD0;&amp;#x884C;&amp;#x65F6;&amp;#x901A;&amp;#x8FC7;&amp;#x53CD;&amp;#x5C04;&amp;#x6765;&amp;#x83B7;&amp;#x53D6;&amp;#x6CE8;&amp;#x89E3;&amp;#x4FE1;&amp;#x606F;&amp;#xFF0C;&amp;#x56E0;&amp;#x6B64;&amp;#xFF0C;&amp;#x4E00;&amp;#x822C;&amp;#x4F1A;&amp;#x6307;&amp;#x5B9A;&lt;code&gt;@Retention(RetentionPolicy.RUNTIME)&lt;/code&gt;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x4F8B;&amp;#x5982;&amp;#xFF0C;&amp;#x5F53;&amp;#x6211;&amp;#x4EEC;&amp;#x6307;&amp;#x5B9A;&lt;code&gt;@Retention(RetentionPolicy.RUNTIME)&lt;/code&gt;&amp;#x65F6;&amp;#xFF0C;&amp;#x8868;&amp;#x793A;&amp;#x8BE5;&amp;#x6CE8;&amp;#x89E3;&amp;#x5728;&amp;#x7F16;&amp;#x8BD1;&amp;#x540E;&amp;#x7684;class&amp;#x6587;&amp;#x4EF6;&amp;#x4E2D;&amp;#x4FDD;&amp;#x7559;&amp;#xFF0C;&amp;#x5E76;&amp;#x4E14;&amp;#x53EF;&amp;#x4EE5;&amp;#x5728;&amp;#x8FD0;&amp;#x884C;&amp;#x65F6;&amp;#x901A;&amp;#x8FC7;&amp;#x53CD;&amp;#x5C04;&amp;#x83B7;&amp;#x53D6;&amp;#x5230;&amp;#x3002;&lt;/p&gt;
&lt;h3 id=&quot;&amp;#x7F16;&amp;#x5199;&amp;#x6CE8;&amp;#x89E3;&amp;#x5668;&quot;&gt;&lt;a href=&quot;#&amp;#x7F16;&amp;#x5199;&amp;#x6CE8;&amp;#x89E3;&amp;#x5668;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x7F16;&amp;#x5199;&amp;#x6CE8;&amp;#x89E3;&amp;#x5668;&quot;&gt;&lt;/a&gt;&amp;#x7F16;&amp;#x5199;&amp;#x6CE8;&amp;#x89E3;&amp;#x5668;&lt;/h3&gt;&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;22&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;23&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;24&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;25&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;26&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;27&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;28&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;29&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;30&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;31&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;32&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;33&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;34&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;35&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;36&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;37&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;38&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;39&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;40&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;41&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;42&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;43&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;44&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;45&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;46&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;47&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;48&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;49&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;50&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;51&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;52&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;53&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;54&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;55&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;56&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;57&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;58&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;59&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;60&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;61&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;62&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;63&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;64&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;65&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;66&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;67&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;68&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;69&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;70&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;71&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;72&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;73&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;74&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;75&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;76&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;77&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;78&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;79&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;80&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;81&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;82&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;83&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;84&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;85&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;86&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;87&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;88&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;89&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;90&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;91&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;92&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;93&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;94&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;public class Processor extends AbstractProcessor {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    private Filer mFiler;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    private Messager mMessager;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    private Elements mElementUtils;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    @Override&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    public synchronized void init(ProcessingEnvironment processingEnv) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        super.init(processingEnv);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        mFiler = processingEnv.getFiler();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        mMessager = processingEnv.getMessager();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        mElementUtils = processingEnv.getElementUtils();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    @Override&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    public boolean process(Set&amp;lt;? extends TypeElement&amp;gt; annotations, RoundEnvironment roundEnv) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        if (!roundEnv.processingOver()) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            //&amp;#x83B7;&amp;#x53D6;&amp;#x4E0E;annotation&amp;#x76F8;&amp;#x5339;&amp;#x914D;&amp;#x7684;TypeElement,&amp;#x5373;&amp;#x6709;&amp;#x6CE8;&amp;#x91CA;&amp;#x58F0;&amp;#x660E;&amp;#x7684;class&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            Set&amp;lt;TypeElement&amp;gt; elements = getTypeElementsByAnnotationType(annotations, roundEnv.getRootElements());&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            for (TypeElement typeElement : elements) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                //&amp;#x5305;&amp;#x540D;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                String packageName = mElementUtils.getPackageOf(typeElement).getQualifiedName().toString();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                //&amp;#x7C7B;&amp;#x540D;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                String typeName = typeElement.getSimpleName().toString();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                //&amp;#x5168;&amp;#x79F0;&amp;#x7C7B;&amp;#x540D;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                ClassName className = ClassName.get(packageName, typeName);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                //&amp;#x81EA;&amp;#x52A8;&amp;#x751F;&amp;#x6210;&amp;#x7C7B;&amp;#x5168;&amp;#x79F0;&amp;#x540D;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                ClassName autoGenerationClassName = ClassName.get(packageName,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                        NameUtils.getAutoGeneratorTypeName(typeName));&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                //&amp;#x6784;&amp;#x5EFA;&amp;#x81EA;&amp;#x52A8;&amp;#x751F;&amp;#x6210;&amp;#x7684;&amp;#x7C7B;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                TypeSpec.Builder typeBuilder = TypeSpec.classBuilder(autoGenerationClassName)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                        .addModifiers(Modifier.PUBLIC)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                        .addAnnotation(Keep.class);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                //&amp;#x6DFB;&amp;#x52A0;&amp;#x6784;&amp;#x9020;&amp;#x65B9;&amp;#x6CD5;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                typeBuilder.addMethod(MethodSpec.constructorBuilder()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                        .addModifiers(Modifier.PUBLIC)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                        .addParameter(className, NameUtils.Variable.ANDROID_ACTIVITY)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                        .addStatement(&amp;quot;$N($N)&amp;quot;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                                NameUtils.Method.BIND_VIEW,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                                NameUtils.Variable.ANDROID_ACTIVITY)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                        .build());&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                //&amp;#x6DFB;&amp;#x52A0;bindView&amp;#x6210;&amp;#x5458;&amp;#x65B9;&amp;#x6CD5;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                MethodSpec.Builder bindViewBuilder = MethodSpec.methodBuilder(NameUtils.Method.BIND_VIEW)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                        .addModifiers(Modifier.PRIVATE)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                        .returns(TypeName.VOID)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                        .addParameter(className, NameUtils.Variable.ANDROID_ACTIVITY);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                //&amp;#x6DFB;&amp;#x52A0;&amp;#x65B9;&amp;#x6CD5;&amp;#x5185;&amp;#x5BB9;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                for (VariableElement variableElement : ElementFilter.fieldsIn(typeElement.getEnclosedElements())) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                    BindView bindView = variableElement.getAnnotation(BindView.class);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                    if (bindView != null) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                        bindViewBuilder.addStatement(&amp;quot;$N.$N=($T)$N.findViewById($L)&amp;quot;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                                NameUtils.Variable.ANDROID_ACTIVITY,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                                variableElement.getSimpleName(),&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                                variableElement,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                                NameUtils.Variable.ANDROID_ACTIVITY,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                                bindView.value()[0]&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                        ).addStatement(&amp;quot;$N.$N.setText($N.getString($L))&amp;quot;,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                                NameUtils.Variable.ANDROID_ACTIVITY,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                                variableElement.getSimpleName(),&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                                NameUtils.Variable.ANDROID_ACTIVITY,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                                bindView.value()[1]);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                typeBuilder.addMethod(bindViewBuilder.build());&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                //&amp;#x5199;&amp;#x5165;java&amp;#x6587;&amp;#x4EF6;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                try {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                    JavaFile.builder(packageName, typeBuilder.build()).build().writeTo(mFiler);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                } catch (IOException e) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                    mMessager.printMessage(Diagnostic.Kind.ERROR, e.getMessage(), typeElement);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        return true;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    private Set&amp;lt;TypeElement&amp;gt; getTypeElementsByAnnotationType(Set&amp;lt;? extends TypeElement&amp;gt; annotations, Set&amp;lt;? extends Element&amp;gt; elements) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        ....&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    @Override&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    public Set&amp;lt;String&amp;gt; getSupportedAnnotationTypes() {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        return new TreeSet&amp;lt;&amp;gt;(Arrays.asList(&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                BindView.class.getCanonicalName(),&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                Keep.class.getCanonicalName())&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        );&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x5728;&amp;#x8FD9;&amp;#x4E2A;&amp;#x5904;&amp;#x7406;&amp;#x5668;&amp;#x4E2D;&amp;#xFF0C;&amp;#x6309;&amp;#x7167;&amp;#x4E00;&amp;#x4E2A;&amp;#x7C7B;&amp;#x7684;&amp;#x521B;&amp;#x5EFA;&amp;#x987A;&amp;#x5E8F;&amp;#x505A;&amp;#x4E86;&amp;#x4EE5;&amp;#x4E0B;&amp;#x51E0;&amp;#x6B65;&amp;#xFF1A;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&amp;#x751F;&amp;#x6210;&amp;#x6784;&amp;#x5EFA;&amp;#x7684;&amp;#x7C7B;&lt;/li&gt;
&lt;li&gt;&amp;#x6DFB;&amp;#x52A0;&amp;#x7C7B;&amp;#x7684;&amp;#x6784;&amp;#x9020;&amp;#x65B9;&amp;#x6CD5;&amp;#xFF0C;&amp;#x5E76;&amp;#x5728;&amp;#x6784;&amp;#x9020;&amp;#x65B9;&amp;#x6CD5;&amp;#x4E2D;&amp;#x5F15;&amp;#x7528;&amp;#x6211;&amp;#x4EEC;&amp;#x9700;&amp;#x8981;&amp;#x7684;&lt;code&gt;bindView&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&lt;/li&gt;
&lt;li&gt;&amp;#x4E3A;&amp;#x7C7B;&amp;#x6DFB;&amp;#x52A0;&lt;code&gt;bindView&lt;/code&gt;&amp;#x6210;&amp;#x5458;&amp;#x65B9;&amp;#x6CD5;&lt;/li&gt;
&lt;li&gt;&amp;#x5411;&lt;code&gt;bindView&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x4E2D;&amp;#x6DFB;&amp;#x52A0;&amp;#x5B9E;&amp;#x73B0;&amp;#x4EE3;&amp;#x7801;&amp;#xFF0C;&amp;#x4E5F;&amp;#x5C31;&amp;#x662F;&lt;code&gt;findVieById&lt;/code&gt;&amp;#x4E0E;&lt;code&gt;setText&lt;/code&gt;&amp;#x7684;&amp;#x4EE3;&amp;#x7801;&amp;#x5B9E;&amp;#x73B0;&lt;/li&gt;
&lt;li&gt;&amp;#x901A;&amp;#x8FC7;&lt;code&gt;javaPoet&lt;/code&gt;&amp;#x5199;&amp;#x5165;&amp;#x5230;&lt;code&gt;java&lt;/code&gt;&amp;#x6587;&amp;#x4EF6;&amp;#x4E2D;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;JavaPoet&lt;/code&gt;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x7528;&amp;#x4E8E;&amp;#x751F;&amp;#x6210;Java&amp;#x4EE3;&amp;#x7801;&amp;#x7684;&amp;#x5E93;&amp;#xFF0C;&amp;#x5B83;&amp;#x63D0;&amp;#x4F9B;&amp;#x4E86;&amp;#x4E00;&amp;#x5957;API&amp;#x6765;&amp;#x6784;&amp;#x5EFA;Java&amp;#x6E90;&amp;#x4EE3;&amp;#x7801;&amp;#xFF0C;&amp;#x5E76;&amp;#x4E14;&amp;#x53EF;&amp;#x4EE5;&amp;#x8F93;&amp;#x51FA;&amp;#x6210;Java&amp;#x6587;&amp;#x4EF6;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x7ECF;&amp;#x8FC7;&amp;#x4E0A;&amp;#x9762;&amp;#x7684;&amp;#x6B65;&amp;#x9AA4;&amp;#xFF0C;&amp;#x673A;&amp;#x4F1A;&amp;#x81EA;&amp;#x52A8;&amp;#x5E2E;&amp;#x6211;&amp;#x4EEC;&amp;#x751F;&amp;#x6210;&amp;#x4E00;&amp;#x4E2A;&amp;#x7ED1;&amp;#x5B9A;View&amp;#x7684;&amp;#x4EE3;&amp;#x7801;&amp;#x7C7B;&amp;#x3002;&lt;/p&gt;
&lt;h3 id=&quot;&amp;#x6CE8;&amp;#x89E3;&amp;#x8FD0;&amp;#x7528;&quot;&gt;&lt;a href=&quot;#&amp;#x6CE8;&amp;#x89E3;&amp;#x8FD0;&amp;#x7528;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x6CE8;&amp;#x89E3;&amp;#x8FD0;&amp;#x7528;&quot;&gt;&lt;/a&gt;&amp;#x6CE8;&amp;#x89E3;&amp;#x8FD0;&amp;#x7528;&lt;/h3&gt;&lt;p&gt;&amp;#x63A5;&amp;#x4E0B;&amp;#x6765;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x6765;&amp;#x6F14;&amp;#x793A;&amp;#x5982;&amp;#x4F55;&amp;#x4F7F;&amp;#x7528;@BindView&amp;#x6CE8;&amp;#x89E3;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;class MainActivity : AppCompatActivity() {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    @BindView(R.id.public_service, R.string.public_service)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    lateinit var sName: TextView&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    @BindView(R.id.personal_wx, R.string.personal_wx)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    lateinit var sPhone: TextView&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    override fun onCreate(savedInstanceState: Bundle?) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        super.onCreate(savedInstanceState)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        setContentView(R.layout.activity_main)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        Butterknife.bind(this)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x5728;&lt;code&gt;MainActivity&lt;/code&gt;&amp;#x4E2D;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x4F7F;&amp;#x7528;&amp;#x4E86;&lt;code&gt;@BindView&lt;/code&gt;&amp;#x6CE8;&amp;#x89E3;&amp;#x6765;&amp;#x6807;&amp;#x8BB0;&lt;code&gt;TextView&lt;/code&gt;&amp;#x5B57;&amp;#x6BB5;&amp;#xFF0C;&amp;#x7136;&amp;#x540E;&amp;#x5728;&lt;code&gt;onCreate&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x4E2D;&amp;#x8C03;&amp;#x7528;&lt;code&gt;Butterknife.bind(this)&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#xFF0C;&amp;#x5373;&amp;#x53EF;&amp;#x81EA;&amp;#x52A8;&amp;#x4E3A;&lt;code&gt;textView&lt;/code&gt;&amp;#x5B57;&amp;#x6BB5;&amp;#x8FDB;&amp;#x884C;&amp;#x8D4B;&amp;#x503C;&amp;#xFF0C;&amp;#x65E0;&amp;#x9700;&amp;#x624B;&amp;#x52A8;&amp;#x8C03;&amp;#x7528;&lt;code&gt;findViewById&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;Butterknife&lt;/code&gt;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x7684;&amp;#x7C7B;&amp;#xFF0C;&amp;#x5185;&amp;#x90E8;&amp;#x63D0;&amp;#x4F9B;&lt;code&gt;bind&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#xFF0C;&amp;#x901A;&amp;#x8FC7;&amp;#x53CD;&amp;#x5C04;&amp;#x6765;&amp;#x6784;&amp;#x5EFA;&amp;#x4E0A;&amp;#x9762;&amp;#x6211;&amp;#x4EEC;&amp;#x81EA;&amp;#x52A8;&amp;#x751F;&amp;#x6210;&amp;#x7684;&amp;#x7ED1;&amp;#x5B9A;&amp;#x7C7B;&amp;#x7684;&amp;#x5B9E;&amp;#x4F8B;&amp;#x3002;&lt;/p&gt;
&lt;h3 id=&quot;&amp;#x81EA;&amp;#x52A8;&amp;#x751F;&amp;#x6210;&amp;#x7684;&amp;#x7C7B;&quot;&gt;&lt;a href=&quot;#&amp;#x81EA;&amp;#x52A8;&amp;#x751F;&amp;#x6210;&amp;#x7684;&amp;#x7C7B;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x81EA;&amp;#x52A8;&amp;#x751F;&amp;#x6210;&amp;#x7684;&amp;#x7C7B;&quot;&gt;&lt;/a&gt;&amp;#x81EA;&amp;#x52A8;&amp;#x751F;&amp;#x6210;&amp;#x7684;&amp;#x7C7B;&lt;/h3&gt;&lt;p&gt;&amp;#x6700;&amp;#x540E;&amp;#xFF0C;&amp;#x518D;&amp;#x6765;&amp;#x770B;&amp;#x4E0B;&amp;#x81EA;&amp;#x52A8;&amp;#x751F;&amp;#x6210;&amp;#x7684;&amp;#x7C7B;&amp;#x7684;&amp;#x771F;&amp;#x6B63;&amp;#x9762;&amp;#x76EE;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;@Keep&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;public class MainActivity$Binding {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;  public MainActivity$Binding(MainActivity activity) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    bindView(activity);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;  }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;  private void bindView(MainActivity activity) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    activity.sName=(TextView)activity.findViewById(2131165265);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    activity.sName.setText(activity.getString(2131427362));&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    activity.sPhone=(TextView)activity.findViewById(2131165262);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    activity.sPhone.setText(activity.getString(2131427360));&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;  }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h2 id=&quot;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&amp;#x4E0E;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&quot;&gt;&lt;a href=&quot;#&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&amp;#x4E0E;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&amp;#x4E0E;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&quot;&gt;&lt;/a&gt;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&amp;#x4E0E;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&lt;/h2&gt;&lt;p&gt;&amp;#x5728;&amp;#x4F7F;&amp;#x7528;APT&amp;#x65F6;&amp;#xFF0C;&amp;#x6709;&amp;#x4E00;&amp;#x4E9B;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&amp;#x548C;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&amp;#x9700;&amp;#x8981;&amp;#x6211;&amp;#x4EEC;&amp;#x6CE8;&amp;#x610F;&amp;#xFF1A;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x907F;&amp;#x514D;&amp;#x6EE5;&amp;#x7528;APT&lt;/strong&gt;: &amp;#x867D;&amp;#x7136;APT&amp;#x80FD;&amp;#x591F;&amp;#x5E2E;&amp;#x52A9;&amp;#x6211;&amp;#x4EEC;&amp;#x5B9E;&amp;#x73B0;&amp;#x5F88;&amp;#x591A;&amp;#x9AD8;&amp;#x7EA7;&amp;#x529F;&amp;#x80FD;&amp;#xFF0C;&amp;#x4F46;&amp;#x662F;&amp;#x6EE5;&amp;#x7528;APT&amp;#x4F1A;&amp;#x5BFC;&amp;#x81F4;&amp;#x7F16;&amp;#x8BD1;&amp;#x65F6;&amp;#x95F4;&amp;#x8FC7;&amp;#x957F;&amp;#xFF0C;&amp;#x589E;&amp;#x52A0;&amp;#x9879;&amp;#x76EE;&amp;#x7684;&amp;#x590D;&amp;#x6742;&amp;#x5EA6;&amp;#x3002;&amp;#x56E0;&amp;#x6B64;&amp;#xFF0C;&amp;#x5728;&amp;#x4F7F;&amp;#x7528;APT&amp;#x65F6;&amp;#xFF0C;&amp;#x9700;&amp;#x8981;&amp;#x6743;&amp;#x8861;&amp;#x5229;&amp;#x5F0A;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x8FC7;&amp;#x5EA6;&amp;#x4F7F;&amp;#x7528;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x4F18;&amp;#x5316;&amp;#x4EE3;&amp;#x7801;&amp;#x751F;&amp;#x6210;&lt;/strong&gt;: &amp;#x5728;&amp;#x7F16;&amp;#x5199;&amp;#x6CE8;&amp;#x89E3;&amp;#x5904;&amp;#x7406;&amp;#x5668;&amp;#x65F6;&amp;#xFF0C;&amp;#x9700;&amp;#x8981;&amp;#x5C3D;&amp;#x91CF;&amp;#x4F18;&amp;#x5316;&amp;#x751F;&amp;#x6210;&amp;#x7684;&amp;#x4EE3;&amp;#x7801;&amp;#xFF0C;&amp;#x51CF;&amp;#x5C11;&amp;#x751F;&amp;#x6210;&amp;#x7684;&amp;#x4EE3;&amp;#x7801;&amp;#x91CF;&amp;#xFF0C;&amp;#x63D0;&amp;#x9AD8;&amp;#x4EE3;&amp;#x7801;&amp;#x7684;&amp;#x6267;&amp;#x884C;&amp;#x6548;&amp;#x7387;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x5904;&amp;#x7406;&amp;#x5F02;&amp;#x5E38;&amp;#x60C5;&amp;#x51B5;&lt;/strong&gt;: &amp;#x5728;&amp;#x5904;&amp;#x7406;&amp;#x6CE8;&amp;#x89E3;&amp;#x65F6;&amp;#xFF0C;&amp;#x9700;&amp;#x8981;&amp;#x8003;&amp;#x8651;&amp;#x5230;&amp;#x5404;&amp;#x79CD;&amp;#x5F02;&amp;#x5E38;&amp;#x60C5;&amp;#x51B5;&amp;#xFF0C;&amp;#x6BD4;&amp;#x5982;&amp;#x6CE8;&amp;#x89E3;&amp;#x4E0D;&amp;#x5B58;&amp;#x5728;&amp;#x3001;&amp;#x6CE8;&amp;#x89E3;&amp;#x53C2;&amp;#x6570;&amp;#x9519;&amp;#x8BEF;&amp;#x7B49;&amp;#x60C5;&amp;#x51B5;&amp;#xFF0C;&amp;#x4ECE;&amp;#x800C;&amp;#x63D0;&amp;#x9AD8;&amp;#x4EE3;&amp;#x7801;&amp;#x7684;&amp;#x5065;&amp;#x58EE;&amp;#x6027;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;&amp;#x7ED3;&amp;#x8BED;&quot;&gt;&lt;a href=&quot;#&amp;#x7ED3;&amp;#x8BED;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x7ED3;&amp;#x8BED;&quot;&gt;&lt;/a&gt;&amp;#x7ED3;&amp;#x8BED;&lt;/h2&gt;&lt;p&gt;&amp;#x901A;&amp;#x8FC7;&amp;#x672C;&amp;#x6587;&amp;#x7684;&amp;#x4ECB;&amp;#x7ECD;&amp;#xFF0C;&amp;#x76F8;&amp;#x4FE1;&amp;#x5927;&amp;#x5BB6;&amp;#x5DF2;&amp;#x7ECF;&amp;#x5BF9;APT&amp;#x6709;&amp;#x4E86;&amp;#x66F4;&amp;#x6DF1;&amp;#x5165;&amp;#x7684;&amp;#x7406;&amp;#x89E3;&amp;#xFF0C;&amp;#x5E76;&amp;#x4E14;&amp;#x80FD;&amp;#x591F;&amp;#x5728;&amp;#x5B9E;&amp;#x9645;&amp;#x7684;&amp;#x9879;&amp;#x76EE;&amp;#x4E2D;&amp;#x8FD0;&amp;#x7528;APT&amp;#x6765;&amp;#x63D0;&amp;#x9AD8;&amp;#x5F00;&amp;#x53D1;&amp;#x6548;&amp;#x7387;&amp;#x3002;APT&amp;#x4F5C;&amp;#x4E3A;&amp;#x4E00;&amp;#x79CD;&amp;#x5F3A;&amp;#x5927;&amp;#x7684;&amp;#x5DE5;&amp;#x5177;&amp;#xFF0C;&amp;#x5728;Android&amp;#x5F00;&amp;#x53D1;&amp;#x4E2D;&amp;#x6709;&amp;#x7740;&amp;#x5E7F;&amp;#x6CDB;&amp;#x7684;&amp;#x5E94;&amp;#x7528;&amp;#x524D;&amp;#x666F;&amp;#xFF0C;&amp;#x5E0C;&amp;#x671B;&amp;#x5927;&amp;#x5BB6;&amp;#x80FD;&amp;#x591F;&amp;#x5584;&amp;#x52A0;&amp;#x5229;&amp;#x7528;&amp;#xFF0C;&amp;#x53D1;&amp;#x6325;&amp;#x5176;&amp;#x6700;&amp;#x5927;&amp;#x7684;&amp;#x4F5C;&amp;#x7528;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;a href=&quot;#&amp;#x63A8;&amp;#x8350;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;/a&gt;&amp;#x63A8;&amp;#x8350;&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-startup&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android_startup&lt;/a&gt;: &amp;#x63D0;&amp;#x4F9B;&amp;#x4E00;&amp;#x79CD;&amp;#x5728;&amp;#x5E94;&amp;#x7528;&amp;#x542F;&amp;#x52A8;&amp;#x65F6;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x52A0;&amp;#x7B80;&amp;#x5355;&amp;#x3001;&amp;#x9AD8;&amp;#x6548;&amp;#x7684;&amp;#x65B9;&amp;#x5F0F;&amp;#x6765;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x7EC4;&amp;#x4EF6;&amp;#xFF0C;&amp;#x4F18;&amp;#x5316;&amp;#x542F;&amp;#x52A8;&amp;#x901F;&amp;#x5EA6;&amp;#x3002;&amp;#x4E0D;&amp;#x4EC5;&amp;#x652F;&amp;#x6301;Jetpack App Startup&amp;#x7684;&amp;#x5168;&amp;#x90E8;&amp;#x529F;&amp;#x80FD;&amp;#xFF0C;&amp;#x8FD8;&amp;#x63D0;&amp;#x4F9B;&amp;#x989D;&amp;#x5916;&amp;#x7684;&amp;#x540C;&amp;#x6B65;&amp;#x4E0E;&amp;#x5F02;&amp;#x6B65;&amp;#x7B49;&amp;#x5F85;&amp;#x3001;&amp;#x7EBF;&amp;#x7A0B;&amp;#x63A7;&amp;#x5236;&amp;#x4E0E;&amp;#x591A;&amp;#x8FDB;&amp;#x7A0B;&amp;#x652F;&amp;#x6301;&amp;#x7B49;&amp;#x529F;&amp;#x80FD;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/AwesomeGithub&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AwesomeGithub&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Github&amp;#x7684;&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x7EAF;&amp;#x7EC3;&amp;#x4E60;&amp;#x9879;&amp;#x76EE;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x7EC4;&amp;#x4EF6;&amp;#x5316;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x8D26;&amp;#x6237;&amp;#x5BC6;&amp;#x7801;&amp;#x4E0E;&amp;#x8BA4;&amp;#x8BC1;&amp;#x767B;&amp;#x9646;&amp;#x3002;&amp;#x4F7F;&amp;#x7528;Kotlin&amp;#x8BED;&amp;#x8A00;&amp;#x8FDB;&amp;#x884C;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x9879;&amp;#x76EE;&amp;#x67B6;&amp;#x6784;&amp;#x662F;&amp;#x57FA;&amp;#x4E8E;JetPack\&amp;amp;DataBinding&amp;#x7684;MVVM&amp;#xFF1B;&amp;#x9879;&amp;#x76EE;&amp;#x4E2D;&amp;#x4F7F;&amp;#x7528;&amp;#x4E86;Arouter&amp;#x3001;Retrofit&amp;#x3001;Coroutine&amp;#x3001;Glide&amp;#x3001;Dagger&amp;#x4E0E;Hilt&amp;#x7B49;&amp;#x6D41;&amp;#x884C;&amp;#x5F00;&amp;#x6E90;&amp;#x6280;&amp;#x672F;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/flutter_github&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;flutter_github&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Flutter&amp;#x7684;&amp;#x8DE8;&amp;#x5E73;&amp;#x53F0;&amp;#x7248;&amp;#x672C;Github&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x4E0E;AwesomeGithub&amp;#x76F8;&amp;#x5BF9;&amp;#x5E94;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-api-analysis&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android-api-analysis&lt;/a&gt;: &amp;#x7ED3;&amp;#x5408;&amp;#x8BE6;&amp;#x7EC6;&amp;#x7684;Demo&amp;#x6765;&amp;#x5168;&amp;#x9762;&amp;#x89E3;&amp;#x6790;Android&amp;#x76F8;&amp;#x5173;&amp;#x7684;&amp;#x77E5;&amp;#x8BC6;&amp;#x70B9;, &amp;#x5E2E;&amp;#x52A9;&amp;#x8BFB;&amp;#x8005;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x5FEB;&amp;#x7684;&amp;#x638C;&amp;#x63E1;&amp;#x4E0E;&amp;#x7406;&amp;#x89E3;&amp;#x6240;&amp;#x9610;&amp;#x8FF0;&amp;#x7684;&amp;#x8981;&amp;#x70B9;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/daily_algorithm&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;daily_algorithm&lt;/a&gt;: &amp;#x6BCF;&amp;#x65E5;&amp;#x4E00;&amp;#x7B97;&amp;#x6CD5;&amp;#xFF0C;&amp;#x7531;&amp;#x6D45;&amp;#x5165;&amp;#x6DF1;&amp;#xFF0C;&amp;#x6B22;&amp;#x8FCE;&amp;#x52A0;&amp;#x5165;&amp;#x4E00;&amp;#x8D77;&amp;#x5171;&amp;#x52C9;&amp;#x3002;&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;h2 id=&quot;&amp;#x524D;&amp;#x8A00;&quot;&gt;&lt;a href=&quot;#&amp;#x524D;&amp;#x8A00;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x524D;&amp;#x8A00;&quot;&gt;&lt;/a&gt;&amp;#x524D;&amp;#x8A00;&lt;/h2&gt;&lt;p&gt;&amp;#x5728;Androi
    
    </summary>
    
      <category term="android" scheme="https://www.rousetime.com/categories/android/"/>
    
    
      <category term="android" scheme="https://www.rousetime.com/tags/android/"/>
    
  </entry>
  
  <entry>
    <title>你真的懂 Kotlin 中的 by 关键字吗？3分钟搞懂精髓</title>
    <link href="https://www.rousetime.com/2024/03/11/%E4%BD%A0%E7%9C%9F%E7%9A%84%E6%87%82-Kotlin-%E4%B8%AD%E7%9A%84-by-%E5%85%B3%E9%94%AE%E5%AD%97%E5%90%97%EF%BC%9F3%E5%88%86%E9%92%9F%E6%90%9E%E6%87%82%E7%B2%BE%E9%AB%93/"/>
    <id>https://www.rousetime.com/2024/03/11/你真的懂-Kotlin-中的-by-关键字吗？3分钟搞懂精髓/</id>
    <published>2024-03-11T00:42:52.000Z</published>
    <updated>2024-03-11T00:43:35.947Z</updated>
    
    <content type="html">&lt;h2 id=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;a href=&quot;#&amp;#x5F15;&amp;#x8A00;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;/a&gt;&amp;#x5F15;&amp;#x8A00;&lt;/h2&gt;&lt;p&gt;&amp;#x5728;Kotlin&amp;#x4E2D;&amp;#xFF0C;&lt;code&gt;by&lt;/code&gt; &amp;#x5173;&amp;#x952E;&amp;#x5B57;&amp;#x4E3B;&amp;#x8981;&amp;#x7528;&amp;#x4E8E;&amp;#x5B9E;&amp;#x73B0;&amp;#x59D4;&amp;#x6258;&amp;#x6A21;&amp;#x5F0F;&amp;#x3002;&amp;#x59D4;&amp;#x6258;&amp;#x6A21;&amp;#x5F0F;&amp;#x662F;&amp;#x4E00;&amp;#x79CD;&amp;#x8BBE;&amp;#x8BA1;&amp;#x6A21;&amp;#x5F0F;&amp;#xFF0C;&amp;#x5B83;&amp;#x5141;&amp;#x8BB8;&amp;#x4E00;&amp;#x4E2A;&amp;#x5BF9;&amp;#x8C61;&amp;#x5C06;&amp;#x90E8;&amp;#x5206;&amp;#x804C;&amp;#x8D23;&amp;#x59D4;&amp;#x6258;&amp;#x7ED9;&amp;#x53E6;&amp;#x4E00;&amp;#x4E2A;&amp;#x5BF9;&amp;#x8C61;&amp;#x3002;&amp;#x5728;Kotlin&amp;#x4E2D;&amp;#xFF0C;&lt;code&gt;by&lt;/code&gt; &amp;#x5173;&amp;#x952E;&amp;#x5B57;&amp;#x63D0;&amp;#x4F9B;&amp;#x4E86;&amp;#x4E00;&amp;#x79CD;&amp;#x7B80;&amp;#x6D01;&amp;#x7684;&amp;#x8BED;&amp;#x6CD5;&amp;#xFF0C;&amp;#x4F7F;&amp;#x5F97;&amp;#x59D4;&amp;#x6258;&amp;#x7684;&amp;#x5B9E;&amp;#x73B0;&amp;#x53D8;&amp;#x5F97;&amp;#x66F4;&amp;#x52A0;&amp;#x8F7B;&amp;#x677E;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x59D4;&amp;#x6258;&amp;#x6A21;&amp;#x5F0F;&amp;#x6982;&amp;#x8FF0;&quot;&gt;&lt;a href=&quot;#&amp;#x59D4;&amp;#x6258;&amp;#x6A21;&amp;#x5F0F;&amp;#x6982;&amp;#x8FF0;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x59D4;&amp;#x6258;&amp;#x6A21;&amp;#x5F0F;&amp;#x6982;&amp;#x8FF0;&quot;&gt;&lt;/a&gt;&amp;#x59D4;&amp;#x6258;&amp;#x6A21;&amp;#x5F0F;&amp;#x6982;&amp;#x8FF0;&lt;/h2&gt;&lt;p&gt;&amp;#x5728;&amp;#x59D4;&amp;#x6258;&amp;#x6A21;&amp;#x5F0F;&amp;#x4E2D;&amp;#xFF0C;&amp;#x6709;&amp;#x4E24;&amp;#x4E2A;&amp;#x4E3B;&amp;#x8981;&amp;#x89D2;&amp;#x8272;&amp;#xFF1A;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x59D4;&amp;#x6258;&amp;#x7C7B;&amp;#xFF08;Delegated Class&amp;#xFF09;&amp;#xFF1A;&lt;/strong&gt; &amp;#x6301;&amp;#x6709;&amp;#x5B9E;&amp;#x9645;&amp;#x7684;&amp;#x5DE5;&amp;#x4F5C;&amp;#x5BF9;&amp;#x8C61;&amp;#xFF0C;&amp;#x8D1F;&amp;#x8D23;&amp;#x5C06;&amp;#x90E8;&amp;#x5206;&amp;#x804C;&amp;#x8D23;&amp;#x59D4;&amp;#x6258;&amp;#x7ED9;&amp;#x8FD9;&amp;#x4E2A;&amp;#x5BF9;&amp;#x8C61;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x59D4;&amp;#x6258;&amp;#x5C5E;&amp;#x6027;&amp;#xFF08;Delegated Property&amp;#xFF09;&amp;#xFF1A;&lt;/strong&gt; &amp;#x5728;&amp;#x59D4;&amp;#x6258;&amp;#x7C7B;&amp;#x4E2D;&amp;#x58F0;&amp;#x660E;&amp;#x7684;&amp;#x5C5E;&amp;#x6027;&amp;#xFF0C;&amp;#x4F7F;&amp;#x7528; &lt;code&gt;by&lt;/code&gt; &amp;#x5173;&amp;#x952E;&amp;#x5B57;&amp;#x5C06;&amp;#x5176;&amp;#x59D4;&amp;#x6258;&amp;#x7ED9;&amp;#x5176;&amp;#x4ED6;&amp;#x7C7B;&amp;#x3002;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;by&amp;#x5173;&amp;#x952E;&amp;#x5B57;&amp;#x7684;&amp;#x5DE5;&amp;#x4F5C;&amp;#x539F;&amp;#x7406;&quot;&gt;&lt;a href=&quot;#by&amp;#x5173;&amp;#x952E;&amp;#x5B57;&amp;#x7684;&amp;#x5DE5;&amp;#x4F5C;&amp;#x539F;&amp;#x7406;&quot; class=&quot;headerlink&quot; title=&quot;by&amp;#x5173;&amp;#x952E;&amp;#x5B57;&amp;#x7684;&amp;#x5DE5;&amp;#x4F5C;&amp;#x539F;&amp;#x7406;&quot;&gt;&lt;/a&gt;by&amp;#x5173;&amp;#x952E;&amp;#x5B57;&amp;#x7684;&amp;#x5DE5;&amp;#x4F5C;&amp;#x539F;&amp;#x7406;&lt;/h2&gt;&lt;p&gt;&amp;#x5F53;&amp;#x4F7F;&amp;#x7528; &lt;code&gt;by&lt;/code&gt; &amp;#x5173;&amp;#x952E;&amp;#x5B57;&amp;#x5C06;&amp;#x5C5E;&amp;#x6027;&amp;#x59D4;&amp;#x6258;&amp;#x7ED9;&amp;#x5176;&amp;#x4ED6;&amp;#x7C7B;&amp;#x65F6;&amp;#xFF0C;&amp;#x7F16;&amp;#x8BD1;&amp;#x5668;&amp;#x4F1A;&amp;#x5728;&amp;#x540E;&amp;#x53F0;&amp;#x751F;&amp;#x6210;&amp;#x4E00;&amp;#x4E9B;&amp;#x989D;&amp;#x5916;&amp;#x7684;&amp;#x4EE3;&amp;#x7801;&amp;#xFF0C;&amp;#x5B9E;&amp;#x9645;&amp;#x4E0A;&amp;#x662F;&amp;#x5C06;&amp;#x5C5E;&amp;#x6027;&amp;#x7684; getter &amp;#x548C; setter &amp;#x65B9;&amp;#x6CD5;&amp;#x59D4;&amp;#x6258;&amp;#x7ED9;&amp;#x7279;&amp;#x5B9A;&amp;#x7684;&amp;#x59D4;&amp;#x6258;&amp;#x7C7B;&amp;#x3002;&amp;#x4E0B;&amp;#x9762;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x7B80;&amp;#x5355;&amp;#x7684;&amp;#x4F8B;&amp;#x5B50;&amp;#x6765;&amp;#x8BF4;&amp;#x660E; &lt;code&gt;by&lt;/code&gt; &amp;#x5173;&amp;#x952E;&amp;#x5B57;&amp;#x7684;&amp;#x5DE5;&amp;#x4F5C;&amp;#x539F;&amp;#x7406;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;interface&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;Printer&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(message: &lt;span class=&quot;type&quot;&gt;String&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;DefaultPrinter&lt;/span&gt; : &lt;span class=&quot;type&quot;&gt;Printer {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(message: &lt;span class=&quot;type&quot;&gt;String&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        println(&lt;span class=&quot;string&quot;&gt;&amp;quot;Default: &lt;span class=&quot;variable&quot;&gt;$message&lt;/span&gt;&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;CustomPrinter&lt;/span&gt;&lt;/span&gt;(&lt;span class=&quot;keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; delegate: Printer) : Printer &lt;span class=&quot;keyword&quot;&gt;by&lt;/span&gt; delegate&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; customPrinter = CustomPrinter(DefaultPrinter())&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    customPrinter.print(&lt;span class=&quot;string&quot;&gt;&amp;quot;Hello, Kotlin!&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x5728;&amp;#x8FD9;&amp;#x4E2A;&amp;#x4F8B;&amp;#x5B50;&amp;#x4E2D;&amp;#xFF0C;&lt;code&gt;CustomPrinter&lt;/code&gt; &amp;#x7C7B;&amp;#x901A;&amp;#x8FC7; &lt;code&gt;by&lt;/code&gt; &amp;#x5173;&amp;#x952E;&amp;#x5B57;&amp;#x5C06; &lt;code&gt;Printer&lt;/code&gt; &amp;#x63A5;&amp;#x53E3;&amp;#x7684;&amp;#x5B9E;&amp;#x73B0;&amp;#x59D4;&amp;#x6258;&amp;#x7ED9;&amp;#x4E86; &lt;code&gt;DefaultPrinter&lt;/code&gt; &amp;#x7C7B;&amp;#x3002;&amp;#x7F16;&amp;#x8BD1;&amp;#x5668;&amp;#x4F1A;&amp;#x751F;&amp;#x6210;&amp;#x7C7B;&amp;#x4F3C;&amp;#x4E0B;&amp;#x9762;&amp;#x7684;&amp;#x4EE3;&amp;#x7801;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;CustomPrinter&lt;/span&gt;&lt;/span&gt;(&lt;span class=&quot;keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; delegate: Printer) : Printer {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;print&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(message: &lt;span class=&quot;type&quot;&gt;String&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        delegate.print(message)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x5B9E;&amp;#x9645;&amp;#x4E0A;&amp;#xFF0C;&lt;code&gt;CustomPrinter&lt;/code&gt; &amp;#x4E2D;&amp;#x7684; &lt;code&gt;print&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x88AB;&amp;#x59D4;&amp;#x6258;&amp;#x7ED9;&amp;#x4E86; &lt;code&gt;DefaultPrinter&lt;/code&gt; &amp;#x7684; &lt;code&gt;print&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x59D4;&amp;#x6258;&amp;#x7C7B;&quot;&gt;&lt;a href=&quot;#&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x59D4;&amp;#x6258;&amp;#x7C7B;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x59D4;&amp;#x6258;&amp;#x7C7B;&quot;&gt;&lt;/a&gt;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x59D4;&amp;#x6258;&amp;#x7C7B;&lt;/h2&gt;&lt;p&gt;&amp;#x9664;&amp;#x4E86;&amp;#x4F7F;&amp;#x7528;&amp;#x63A5;&amp;#x53E3;&amp;#x4F5C;&amp;#x4E3A;&amp;#x59D4;&amp;#x6258;&amp;#x7684;&amp;#x5BF9;&amp;#x8C61;&amp;#x5916;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x8FD8;&amp;#x53EF;&amp;#x4EE5;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x59D4;&amp;#x6258;&amp;#x7C7B;&amp;#x3002;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x59D4;&amp;#x6258;&amp;#x7C7B;&amp;#x9700;&amp;#x8981;&amp;#x5B9E;&amp;#x73B0;&amp;#x5C5E;&amp;#x6027;&amp;#x59D4;&amp;#x6258;&amp;#x7684;&amp;#x63A5;&amp;#x53E3;&amp;#xFF0C;&amp;#x5373;&amp;#x5177;&amp;#x5907; &lt;code&gt;getValue&lt;/code&gt; &amp;#x548C; &lt;code&gt;setValue&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x3002;&amp;#x4EE5;&amp;#x4E0B;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x7B80;&amp;#x5355;&amp;#x7684;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x59D4;&amp;#x6258;&amp;#x7C7B;&amp;#x7684;&amp;#x4F8B;&amp;#x5B50;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;22&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;23&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;24&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;25&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;import&lt;/span&gt; kotlin.reflect.KProperty&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;CustomDelegate&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;var&lt;/span&gt; value: String = &lt;span class=&quot;string&quot;&gt;&amp;quot;&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;operator&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;getValue&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(thisRef: &lt;span class=&quot;type&quot;&gt;Any&lt;/span&gt;?, property: &lt;span class=&quot;type&quot;&gt;KProperty&lt;/span&gt;&amp;lt;*&amp;gt;)&lt;/span&gt;&lt;/span&gt;: String {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        println(&lt;span class=&quot;string&quot;&gt;&amp;quot;Getting value: &lt;span class=&quot;variable&quot;&gt;$value&lt;/span&gt;&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; value&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;operator&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;setValue&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(thisRef: &lt;span class=&quot;type&quot;&gt;Any&lt;/span&gt;?, property: &lt;span class=&quot;type&quot;&gt;KProperty&lt;/span&gt;&amp;lt;*&amp;gt;, newValue: &lt;span class=&quot;type&quot;&gt;String&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        println(&lt;span class=&quot;string&quot;&gt;&amp;quot;Setting value: &lt;span class=&quot;variable&quot;&gt;$newValue&lt;/span&gt;&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        value = newValue&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;Example&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;var&lt;/span&gt; customProperty: String &lt;span class=&quot;keyword&quot;&gt;by&lt;/span&gt; CustomDelegate()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; example = Example()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    example.customProperty = &lt;span class=&quot;string&quot;&gt;&amp;quot;Hello, Kotlin!&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    println(example.customProperty)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x5728;&amp;#x4E0A;&amp;#x9762;&amp;#x7684;&amp;#x4F8B;&amp;#x5B50;&amp;#x4E2D;&amp;#xFF0C;&lt;code&gt;CustomDelegate&lt;/code&gt; &amp;#x7C7B;&amp;#x5B9E;&amp;#x73B0;&amp;#x4E86;&amp;#x5C5E;&amp;#x6027;&amp;#x59D4;&amp;#x6258;&amp;#x7684;&amp;#x63A5;&amp;#x53E3;&amp;#xFF0C;&amp;#x901A;&amp;#x8FC7;&amp;#x91CD;&amp;#x5199; &lt;code&gt;getValue&lt;/code&gt; &amp;#x548C; &lt;code&gt;setValue&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x5B9E;&amp;#x73B0;&amp;#x4E86;&amp;#x5C5E;&amp;#x6027;&amp;#x7684;&amp;#x8BFB;&amp;#x53D6;&amp;#x548C;&amp;#x8BBE;&amp;#x7F6E;&amp;#x3002;&lt;code&gt;Example&lt;/code&gt; &amp;#x7C7B;&amp;#x4E2D;&amp;#x7684; &lt;code&gt;customProperty&lt;/code&gt; &amp;#x5C5E;&amp;#x6027;&amp;#x901A;&amp;#x8FC7; &lt;code&gt;by&lt;/code&gt; &amp;#x5173;&amp;#x952E;&amp;#x5B57;&amp;#x59D4;&amp;#x6258;&amp;#x7ED9;&amp;#x4E86; &lt;code&gt;CustomDelegate&lt;/code&gt; &amp;#x7C7B;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;lazy&amp;#x539F;&amp;#x7406;&quot;&gt;&lt;a href=&quot;#lazy&amp;#x539F;&amp;#x7406;&quot; class=&quot;headerlink&quot; title=&quot;lazy&amp;#x539F;&amp;#x7406;&quot;&gt;&lt;/a&gt;lazy&amp;#x539F;&amp;#x7406;&lt;/h2&gt;&lt;p&gt;&amp;#x6709;&amp;#x4E86;&amp;#x4E0A;&amp;#x9762;&amp;#x7684;&amp;#x57FA;&amp;#x7840;&amp;#xFF0C;&amp;#x518D;&amp;#x6765;&amp;#x770B;&lt;code&gt;lazy&lt;/code&gt;&amp;#x7684;&amp;#x5B9E;&amp;#x73B0;&amp;#x5C31;&amp;#x975E;&amp;#x5E38;&amp;#x7B80;&amp;#x5355;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;lazy&lt;/code&gt; &amp;#x662F; Kotlin &amp;#x6807;&amp;#x51C6;&amp;#x5E93;&amp;#x4E2D;&amp;#x7684;&amp;#x4E00;&amp;#x4E2A;&amp;#x51FD;&amp;#x6570;&amp;#xFF0C;&amp;#x7528;&amp;#x4E8E;&amp;#x5B9E;&amp;#x73B0;&amp;#x5EF6;&amp;#x8FDF;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x3002;&amp;#x5B83;&amp;#x7684;&amp;#x4E3B;&amp;#x8981;&amp;#x4F5C;&amp;#x7528;&amp;#x662F;&amp;#x5C06;&amp;#x4E00;&amp;#x4E2A; lambda &amp;#x8868;&amp;#x8FBE;&amp;#x5F0F;&amp;#x4F5C;&amp;#x4E3A;&amp;#x53C2;&amp;#x6570;&amp;#x4F20;&amp;#x9012;&amp;#x7ED9; &lt;code&gt;lazy&lt;/code&gt; &amp;#x51FD;&amp;#x6570;&amp;#xFF0C;&amp;#x8BE5; lambda &amp;#x8868;&amp;#x8FBE;&amp;#x5F0F;&amp;#x5C06;&amp;#x5728;&amp;#x9996;&amp;#x6B21;&amp;#x8BBF;&amp;#x95EE;&amp;#x5C5E;&amp;#x6027;&amp;#x65F6;&amp;#x6267;&amp;#x884C;&amp;#xFF0C;&amp;#x5E76;&amp;#x4E14;&amp;#x53EA;&amp;#x4F1A;&amp;#x6267;&amp;#x884C;&amp;#x4E00;&amp;#x6B21;&amp;#x3002;&lt;code&gt;lazy&lt;/code&gt; &amp;#x8FD4;&amp;#x56DE;&amp;#x4E00;&amp;#x4E2A; &lt;code&gt;Lazy&lt;/code&gt; &amp;#x7C7B;&amp;#x578B;&amp;#x7684;&amp;#x5B9E;&amp;#x4F8B;&amp;#xFF0C;&amp;#x8BE5;&amp;#x5B9E;&amp;#x4F8B;&amp;#x5305;&amp;#x542B;&amp;#x4E00;&amp;#x4E2A;&amp;#x88AB;&amp;#x59D4;&amp;#x6258;&amp;#x7684;&amp;#x5C5E;&amp;#x6027;&amp;#xFF0C;&amp;#x4EE5;&amp;#x53CA;&amp;#x76F8;&amp;#x5E94;&amp;#x7684;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x903B;&amp;#x8F91;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x4EE5;&amp;#x4E0B;&amp;#x662F; &lt;code&gt;lazy&lt;/code&gt; &amp;#x7684;&amp;#x7B80;&amp;#x5316;&amp;#x5B9E;&amp;#x73B0;&amp;#x539F;&amp;#x7406;&amp;#xFF0C;&amp;#x4E3A;&amp;#x4E86;&amp;#x66F4;&amp;#x597D;&amp;#x5730;&amp;#x7406;&amp;#x89E3;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x5C06;&amp;#x91C7;&amp;#x7528;&amp;#x4F2A;&amp;#x4EE3;&amp;#x7801;&amp;#x7684;&amp;#x5F62;&amp;#x5F0F;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;Lazy&lt;/span&gt;&amp;lt;&lt;span class=&quot;type&quot;&gt;T&lt;/span&gt;&amp;gt;&lt;/span&gt;(&lt;span class=&quot;keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; initializer: () -&amp;gt; T) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;var&lt;/span&gt; value: T? = &lt;span class=&quot;literal&quot;&gt;null&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;var&lt;/span&gt; isInitialized: &lt;span class=&quot;built_in&quot;&gt;Boolean&lt;/span&gt; = &lt;span class=&quot;literal&quot;&gt;false&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;operator&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;getValue&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(thisRef: &lt;span class=&quot;type&quot;&gt;Any&lt;/span&gt;?, property: &lt;span class=&quot;type&quot;&gt;KProperty&lt;/span&gt;&amp;lt;*&amp;gt;)&lt;/span&gt;&lt;/span&gt;: T {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt; (!isInitialized) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            value = initializer()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            isInitialized = &lt;span class=&quot;literal&quot;&gt;true&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; value!!&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;type&quot;&gt;&amp;lt;T&amp;gt;&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;lazy&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(initializer: () -&amp;gt; &lt;span class=&quot;type&quot;&gt;T&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;: Lazy&amp;lt;T&amp;gt; = Lazy(initializer)&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x4E0A;&amp;#x8FF0;&amp;#x4EE3;&amp;#x7801;&amp;#x4E2D;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x5B9A;&amp;#x4E49;&amp;#x4E86;&amp;#x4E00;&amp;#x4E2A; &lt;code&gt;Lazy&lt;/code&gt; &amp;#x7C7B;&amp;#xFF0C;&amp;#x5B83;&amp;#x63A5;&amp;#x53D7;&amp;#x4E00;&amp;#x4E2A; lambda &amp;#x8868;&amp;#x8FBE;&amp;#x5F0F; &lt;code&gt;initializer&lt;/code&gt;&amp;#xFF0C;&amp;#x8FD9;&amp;#x4E2A; lambda &amp;#x8868;&amp;#x8FBE;&amp;#x5F0F;&amp;#x5305;&amp;#x542B;&amp;#x4E86;&amp;#x5C5E;&amp;#x6027;&amp;#x9996;&amp;#x6B21;&amp;#x8BBF;&amp;#x95EE;&amp;#x65F6;&amp;#x7684;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x903B;&amp;#x8F91;&amp;#x3002;&lt;code&gt;Lazy&lt;/code&gt; &amp;#x7C7B;&amp;#x5305;&amp;#x542B;&amp;#x4E00;&amp;#x4E2A;&amp;#x6CDB;&amp;#x578B;&amp;#x53C2;&amp;#x6570; &lt;code&gt;T&lt;/code&gt;&amp;#xFF0C;&amp;#x8868;&amp;#x793A;&amp;#x88AB;&amp;#x59D4;&amp;#x6258;&amp;#x7684;&amp;#x5C5E;&amp;#x6027;&amp;#x7684;&amp;#x7C7B;&amp;#x578B;&amp;#x3002;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;value&lt;/code&gt; &amp;#x5B58;&amp;#x50A8;&amp;#x88AB;&amp;#x59D4;&amp;#x6258;&amp;#x5C5E;&amp;#x6027;&amp;#x7684;&amp;#x503C;&amp;#xFF0C;&amp;#x521D;&amp;#x59CB;&amp;#x503C;&amp;#x4E3A; null&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;isInitialized&lt;/code&gt; &amp;#x7528;&amp;#x4E8E;&amp;#x8FFD;&amp;#x8E2A;&amp;#x5C5E;&amp;#x6027;&amp;#x662F;&amp;#x5426;&amp;#x5DF2;&amp;#x7ECF;&amp;#x88AB;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Lazy&lt;/code&gt; &amp;#x7C7B;&amp;#x8FD8;&amp;#x5B9E;&amp;#x73B0;&amp;#x4E86; &lt;code&gt;getValue&lt;/code&gt; &amp;#x64CD;&amp;#x4F5C;&amp;#x7B26;&amp;#x51FD;&amp;#x6570;&amp;#xFF0C;&amp;#x8FD9;&amp;#x662F;&amp;#x5C5E;&amp;#x6027;&amp;#x59D4;&amp;#x6258;&amp;#x7684;&amp;#x5173;&amp;#x952E;&amp;#x3002;&amp;#x5F53;&amp;#x88AB;&amp;#x59D4;&amp;#x6258;&amp;#x7684;&amp;#x5C5E;&amp;#x6027;&amp;#x9996;&amp;#x6B21;&amp;#x88AB;&amp;#x8BBF;&amp;#x95EE;&amp;#x65F6;&amp;#xFF0C;&lt;code&gt;getValue&lt;/code&gt; &amp;#x51FD;&amp;#x6570;&amp;#x4F1A;&amp;#x6267;&amp;#x884C; &lt;code&gt;initializer&lt;/code&gt; lambda &amp;#x8868;&amp;#x8FBE;&amp;#x5F0F;&amp;#xFF0C;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x5C5E;&amp;#x6027;&amp;#x7684;&amp;#x503C;&amp;#xFF0C;&amp;#x5E76;&amp;#x5C06; &lt;code&gt;isInitialized&lt;/code&gt; &amp;#x8BBE;&amp;#x7F6E;&amp;#x4E3A; true&amp;#x3002;&amp;#x4E4B;&amp;#x540E;&amp;#xFF0C;&amp;#x518D;&amp;#x6B21;&amp;#x8BBF;&amp;#x95EE;&amp;#x8BE5;&amp;#x5C5E;&amp;#x6027;&amp;#x65F6;&amp;#xFF0C;&amp;#x76F4;&amp;#x63A5;&amp;#x8FD4;&amp;#x56DE;&amp;#x5DF2;&amp;#x7ECF;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x8FC7;&amp;#x7684;&amp;#x503C;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x6700;&amp;#x540E;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x901A;&amp;#x8FC7; &lt;code&gt;lazy&lt;/code&gt; &amp;#x51FD;&amp;#x6570;&amp;#x521B;&amp;#x5EFA;&amp;#x4E86;&amp;#x4E00;&amp;#x4E2A; &lt;code&gt;Lazy&lt;/code&gt; &amp;#x7C7B;&amp;#x7684;&amp;#x5B9E;&amp;#x4F8B;&amp;#xFF0C;&amp;#x7528;&amp;#x4E8E;&amp;#x5B9E;&amp;#x9645;&amp;#x7684;&amp;#x5C5E;&amp;#x6027;&amp;#x59D4;&amp;#x6258;&amp;#x3002;&amp;#x5728;&amp;#x5B9E;&amp;#x9645;&amp;#x4F7F;&amp;#x7528;&amp;#x4E2D;&amp;#xFF0C;&lt;code&gt;lazy&lt;/code&gt; &amp;#x51FD;&amp;#x6570;&amp;#x53EF;&amp;#x4EE5;&amp;#x76F4;&amp;#x63A5;&amp;#x4F5C;&amp;#x4E3A;&amp;#x5C5E;&amp;#x6027;&amp;#x7684;&amp;#x59D4;&amp;#x6258;&amp;#xFF0C;&amp;#x5982;&amp;#x4E0B;&amp;#x6240;&amp;#x793A;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; myProperty: String &lt;span class=&quot;keyword&quot;&gt;by&lt;/span&gt; lazy {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    println(&lt;span class=&quot;string&quot;&gt;&amp;quot;Initializing myProperty&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;string&quot;&gt;&amp;quot;Hello, Kotlin!&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    println(myProperty) &lt;span class=&quot;comment&quot;&gt;// &amp;#x7B2C;&amp;#x4E00;&amp;#x6B21;&amp;#x8BBF;&amp;#x95EE;&amp;#xFF0C;&amp;#x4F1A;&amp;#x6267;&amp;#x884C;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x903B;&amp;#x8F91;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    println(myProperty) &lt;span class=&quot;comment&quot;&gt;// &amp;#x540E;&amp;#x7EED;&amp;#x8BBF;&amp;#x95EE;&amp;#xFF0C;&amp;#x76F4;&amp;#x63A5;&amp;#x8FD4;&amp;#x56DE;&amp;#x5DF2;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x7684;&amp;#x503C;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x5728;&amp;#x4E0A;&amp;#x8FF0;&amp;#x4F8B;&amp;#x5B50;&amp;#x4E2D;&amp;#xFF0C;&lt;code&gt;myProperty&lt;/code&gt; &amp;#x7684;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x903B;&amp;#x8F91;&amp;#x53EA;&amp;#x5728;&amp;#x9996;&amp;#x6B21;&amp;#x8BBF;&amp;#x95EE;&amp;#x65F6;&amp;#x6267;&amp;#x884C;&amp;#xFF0C;&amp;#x4E4B;&amp;#x540E;&amp;#x7684;&amp;#x8BBF;&amp;#x95EE;&amp;#x76F4;&amp;#x63A5;&amp;#x8FD4;&amp;#x56DE;&amp;#x5DF2;&amp;#x7ECF;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x7684;&amp;#x503C;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x603B;&amp;#x7ED3;&quot;&gt;&lt;a href=&quot;#&amp;#x603B;&amp;#x7ED3;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x603B;&amp;#x7ED3;&quot;&gt;&lt;/a&gt;&amp;#x603B;&amp;#x7ED3;&lt;/h2&gt;&lt;p&gt;&amp;#x901A;&amp;#x8FC7; &lt;code&gt;by&lt;/code&gt; &amp;#x5173;&amp;#x952E;&amp;#x5B57;&amp;#xFF0C;Kotlin &amp;#x63D0;&amp;#x4F9B;&amp;#x4E86;&amp;#x4E00;&amp;#x79CD;&amp;#x4F18;&amp;#x96C5;&amp;#x800C;&amp;#x5F3A;&amp;#x5927;&amp;#x7684;&amp;#x59D4;&amp;#x6258;&amp;#x6A21;&amp;#x5F0F;&amp;#x5B9E;&amp;#x73B0;&amp;#x65B9;&amp;#x5F0F;&amp;#x3002;&amp;#x65E0;&amp;#x8BBA;&amp;#x662F;&amp;#x901A;&amp;#x8FC7;&amp;#x63A5;&amp;#x53E3;&amp;#x8FD8;&amp;#x662F;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x59D4;&amp;#x6258;&amp;#x7C7B;&amp;#xFF0C;&amp;#x90FD;&amp;#x80FD;&amp;#x591F;&amp;#x8F7B;&amp;#x677E;&amp;#x5730;&amp;#x5B9E;&amp;#x73B0;&amp;#x4EE3;&amp;#x7801;&amp;#x7684;&amp;#x91CD;&amp;#x7528;&amp;#x548C;&amp;#x89E3;&amp;#x8026;&amp;#x3002;&amp;#x4E86;&amp;#x89E3; &lt;code&gt;by&lt;/code&gt; &amp;#x5173;&amp;#x952E;&amp;#x5B57;&amp;#x7684;&amp;#x5B9E;&amp;#x73B0;&amp;#x539F;&amp;#x7406;&amp;#x6709;&amp;#x52A9;&amp;#x4E8E;&amp;#x66F4;&amp;#x6DF1;&amp;#x5165;&amp;#x5730;&amp;#x7406;&amp;#x89E3; Kotlin &amp;#x7684;&amp;#x59D4;&amp;#x6258;&amp;#x6A21;&amp;#x5F0F;&amp;#xFF0C;&amp;#x5E76;&amp;#x5728;&amp;#x5B9E;&amp;#x9645;&amp;#x5F00;&amp;#x53D1;&amp;#x4E2D;&amp;#x66F4;&amp;#x52A0;&amp;#x7075;&amp;#x6D3B;&amp;#x5730;&amp;#x8FD0;&amp;#x7528;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;a href=&quot;#&amp;#x63A8;&amp;#x8350;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;/a&gt;&amp;#x63A8;&amp;#x8350;&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-startup&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android_startup&lt;/a&gt;: &amp;#x63D0;&amp;#x4F9B;&amp;#x4E00;&amp;#x79CD;&amp;#x5728;&amp;#x5E94;&amp;#x7528;&amp;#x542F;&amp;#x52A8;&amp;#x65F6;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x52A0;&amp;#x7B80;&amp;#x5355;&amp;#x3001;&amp;#x9AD8;&amp;#x6548;&amp;#x7684;&amp;#x65B9;&amp;#x5F0F;&amp;#x6765;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x7EC4;&amp;#x4EF6;&amp;#xFF0C;&amp;#x4F18;&amp;#x5316;&amp;#x542F;&amp;#x52A8;&amp;#x901F;&amp;#x5EA6;&amp;#x3002;&amp;#x4E0D;&amp;#x4EC5;&amp;#x652F;&amp;#x6301;Jetpack App Startup&amp;#x7684;&amp;#x5168;&amp;#x90E8;&amp;#x529F;&amp;#x80FD;&amp;#xFF0C;&amp;#x8FD8;&amp;#x63D0;&amp;#x4F9B;&amp;#x989D;&amp;#x5916;&amp;#x7684;&amp;#x540C;&amp;#x6B65;&amp;#x4E0E;&amp;#x5F02;&amp;#x6B65;&amp;#x7B49;&amp;#x5F85;&amp;#x3001;&amp;#x7EBF;&amp;#x7A0B;&amp;#x63A7;&amp;#x5236;&amp;#x4E0E;&amp;#x591A;&amp;#x8FDB;&amp;#x7A0B;&amp;#x652F;&amp;#x6301;&amp;#x7B49;&amp;#x529F;&amp;#x80FD;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/AwesomeGithub&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AwesomeGithub&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Github&amp;#x7684;&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x7EAF;&amp;#x7EC3;&amp;#x4E60;&amp;#x9879;&amp;#x76EE;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x7EC4;&amp;#x4EF6;&amp;#x5316;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x8D26;&amp;#x6237;&amp;#x5BC6;&amp;#x7801;&amp;#x4E0E;&amp;#x8BA4;&amp;#x8BC1;&amp;#x767B;&amp;#x9646;&amp;#x3002;&amp;#x4F7F;&amp;#x7528;Kotlin&amp;#x8BED;&amp;#x8A00;&amp;#x8FDB;&amp;#x884C;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x9879;&amp;#x76EE;&amp;#x67B6;&amp;#x6784;&amp;#x662F;&amp;#x57FA;&amp;#x4E8E;JetPack\&amp;amp;DataBinding&amp;#x7684;MVVM&amp;#xFF1B;&amp;#x9879;&amp;#x76EE;&amp;#x4E2D;&amp;#x4F7F;&amp;#x7528;&amp;#x4E86;Arouter&amp;#x3001;Retrofit&amp;#x3001;Coroutine&amp;#x3001;Glide&amp;#x3001;Dagger&amp;#x4E0E;Hilt&amp;#x7B49;&amp;#x6D41;&amp;#x884C;&amp;#x5F00;&amp;#x6E90;&amp;#x6280;&amp;#x672F;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/flutter_github&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;flutter_github&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Flutter&amp;#x7684;&amp;#x8DE8;&amp;#x5E73;&amp;#x53F0;&amp;#x7248;&amp;#x672C;Github&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x4E0E;AwesomeGithub&amp;#x76F8;&amp;#x5BF9;&amp;#x5E94;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-api-analysis&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android-api-analysis&lt;/a&gt;: &amp;#x7ED3;&amp;#x5408;&amp;#x8BE6;&amp;#x7EC6;&amp;#x7684;Demo&amp;#x6765;&amp;#x5168;&amp;#x9762;&amp;#x89E3;&amp;#x6790;Android&amp;#x76F8;&amp;#x5173;&amp;#x7684;&amp;#x77E5;&amp;#x8BC6;&amp;#x70B9;, &amp;#x5E2E;&amp;#x52A9;&amp;#x8BFB;&amp;#x8005;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x5FEB;&amp;#x7684;&amp;#x638C;&amp;#x63E1;&amp;#x4E0E;&amp;#x7406;&amp;#x89E3;&amp;#x6240;&amp;#x9610;&amp;#x8FF0;&amp;#x7684;&amp;#x8981;&amp;#x70B9;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/daily_algorithm&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;daily_algorithm&lt;/a&gt;: &amp;#x6BCF;&amp;#x65E5;&amp;#x4E00;&amp;#x7B97;&amp;#x6CD5;&amp;#xFF0C;&amp;#x7531;&amp;#x6D45;&amp;#x5165;&amp;#x6DF1;&amp;#xFF0C;&amp;#x6B22;&amp;#x8FCE;&amp;#x52A0;&amp;#x5165;&amp;#x4E00;&amp;#x8D77;&amp;#x5171;&amp;#x52C9;&amp;#x3002;&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;h2 id=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;a href=&quot;#&amp;#x5F15;&amp;#x8A00;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;/a&gt;&amp;#x5F15;&amp;#x8A00;&lt;/h2&gt;&lt;p&gt;&amp;#x5728;Kotlin
    
    </summary>
    
      <category term="android" scheme="https://www.rousetime.com/categories/android/"/>
    
    
      <category term="android" scheme="https://www.rousetime.com/tags/android/"/>
    
  </entry>
  
  <entry>
    <title>光速2分钟，精通HandlerThread，你还在等什么？</title>
    <link href="https://www.rousetime.com/2024/03/10/%E5%85%89%E9%80%9F2%E5%88%86%E9%92%9F%EF%BC%8C%E7%B2%BE%E9%80%9AHandlerThread%EF%BC%8C%E4%BD%A0%E8%BF%98%E5%9C%A8%E7%AD%89%E4%BB%80%E4%B9%88%EF%BC%9F/"/>
    <id>https://www.rousetime.com/2024/03/10/光速2分钟，精通HandlerThread，你还在等什么？/</id>
    <published>2024-03-10T09:03:56.000Z</published>
    <updated>2024-03-10T09:04:17.371Z</updated>
    
    <content type="html">&lt;h2 id=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;a href=&quot;#&amp;#x5F15;&amp;#x8A00;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;/a&gt;&amp;#x5F15;&amp;#x8A00;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;HandlerThread&lt;/code&gt;&amp;#x662F;&lt;code&gt;Android&lt;/code&gt;&amp;#x4E2D;&amp;#x7684;&amp;#x4E00;&amp;#x4E2A;&amp;#x91CD;&amp;#x8981;&amp;#x7C7B;&amp;#xFF0C;&amp;#x5B83;&amp;#x53EF;&amp;#x4EE5;&amp;#x5E2E;&amp;#x52A9;&amp;#x6211;&amp;#x4EEC;&amp;#x5728;&amp;#x5B50;&amp;#x7EBF;&amp;#x7A0B;&amp;#x4E2D;&amp;#x65B9;&amp;#x4FBF;&amp;#x5730;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;Handler&lt;/code&gt;&amp;#x3002;&amp;#x5728;&amp;#x672C;&amp;#x6587;&amp;#x4E2D;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x5C06;&amp;#x8BE6;&amp;#x7EC6;&amp;#x4ECB;&amp;#x7ECD;&lt;code&gt;HandlerThread&lt;/code&gt;&amp;#x7684;&amp;#x539F;&amp;#x7406;&amp;#x548C;&amp;#x8FD0;&amp;#x7528;&amp;#xFF0C;&amp;#x5E76;&amp;#x7ED3;&amp;#x5408;&amp;#x4EE3;&amp;#x7801;&amp;#x793A;&amp;#x4F8B;&amp;#xFF0C;&amp;#x5E2E;&amp;#x52A9;&amp;#x8BFB;&amp;#x8005;&amp;#x66F4;&amp;#x597D;&amp;#x5730;&amp;#x7406;&amp;#x89E3;&amp;#x548C;&amp;#x638C;&amp;#x63E1;&lt;code&gt;HandlerThread&lt;/code&gt;&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&amp;#x65B9;&amp;#x6CD5;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x4EC0;&amp;#x4E48;&amp;#x662F;HandlerThread&amp;#xFF1F;&quot;&gt;&lt;a href=&quot;#&amp;#x4EC0;&amp;#x4E48;&amp;#x662F;HandlerThread&amp;#xFF1F;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4EC0;&amp;#x4E48;&amp;#x662F;HandlerThread&amp;#xFF1F;&quot;&gt;&lt;/a&gt;&amp;#x4EC0;&amp;#x4E48;&amp;#x662F;HandlerThread&amp;#xFF1F;&lt;/h2&gt;&lt;p&gt;&amp;#x5728;Android&amp;#x5F00;&amp;#x53D1;&amp;#x4E2D;&amp;#xFF0C;&lt;code&gt;HandlerThread&lt;/code&gt;&amp;#x662F;&lt;code&gt;Thread&lt;/code&gt;&amp;#x7684;&amp;#x4E00;&amp;#x4E2A;&amp;#x7279;&amp;#x6B8A;&amp;#x5B50;&amp;#x7C7B;&amp;#xFF0C;&amp;#x5B83;&amp;#x7ED3;&amp;#x5408;&amp;#x4E86;&amp;#x7EBF;&amp;#x7A0B;&amp;#x548C;&amp;#x6D88;&amp;#x606F;&amp;#x5904;&amp;#x7406;&amp;#x673A;&amp;#x5236;&amp;#xFF0C;&amp;#x4F7F;&amp;#x5F97;&amp;#x5728;&amp;#x4E00;&amp;#x4E2A;&amp;#x5355;&amp;#x72EC;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x4E2D;&amp;#x6267;&amp;#x884C;&amp;#x4EFB;&amp;#x52A1;&amp;#x53D8;&amp;#x5F97;&amp;#x66F4;&amp;#x52A0;&amp;#x7B80;&amp;#x4FBF;&amp;#x3002;&amp;#x5B83;&amp;#x5185;&amp;#x90E8;&amp;#x5305;&amp;#x542B;&amp;#x4E00;&amp;#x4E2A;&lt;code&gt;Looper&lt;/code&gt;&amp;#x548C;&amp;#x4E00;&amp;#x4E2A;&lt;code&gt;Handler&lt;/code&gt;&amp;#xFF0C;&amp;#x4F7F;&amp;#x5F97;&amp;#x6211;&amp;#x4EEC;&amp;#x53EF;&amp;#x4EE5;&amp;#x65B9;&amp;#x4FBF;&amp;#x5730;&amp;#x53D1;&amp;#x9001;&amp;#x548C;&amp;#x5904;&amp;#x7406;&amp;#x6D88;&amp;#x606F;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;HandlerThread&amp;#x7684;&amp;#x539F;&amp;#x7406;&quot;&gt;&lt;a href=&quot;#HandlerThread&amp;#x7684;&amp;#x539F;&amp;#x7406;&quot; class=&quot;headerlink&quot; title=&quot;HandlerThread&amp;#x7684;&amp;#x539F;&amp;#x7406;&quot;&gt;&lt;/a&gt;HandlerThread&amp;#x7684;&amp;#x539F;&amp;#x7406;&lt;/h2&gt;&lt;h3 id=&quot;Looper&quot;&gt;&lt;a href=&quot;#Looper&quot; class=&quot;headerlink&quot; title=&quot;Looper&quot;&gt;&lt;/a&gt;Looper&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Looper&lt;/code&gt;&amp;#x662F;&lt;code&gt;HandlerThread&lt;/code&gt;&amp;#x7684;&amp;#x6838;&amp;#x5FC3;&amp;#x7EC4;&amp;#x4EF6;&amp;#x4E4B;&amp;#x4E00;&amp;#xFF0C;&amp;#x5B83;&amp;#x8D1F;&amp;#x8D23;&amp;#x5EFA;&amp;#x7ACB;&amp;#x6D88;&amp;#x606F;&amp;#x961F;&amp;#x5217;&amp;#xFF0C;&amp;#x5E76;&amp;#x6309;&amp;#x7167;&amp;#x961F;&amp;#x5217;&amp;#x4E2D;&amp;#x7684;&amp;#x987A;&amp;#x5E8F;&amp;#x5904;&amp;#x7406;&amp;#x6D88;&amp;#x606F;&amp;#x3002;&amp;#x6BCF;&amp;#x4E2A;&lt;code&gt;HandlerThread&lt;/code&gt;&amp;#x90FD;&amp;#x6709;&amp;#x4E00;&amp;#x4E2A;&amp;#x72EC;&amp;#x7ACB;&amp;#x7684;&lt;code&gt;Looper&lt;/code&gt;&amp;#xFF0C;&amp;#x786E;&amp;#x4FDD;&amp;#x7EBF;&amp;#x7A0B;&amp;#x4E4B;&amp;#x95F4;&amp;#x6D88;&amp;#x606F;&amp;#x7684;&amp;#x72EC;&amp;#x7ACB;&amp;#x6027;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; handlerThread = HandlerThread(&lt;span class=&quot;string&quot;&gt;&amp;quot;MyHandlerThread&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;handlerThread.start()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; looper = handlerThread.looper&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h3 id=&quot;Handler&quot;&gt;&lt;a href=&quot;#Handler&quot; class=&quot;headerlink&quot; title=&quot;Handler&quot;&gt;&lt;/a&gt;Handler&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Handler&lt;/code&gt;&amp;#x662F;&amp;#x4E0E;&lt;code&gt;Looper&lt;/code&gt;&amp;#x5173;&amp;#x8054;&amp;#x7684;&amp;#xFF0C;&amp;#x7528;&amp;#x4E8E;&amp;#x53D1;&amp;#x9001;&amp;#x548C;&amp;#x5904;&amp;#x7406;&amp;#x6D88;&amp;#x606F;&amp;#x3002;&amp;#x5B83;&amp;#x4E0E;&amp;#x7279;&amp;#x5B9A;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x76F8;&amp;#x5173;&amp;#x8054;&amp;#xFF0C;&amp;#x56E0;&amp;#x6B64;&amp;#x5F53;&amp;#x6211;&amp;#x4EEC;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;HandlerThread&lt;/code&gt;&amp;#x4E2D;&lt;code&gt;Handler&lt;/code&gt;&amp;#x65F6;&amp;#xFF0C;&amp;#x5B83;&amp;#x4F1A;&amp;#x81EA;&amp;#x52A8;&amp;#x4E0E;&amp;#x8BE5;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7684;&lt;code&gt;Looper&lt;/code&gt;&amp;#x7ED1;&amp;#x5B9A;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;@NonNull&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;public Handler getThreadHandler() {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    if (mHandler == null) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        mHandler = new Handler(getLooper());&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    return mHandler;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h3 id=&quot;HandlerThread&amp;#x7684;run-&amp;#x65B9;&amp;#x6CD5;&quot;&gt;&lt;a href=&quot;#HandlerThread&amp;#x7684;run-&amp;#x65B9;&amp;#x6CD5;&quot; class=&quot;headerlink&quot; title=&quot;HandlerThread&amp;#x7684;run()&amp;#x65B9;&amp;#x6CD5;&quot;&gt;&lt;/a&gt;HandlerThread&amp;#x7684;run()&amp;#x65B9;&amp;#x6CD5;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;HandlerThread&lt;/code&gt;&amp;#x7684;&lt;code&gt;run()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x662F;&amp;#x5176;&amp;#x6838;&amp;#x5FC3;&amp;#x65B9;&amp;#x6CD5;&amp;#xFF0C;&amp;#x8BE5;&amp;#x65B9;&amp;#x6CD5;&amp;#x8D1F;&amp;#x8D23;&amp;#x521B;&amp;#x5EFA;&lt;code&gt;Looper&lt;/code&gt;&amp;#x5E76;&amp;#x542F;&amp;#x52A8;&amp;#x6D88;&amp;#x606F;&amp;#x5FAA;&amp;#x73AF;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;HandlerThread&lt;/span&gt;&lt;/span&gt;(name: String) : Thread(name) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;run&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x521D;&amp;#x59CB;&amp;#x5316; Looper&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        Looper.prepare()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x542F;&amp;#x52A8;&amp;#x6D88;&amp;#x606F;&amp;#x5FAA;&amp;#x73AF;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        Looper.loop()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x5728;&lt;code&gt;run()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x4E2D;&amp;#xFF0C;&amp;#x9996;&amp;#x5148;&amp;#x8C03;&amp;#x7528;&lt;code&gt;Looper.prepare()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x6765;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&lt;code&gt;Looper&amp;#x3002;Looper.prepare()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x4F1A;&amp;#x521B;&amp;#x5EFA;&amp;#x4E00;&amp;#x4E2A;&lt;code&gt;Looper&lt;/code&gt;&amp;#x5BF9;&amp;#x8C61;&amp;#xFF0C;&amp;#x5E76;&amp;#x5C06;&amp;#x5176;&amp;#x7ED1;&amp;#x5B9A;&amp;#x5230;&amp;#x5F53;&amp;#x524D;&amp;#x7EBF;&amp;#x7A0B;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x7136;&amp;#x540E;&amp;#xFF0C;&amp;#x8C03;&amp;#x7528;&lt;code&gt;Looper.loop()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x6765;&amp;#x542F;&amp;#x52A8;&amp;#x6D88;&amp;#x606F;&amp;#x5FAA;&amp;#x73AF;&amp;#x3002;&lt;code&gt;Looper.loop()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x4F1A;&amp;#x4E00;&amp;#x76F4;&amp;#x4ECE;&amp;#x6D88;&amp;#x606F;&amp;#x961F;&amp;#x5217;&amp;#x4E2D;&amp;#x83B7;&amp;#x53D6;&amp;#x6D88;&amp;#x606F;&amp;#xFF0C;&amp;#x5E76;&amp;#x5C06;&amp;#x6D88;&amp;#x606F;&amp;#x4EA4;&amp;#x7ED9;&lt;code&gt;Handler&lt;/code&gt;&amp;#x5904;&amp;#x7406;&amp;#x3002;&lt;/p&gt;
&lt;h3 id=&quot;&amp;#x6D88;&amp;#x606F;&amp;#x5904;&amp;#x7406;&amp;#x6D41;&amp;#x7A0B;&quot;&gt;&lt;a href=&quot;#&amp;#x6D88;&amp;#x606F;&amp;#x5904;&amp;#x7406;&amp;#x6D41;&amp;#x7A0B;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x6D88;&amp;#x606F;&amp;#x5904;&amp;#x7406;&amp;#x6D41;&amp;#x7A0B;&quot;&gt;&lt;/a&gt;&amp;#x6D88;&amp;#x606F;&amp;#x5904;&amp;#x7406;&amp;#x6D41;&amp;#x7A0B;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&amp;#x521B;&amp;#x5EFA;&lt;code&gt;HandlerThread&lt;/code&gt;&amp;#x5E76;&amp;#x542F;&amp;#x52A8;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x901A;&amp;#x8FC7;&lt;code&gt;HandlerThread&lt;/code&gt;&amp;#x7684;&lt;code&gt;Looper&lt;/code&gt;&amp;#x521B;&amp;#x5EFA;&lt;code&gt;Handler&lt;/code&gt;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;Handler&lt;/code&gt;&amp;#x53D1;&amp;#x9001;&amp;#x6D88;&amp;#x606F;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x5728;&lt;code&gt;HandlerThread&lt;/code&gt;&amp;#x7684;&lt;code&gt;Looper&lt;/code&gt;&amp;#x4E2D;&amp;#x5904;&amp;#x7406;&amp;#x6D88;&amp;#x606F;&amp;#x3002;&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;&amp;#x4F7F;&amp;#x7528;&amp;#x573A;&amp;#x666F;&quot;&gt;&lt;a href=&quot;#&amp;#x4F7F;&amp;#x7528;&amp;#x573A;&amp;#x666F;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4F7F;&amp;#x7528;&amp;#x573A;&amp;#x666F;&quot;&gt;&lt;/a&gt;&amp;#x4F7F;&amp;#x7528;&amp;#x573A;&amp;#x666F;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;HandlerThread&lt;/code&gt;&amp;#x9002;&amp;#x7528;&amp;#x4E8E;&amp;#x4EE5;&amp;#x4E0B;&amp;#x573A;&amp;#x666F;&amp;#xFF1A;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;#x5728;&amp;#x5B50;&amp;#x7EBF;&amp;#x7A0B;&amp;#x4E2D;&amp;#x6267;&amp;#x884C;&amp;#x8017;&amp;#x65F6;&amp;#x64CD;&amp;#x4F5C;&amp;#xFF0C;&amp;#x5982;&amp;#x7F51;&amp;#x7EDC;&amp;#x8BF7;&amp;#x6C42;&amp;#x3001;&amp;#x6587;&amp;#x4EF6;&amp;#x8BFB;&amp;#x5199;&amp;#x7B49;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x53EF;&amp;#x4EE5;&amp;#x7528;&amp;#x6765;&amp;#x6267;&amp;#x884C;&amp;#x5B9A;&amp;#x65F6;&amp;#x4EFB;&amp;#x52A1;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x5728;&amp;#x5B50;&amp;#x7EBF;&amp;#x7A0B;&amp;#x4E2D;&amp;#x4E0E;&amp;#x5176;&amp;#x4ED6;&amp;#x7EBF;&amp;#x7A0B;&amp;#x901A;&amp;#x4FE1;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;HandlerThread&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&quot;&gt;&lt;a href=&quot;#HandlerThread&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&quot; class=&quot;headerlink&quot; title=&quot;HandlerThread&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&quot;&gt;&lt;/a&gt;HandlerThread&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&lt;/h2&gt;&lt;h3 id=&quot;&amp;#x521B;&amp;#x5EFA;HandlerThread&quot;&gt;&lt;a href=&quot;#&amp;#x521B;&amp;#x5EFA;HandlerThread&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x521B;&amp;#x5EFA;HandlerThread&quot;&gt;&lt;/a&gt;&amp;#x521B;&amp;#x5EFA;HandlerThread&lt;/h3&gt;&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; handlerThread = HandlerThread(&lt;span class=&quot;string&quot;&gt;&amp;quot;MyHandlerThread&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;handlerThread.start()&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x4E0A;&amp;#x8FF0;&amp;#x4EE3;&amp;#x7801;&amp;#x4F1A;&amp;#x521B;&amp;#x5EFA;&amp;#x4E00;&amp;#x4E2A;&amp;#x540D;&amp;#x4E3A;&lt;code&gt;MyHandlerThread&lt;/code&gt;&amp;#x7684;&lt;code&gt;HandlerThread&lt;/code&gt;&amp;#x3002;&amp;#x7136;&amp;#x540E;&amp;#xFF0C;&amp;#x8C03;&amp;#x7528;&lt;code&gt;start()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x6765;&amp;#x542F;&amp;#x52A8;&lt;code&gt;HandlerThread&lt;/code&gt;&amp;#x3002;&lt;/p&gt;
&lt;h3 id=&quot;&amp;#x521B;&amp;#x5EFA;Handler&quot;&gt;&lt;a href=&quot;#&amp;#x521B;&amp;#x5EFA;Handler&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x521B;&amp;#x5EFA;Handler&quot;&gt;&lt;/a&gt;&amp;#x521B;&amp;#x5EFA;Handler&lt;/h3&gt;&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; handler = Handler(handlerThread.looper)&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x4E0A;&amp;#x8FF0;&amp;#x4EE3;&amp;#x7801;&amp;#x4F1A;&amp;#x4E3A;&lt;code&gt;HandlerThread&lt;/code&gt;&amp;#x521B;&amp;#x5EFA;&amp;#x4E00;&amp;#x4E2A;&lt;code&gt;Handler&lt;/code&gt;&amp;#x3002;&amp;#x5E76;&amp;#x5C06;&amp;#x5F53;&amp;#x524D;&amp;#x7684;&lt;code&gt;HandlerThread&lt;/code&gt;&amp;#x7684;&lt;code&gt;looper&lt;/code&gt;&amp;#x4F20;&amp;#x9012;&amp;#x8FDB;&amp;#x53BB;&amp;#x3002;&amp;#x8BA9;&lt;code&gt;Handler&lt;/code&gt;&amp;#x80FD;&amp;#x591F;&amp;#x5411;&amp;#x5176;&amp;#x4E2D;&amp;#x63A8;&amp;#x9001;&amp;#x6D88;&amp;#x606F;&amp;#x3002;&lt;/p&gt;
&lt;h3 id=&quot;&amp;#x53D1;&amp;#x9001;&amp;#x6D88;&amp;#x606F;&quot;&gt;&lt;a href=&quot;#&amp;#x53D1;&amp;#x9001;&amp;#x6D88;&amp;#x606F;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x53D1;&amp;#x9001;&amp;#x6D88;&amp;#x606F;&quot;&gt;&lt;/a&gt;&amp;#x53D1;&amp;#x9001;&amp;#x6D88;&amp;#x606F;&lt;/h3&gt;&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;handler.post {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x5728;HandlerThread&amp;#x4E2D;&amp;#x6267;&amp;#x884C;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h3 id=&quot;&amp;#x505C;&amp;#x6B62;HandlerThread&quot;&gt;&lt;a href=&quot;#&amp;#x505C;&amp;#x6B62;HandlerThread&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x505C;&amp;#x6B62;HandlerThread&quot;&gt;&lt;/a&gt;&amp;#x505C;&amp;#x6B62;HandlerThread&lt;/h3&gt;&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;handlerThread.quit()&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h2 id=&quot;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&amp;#x4E0E;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&quot;&gt;&lt;a href=&quot;#&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&amp;#x4E0E;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&amp;#x4E0E;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&quot;&gt;&lt;/a&gt;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&amp;#x4E0E;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x907F;&amp;#x514D;&amp;#x5185;&amp;#x5B58;&amp;#x6CC4;&amp;#x6F0F;&amp;#xFF1A;&lt;/strong&gt; &amp;#x5728;&amp;#x9000;&amp;#x51FA;&amp;#x9875;&amp;#x9762;&amp;#x6216;&amp;#x4E0D;&amp;#x518D;&amp;#x9700;&amp;#x8981;&lt;code&gt;HandlerThread&lt;/code&gt;&amp;#x65F6;&amp;#xFF0C;&amp;#x52A1;&amp;#x5FC5;&amp;#x8C03;&amp;#x7528;&lt;code&gt;handlerThread.quit()&lt;/code&gt;&amp;#x6216;&lt;code&gt;handlerThread.quitSafely()&lt;/code&gt;&amp;#x4EE5;&amp;#x9632;&amp;#x6B62;&amp;#x5185;&amp;#x5B58;&amp;#x6CC4;&amp;#x6F0F;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x5408;&amp;#x7406;&amp;#x4F7F;&amp;#x7528;&amp;#x6D88;&amp;#x606F;&amp;#x961F;&amp;#x5217;&amp;#xFF1A;&lt;/strong&gt; &amp;#x4E0D;&amp;#x8981;&amp;#x5728;&lt;code&gt;HandlerThread&lt;/code&gt;&amp;#x4E0A;&amp;#x53D1;&amp;#x9001;&amp;#x8FC7;&amp;#x591A;&amp;#x7684;&amp;#x6D88;&amp;#x606F;&amp;#xFF0C;&amp;#x4EE5;&amp;#x514D;&amp;#x5F71;&amp;#x54CD;&amp;#x6027;&amp;#x80FD;&amp;#x3002;&amp;#x5408;&amp;#x7406;&amp;#x5229;&amp;#x7528;&amp;#x6D88;&amp;#x606F;&amp;#x7684;&amp;#x4F18;&amp;#x5148;&amp;#x7EA7;&amp;#x548C;&amp;#x5EF6;&amp;#x8FDF;&amp;#x673A;&amp;#x5236;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x5904;&amp;#x7406;&amp;#x5F02;&amp;#x5E38;&amp;#xFF1A;&lt;/strong&gt; &amp;#x5728;&lt;code&gt;HandlerThread&lt;/code&gt;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#x4E2D;&amp;#xFF0C;&amp;#x9002;&amp;#x5F53;&amp;#x5730;&amp;#x5904;&amp;#x7406;&amp;#x5F02;&amp;#x5E38;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x56E0;&amp;#x672A;&amp;#x6355;&amp;#x83B7;&amp;#x7684;&amp;#x5F02;&amp;#x5E38;&amp;#x5BFC;&amp;#x81F4;&amp;#x7EBF;&amp;#x7A0B;&amp;#x5D29;&amp;#x6E83;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x7EBF;&amp;#x7A0B;&amp;#x5B89;&amp;#x5168;&amp;#xFF1A;&lt;/strong&gt; &lt;code&gt;HandlerThread&lt;/code&gt;&amp;#x662F;&amp;#x7EBF;&amp;#x7A0B;&amp;#x5B89;&amp;#x5168;&amp;#x7684;&amp;#xFF0C;&amp;#x4F46;&amp;#x662F;&lt;code&gt;Handler&lt;/code&gt;&amp;#x4E0D;&amp;#x4E00;&amp;#x5B9A;&amp;#x662F;&amp;#x7EBF;&amp;#x7A0B;&amp;#x5B89;&amp;#x5168;&amp;#x7684;&amp;#x3002;&amp;#x56E0;&amp;#x6B64;&amp;#xFF0C;&amp;#x5728;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;Handler&lt;/code&gt;&amp;#x65F6;&amp;#xFF0C;&amp;#x9700;&amp;#x8981;&amp;#x6CE8;&amp;#x610F;&amp;#x7EBF;&amp;#x7A0B;&amp;#x5B89;&amp;#x5168;&amp;#x95EE;&amp;#x9898;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;&amp;#x7ED3;&amp;#x8BED;&quot;&gt;&lt;a href=&quot;#&amp;#x7ED3;&amp;#x8BED;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x7ED3;&amp;#x8BED;&quot;&gt;&lt;/a&gt;&amp;#x7ED3;&amp;#x8BED;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;HandlerThread&lt;/code&gt;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x975E;&amp;#x5E38;&amp;#x6709;&amp;#x7528;&amp;#x7684;&amp;#x7C7B;&amp;#xFF0C;&amp;#x5B83;&amp;#x53EF;&amp;#x4EE5;&amp;#x5E2E;&amp;#x52A9;&amp;#x6211;&amp;#x4EEC;&amp;#x5728;&amp;#x5B50;&amp;#x7EBF;&amp;#x7A0B;&amp;#x4E2D;&amp;#x65B9;&amp;#x4FBF;&amp;#x5730;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;Handler&lt;/code&gt;&amp;#x3002;&amp;#x5728;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;HandlerThread&lt;/code&gt;&amp;#x65F6;&amp;#xFF0C;&amp;#x9700;&amp;#x8981;&amp;#x6CE8;&amp;#x610F;&amp;#x5176;&amp;#x539F;&amp;#x7406;&amp;#x548C;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&amp;#xFF0C;&amp;#x4EE5;&amp;#x4FBF;&amp;#x66F4;&amp;#x597D;&amp;#x7684;&amp;#x8FD0;&amp;#x7528;&amp;#x5B83;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;a href=&quot;#&amp;#x63A8;&amp;#x8350;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;/a&gt;&amp;#x63A8;&amp;#x8350;&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-startup&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android_startup&lt;/a&gt;: &amp;#x63D0;&amp;#x4F9B;&amp;#x4E00;&amp;#x79CD;&amp;#x5728;&amp;#x5E94;&amp;#x7528;&amp;#x542F;&amp;#x52A8;&amp;#x65F6;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x52A0;&amp;#x7B80;&amp;#x5355;&amp;#x3001;&amp;#x9AD8;&amp;#x6548;&amp;#x7684;&amp;#x65B9;&amp;#x5F0F;&amp;#x6765;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x7EC4;&amp;#x4EF6;&amp;#xFF0C;&amp;#x4F18;&amp;#x5316;&amp;#x542F;&amp;#x52A8;&amp;#x901F;&amp;#x5EA6;&amp;#x3002;&amp;#x4E0D;&amp;#x4EC5;&amp;#x652F;&amp;#x6301;Jetpack App Startup&amp;#x7684;&amp;#x5168;&amp;#x90E8;&amp;#x529F;&amp;#x80FD;&amp;#xFF0C;&amp;#x8FD8;&amp;#x63D0;&amp;#x4F9B;&amp;#x989D;&amp;#x5916;&amp;#x7684;&amp;#x540C;&amp;#x6B65;&amp;#x4E0E;&amp;#x5F02;&amp;#x6B65;&amp;#x7B49;&amp;#x5F85;&amp;#x3001;&amp;#x7EBF;&amp;#x7A0B;&amp;#x63A7;&amp;#x5236;&amp;#x4E0E;&amp;#x591A;&amp;#x8FDB;&amp;#x7A0B;&amp;#x652F;&amp;#x6301;&amp;#x7B49;&amp;#x529F;&amp;#x80FD;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/AwesomeGithub&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AwesomeGithub&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Github&amp;#x7684;&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x7EAF;&amp;#x7EC3;&amp;#x4E60;&amp;#x9879;&amp;#x76EE;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x7EC4;&amp;#x4EF6;&amp;#x5316;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x8D26;&amp;#x6237;&amp;#x5BC6;&amp;#x7801;&amp;#x4E0E;&amp;#x8BA4;&amp;#x8BC1;&amp;#x767B;&amp;#x9646;&amp;#x3002;&amp;#x4F7F;&amp;#x7528;Kotlin&amp;#x8BED;&amp;#x8A00;&amp;#x8FDB;&amp;#x884C;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x9879;&amp;#x76EE;&amp;#x67B6;&amp;#x6784;&amp;#x662F;&amp;#x57FA;&amp;#x4E8E;JetPack\&amp;amp;DataBinding&amp;#x7684;MVVM&amp;#xFF1B;&amp;#x9879;&amp;#x76EE;&amp;#x4E2D;&amp;#x4F7F;&amp;#x7528;&amp;#x4E86;Arouter&amp;#x3001;Retrofit&amp;#x3001;Coroutine&amp;#x3001;Glide&amp;#x3001;Dagger&amp;#x4E0E;Hilt&amp;#x7B49;&amp;#x6D41;&amp;#x884C;&amp;#x5F00;&amp;#x6E90;&amp;#x6280;&amp;#x672F;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/flutter_github&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;flutter_github&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Flutter&amp;#x7684;&amp;#x8DE8;&amp;#x5E73;&amp;#x53F0;&amp;#x7248;&amp;#x672C;Github&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x4E0E;AwesomeGithub&amp;#x76F8;&amp;#x5BF9;&amp;#x5E94;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-api-analysis&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android-api-analysis&lt;/a&gt;: &amp;#x7ED3;&amp;#x5408;&amp;#x8BE6;&amp;#x7EC6;&amp;#x7684;Demo&amp;#x6765;&amp;#x5168;&amp;#x9762;&amp;#x89E3;&amp;#x6790;Android&amp;#x76F8;&amp;#x5173;&amp;#x7684;&amp;#x77E5;&amp;#x8BC6;&amp;#x70B9;, &amp;#x5E2E;&amp;#x52A9;&amp;#x8BFB;&amp;#x8005;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x5FEB;&amp;#x7684;&amp;#x638C;&amp;#x63E1;&amp;#x4E0E;&amp;#x7406;&amp;#x89E3;&amp;#x6240;&amp;#x9610;&amp;#x8FF0;&amp;#x7684;&amp;#x8981;&amp;#x70B9;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/daily_algorithm&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;daily_algorithm&lt;/a&gt;: &amp;#x6BCF;&amp;#x65E5;&amp;#x4E00;&amp;#x7B97;&amp;#x6CD5;&amp;#xFF0C;&amp;#x7531;&amp;#x6D45;&amp;#x5165;&amp;#x6DF1;&amp;#xFF0C;&amp;#x6B22;&amp;#x8FCE;&amp;#x52A0;&amp;#x5165;&amp;#x4E00;&amp;#x8D77;&amp;#x5171;&amp;#x52C9;&amp;#x3002;&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;h2 id=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;a href=&quot;#&amp;#x5F15;&amp;#x8A00;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;/a&gt;&amp;#x5F15;&amp;#x8A00;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;HandlerT
    
    </summary>
    
      <category term="android" scheme="https://www.rousetime.com/categories/android/"/>
    
    
      <category term="android" scheme="https://www.rousetime.com/tags/android/"/>
    
  </entry>
  
  <entry>
    <title>你真的了解ViewModel的设计思想吗？</title>
    <link href="https://www.rousetime.com/2024/02/01/%E4%BD%A0%E7%9C%9F%E7%9A%84%E4%BA%86%E8%A7%A3ViewModel%E7%9A%84%E8%AE%BE%E8%AE%A1%E6%80%9D%E6%83%B3%E5%90%97%EF%BC%9F/"/>
    <id>https://www.rousetime.com/2024/02/01/你真的了解ViewModel的设计思想吗？/</id>
    <published>2024-02-01T02:19:18.000Z</published>
    <updated>2024-02-01T02:20:05.759Z</updated>
    
    <content type="html">&lt;h2 id=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;a href=&quot;#&amp;#x5F15;&amp;#x8A00;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;/a&gt;&amp;#x5F15;&amp;#x8A00;&lt;/h2&gt;&lt;p&gt;&amp;#x5728;&lt;code&gt;Android&lt;/code&gt;&amp;#x5F00;&amp;#x53D1;&amp;#x4E2D;&amp;#xFF0C;&amp;#x6570;&amp;#x636E;&amp;#x7684;&amp;#x7BA1;&amp;#x7406;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x81F3;&amp;#x5173;&amp;#x91CD;&amp;#x8981;&amp;#x7684;&amp;#x95EE;&amp;#x9898;&amp;#x3002;&amp;#x968F;&amp;#x7740;&amp;#x5E94;&amp;#x7528;&amp;#x590D;&amp;#x6742;&amp;#x5EA6;&amp;#x7684;&amp;#x589E;&amp;#x52A0;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x9700;&amp;#x8981;&amp;#x4E00;&amp;#x79CD;&amp;#x80FD;&amp;#x591F;&amp;#x6709;&amp;#x6548;&amp;#x7BA1;&amp;#x7406;&amp;#x6570;&amp;#x636E;&amp;#x548C;&amp;#x5904;&amp;#x7406;UI&amp;#x76F8;&amp;#x5173;&amp;#x903B;&amp;#x8F91;&amp;#x7684;&amp;#x673A;&amp;#x5236;&amp;#x3002;&lt;code&gt;Android&lt;/code&gt;&amp;#x67B6;&amp;#x6784;&amp;#x7EC4;&amp;#x4EF6;&amp;#x4E2D;&amp;#x7684;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x5E94;&amp;#x8FD0;&amp;#x800C;&amp;#x751F;&amp;#x3002;&amp;#x672C;&amp;#x6587;&amp;#x5C06;&amp;#x6DF1;&amp;#x5165;&amp;#x63A2;&amp;#x8BA8;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x7684;&amp;#x539F;&amp;#x7406;&amp;#xFF0C;&amp;#x5E76;&amp;#x4ECB;&amp;#x7ECD;&amp;#x5176;&amp;#x9AD8;&amp;#x7EA7;&amp;#x8FD0;&amp;#x7528;&amp;#xFF0C;&amp;#x65E8;&amp;#x5728;&amp;#x5E2E;&amp;#x52A9;&amp;#x5F00;&amp;#x53D1;&amp;#x8005;&amp;#x66F4;&amp;#x597D;&amp;#x5730;&amp;#x7406;&amp;#x89E3;&amp;#x548C;&amp;#x8FD0;&amp;#x7528;&amp;#x8FD9;&amp;#x4E00;&amp;#x7EC4;&amp;#x4EF6;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x4EC0;&amp;#x4E48;&amp;#x662F;ViewModel&amp;#xFF1F;&quot;&gt;&lt;a href=&quot;#&amp;#x4EC0;&amp;#x4E48;&amp;#x662F;ViewModel&amp;#xFF1F;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4EC0;&amp;#x4E48;&amp;#x662F;ViewModel&amp;#xFF1F;&quot;&gt;&lt;/a&gt;&amp;#x4EC0;&amp;#x4E48;&amp;#x662F;ViewModel&amp;#xFF1F;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x662F;&amp;#x4E00;&amp;#x79CD;&amp;#x8BBE;&amp;#x8BA1;&amp;#x6A21;&amp;#x5F0F;&amp;#xFF0C;&amp;#x5B83;&amp;#x7684;&amp;#x76EE;&amp;#x6807;&amp;#x662F;&amp;#x5C06;UI&amp;#x63A7;&amp;#x5236;&amp;#x5668;&amp;#xFF08;Activity&amp;#x3001;Fragment&amp;#x7B49;&amp;#xFF09;&amp;#x4E0E;&amp;#x6570;&amp;#x636E;&amp;#x5206;&amp;#x79BB;&amp;#xFF0C;&amp;#x540C;&amp;#x65F6;&amp;#x4FDD;&amp;#x6301;UI&amp;#x7684;&amp;#x72B6;&amp;#x6001;&amp;#x3002;&amp;#x5728;&lt;code&gt;Android&lt;/code&gt;&amp;#x4E2D;&amp;#xFF0C;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x901A;&amp;#x5E38;&amp;#x7528;&amp;#x4E8E;&amp;#x5B58;&amp;#x50A8;&amp;#x548C;&amp;#x7BA1;&amp;#x7406;&amp;#x4E0E;UI&amp;#x76F8;&amp;#x5173;&amp;#x7684;&amp;#x6570;&amp;#x636E;&amp;#xFF0C;&amp;#x4EE5;&amp;#x786E;&amp;#x4FDD;&amp;#x8FD9;&amp;#x4E9B;&amp;#x6570;&amp;#x636E;&amp;#x5728;&amp;#x5C4F;&amp;#x5E55;&amp;#x65CB;&amp;#x8F6C;&amp;#x6216;&amp;#x914D;&amp;#x7F6E;&amp;#x66F4;&amp;#x6539;&amp;#x7B49;&amp;#x60C5;&amp;#x51B5;&amp;#x4E0B;&amp;#x4E0D;&amp;#x4F1A;&amp;#x4E22;&amp;#x5931;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x539F;&amp;#x7406;&amp;#x89E3;&amp;#x6790;&quot;&gt;&lt;a href=&quot;#&amp;#x539F;&amp;#x7406;&amp;#x89E3;&amp;#x6790;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x539F;&amp;#x7406;&amp;#x89E3;&amp;#x6790;&quot;&gt;&lt;/a&gt;&amp;#x539F;&amp;#x7406;&amp;#x89E3;&amp;#x6790;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x7684;&amp;#x539F;&amp;#x7406;&amp;#x662F;&amp;#x57FA;&amp;#x4E8E;&lt;code&gt;ViewModelStore&lt;/code&gt;&amp;#x7C7B;&amp;#x3002;&lt;code&gt;ViewModelStore&lt;/code&gt;&amp;#x7C7B;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x5B58;&amp;#x50A8;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x7684;&amp;#x5BB9;&amp;#x5668;&amp;#x3002;&amp;#x5F53;UI&amp;#x63A7;&amp;#x5236;&amp;#x5668;&amp;#x521B;&amp;#x5EFA;&amp;#x65F6;&amp;#xFF0C;&amp;#x7CFB;&amp;#x7EDF;&amp;#x4F1A;&amp;#x4E3A;&amp;#x5176;&amp;#x521B;&amp;#x5EFA;&amp;#x4E00;&amp;#x4E2A;&lt;code&gt;ViewModelStore&lt;/code&gt;&amp;#x5B9E;&amp;#x4F8B;&amp;#x3002;&amp;#x5F53; UI&amp;#x63A7;&amp;#x5236;&amp;#x5668;&amp;#x9500;&amp;#x6BC1;&amp;#x65F6;&amp;#xFF0C;&amp;#x7CFB;&amp;#x7EDF;&amp;#x4F1A;&amp;#x9500;&amp;#x6BC1;&amp;#x5176;&amp;#x5BF9;&amp;#x5E94;&amp;#x7684;&lt;code&gt;ViewModelStore&lt;/code&gt;&amp;#x5B9E;&amp;#x4F8B;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x5728;&amp;#x521B;&amp;#x5EFA;&amp;#x65F6;&amp;#xFF0C;&amp;#x4F1A;&amp;#x5C06;&amp;#x81EA;&amp;#x8EAB;&amp;#x6CE8;&amp;#x518C;&amp;#x5230;&amp;#x5176;&amp;#x6240;&amp;#x5728;&amp;#x7684;&lt;code&gt;ViewModelStore&lt;/code&gt;&amp;#x5B9E;&amp;#x4F8B;&amp;#x4E2D;&amp;#x3002;&amp;#x5F53;UI&amp;#x63A7;&amp;#x5236;&amp;#x5668;&amp;#x9500;&amp;#x6BC1;&amp;#x65F6;&amp;#xFF0C;&amp;#x7CFB;&amp;#x7EDF;&amp;#x4F1A;&amp;#x4ECE;&amp;#x5176;&amp;#x5BF9;&amp;#x5E94;&amp;#x7684;&lt;code&gt;ViewModelStore&lt;/code&gt;&amp;#x5B9E;&amp;#x4F8B;&amp;#x4E2D;&amp;#x79FB;&amp;#x9664;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;22&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;23&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;24&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;25&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;26&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;27&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;28&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;29&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;30&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;31&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;32&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;33&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;34&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;35&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;open class ViewModelStore {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    //&amp;#x5B58;&amp;#x50A8;viewmodel&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    private val map = mutableMapOf&amp;lt;String, ViewModel&amp;gt;()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    ...&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;// &amp;#x81EA;&amp;#x52A8;&amp;#x521B;&amp;#x5EFA;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;getLifecycle().addObserver(new LifecycleEventObserver() {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    @Override&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    public void onStateChanged(@NonNull LifecycleOwner source,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            @NonNull Lifecycle.Event event) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        ensureViewModelStore();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        getLifecycle().removeObserver(this);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;});&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;// &amp;#x9500;&amp;#x6BC1;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;getLifecycle().addObserver(new LifecycleEventObserver() {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    @Override&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    public void onStateChanged(@NonNull LifecycleOwner source,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            @NonNull Lifecycle.Event event) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        if (event == Lifecycle.Event.ON_DESTROY) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            // Clear out the available context&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            mContextAwareHelper.clearAvailableContext();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            // And clear the ViewModelStore&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            if (!isChangingConfigurations()) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                getViewModelStore().clear();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            mReportFullyDrawnExecutor.activityDestroyed();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;});&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x6240;&amp;#x4EE5;&lt;code&gt;ViewModelStore&lt;/code&gt;&amp;#x7684;&amp;#x521B;&amp;#x5EFA;&amp;#x4E0E;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x7684;&amp;#x9500;&amp;#x6BC1;&amp;#xFF0C;&amp;#x90FD;&amp;#x4E0E;&lt;code&gt;Lifecycle&lt;/code&gt;&amp;#x6709;&amp;#x5173;&amp;#xFF0C;&amp;#x8FD9;&amp;#x6837;&amp;#x5C31;&amp;#x8BA9;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x5177;&amp;#x6709;&amp;#x4EE5;&amp;#x4E0B;&amp;#x7279;&amp;#x6027;&amp;#xFF1A;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x611F;&amp;#x77E5;: &lt;code&gt;ViewModel&lt;/code&gt;&amp;#x662F;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x611F;&amp;#x77E5;&amp;#x7684;&amp;#xFF0C;&amp;#x5B83;&amp;#x4F1A;&amp;#x81EA;&amp;#x52A8;&amp;#x8DDF;&amp;#x8E2A;UI&amp;#x63A7;&amp;#x5236;&amp;#x5668;&amp;#x7684;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#xFF0C;&amp;#x5E76;&amp;#x5728;&amp;#x9002;&amp;#x5F53;&amp;#x7684;&amp;#x65F6;&amp;#x5019;&amp;#x8FDB;&amp;#x884C;&amp;#x6E05;&amp;#x7406;&amp;#x3002;&amp;#x8FD9;&amp;#x610F;&amp;#x5473;&amp;#x7740;&amp;#x6211;&amp;#x4EEC;&amp;#x65E0;&amp;#x9700;&amp;#x62C5;&amp;#x5FC3;&amp;#x5185;&amp;#x5B58;&amp;#x6CC4;&amp;#x6F0F;&amp;#x6216;&amp;#x4E0D;&amp;#x5FC5;&amp;#x8981;&amp;#x7684;&amp;#x8D44;&amp;#x6E90;&amp;#x5360;&amp;#x7528;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x6301;&amp;#x4E45;&amp;#x6027;&amp;#x5B58;&amp;#x50A8;: &lt;code&gt;ViewModel&lt;/code&gt;&amp;#x53EF;&amp;#x4EE5;&amp;#x5B58;&amp;#x50A8;&amp;#x5927;&amp;#x91CF;&amp;#x7684;&amp;#x6570;&amp;#x636E;&amp;#xFF0C;&amp;#x5E76;&amp;#x4E14;&amp;#x5728;&amp;#x914D;&amp;#x7F6E;&amp;#x66F4;&amp;#x6539;&amp;#x65F6;&amp;#x4ECD;&amp;#x7136;&amp;#x4FDD;&amp;#x6301;&amp;#x6D3B;&amp;#x52A8;&amp;#x3002;&amp;#x8FD9;&amp;#x662F;&amp;#x901A;&amp;#x8FC7;&amp;#x5C06;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x4E0E;UI&amp;#x63A7;&amp;#x5236;&amp;#x5668;&amp;#x5206;&amp;#x79BB;&amp;#xFF0C;&amp;#x5C06;&amp;#x5176;&amp;#x4FDD;&amp;#x5B58;&amp;#x5728;&lt;code&gt;ViewModelStore&lt;/code&gt;&amp;#x4E2D;&amp;#x5B9E;&amp;#x73B0;&amp;#x7684;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x6570;&amp;#x636E;&amp;#x5171;&amp;#x4EAB;: &amp;#x591A;&amp;#x4E2A;UI&amp;#x63A7;&amp;#x5236;&amp;#x5668;&amp;#x53EF;&amp;#x4EE5;&amp;#x5171;&amp;#x4EAB;&amp;#x540C;&amp;#x4E00;&amp;#x4E2A;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#xFF0C;&amp;#x8FD9;&amp;#x4E3A;&amp;#x4E0D;&amp;#x540C;&amp;#x7EC4;&amp;#x4EF6;&amp;#x4E4B;&amp;#x95F4;&amp;#x7684;&amp;#x6570;&amp;#x636E;&amp;#x5171;&amp;#x4EAB;&amp;#x63D0;&amp;#x4F9B;&amp;#x4E86;&amp;#x4FBF;&amp;#x5229;&amp;#x3002;&amp;#x8FD9;&amp;#x5BF9;&amp;#x4E8E;&amp;#x5728;Activity&amp;#x548C;Fragment&amp;#x4E4B;&amp;#x95F4;&amp;#x4F20;&amp;#x9012;&amp;#x6570;&amp;#x636E;&amp;#x975E;&amp;#x5E38;&amp;#x6709;&amp;#x7528;&amp;#x3002;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;&amp;#x4E3A;&amp;#x4EC0;&amp;#x4E48;&amp;#x9700;&amp;#x8981;ViewModelStore&quot;&gt;&lt;a href=&quot;#&amp;#x4E3A;&amp;#x4EC0;&amp;#x4E48;&amp;#x9700;&amp;#x8981;ViewModelStore&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4E3A;&amp;#x4EC0;&amp;#x4E48;&amp;#x9700;&amp;#x8981;ViewModelStore&quot;&gt;&lt;/a&gt;&amp;#x4E3A;&amp;#x4EC0;&amp;#x4E48;&amp;#x9700;&amp;#x8981;ViewModelStore&lt;/h2&gt;&lt;p&gt;&lt;code&gt;ViewModelStore&lt;/code&gt;&amp;#x662F;&amp;#x7528;&amp;#x4E8E;&amp;#x7BA1;&amp;#x7406;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x5B9E;&amp;#x4F8B;&amp;#x7684;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x7684;&amp;#x4E00;&amp;#x79CD;&amp;#x673A;&amp;#x5236;&amp;#x3002;&amp;#x5B83;&amp;#x7684;&amp;#x5B58;&amp;#x5728;&amp;#x662F;&amp;#x4E3A;&amp;#x4E86;&amp;#x89E3;&amp;#x51B3;&amp;#x4EE5;&amp;#x4E0B;&amp;#x95EE;&amp;#x9898;&amp;#xFF1A;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x4E00;&amp;#x81F4;&amp;#x6027;&amp;#xFF1A;&amp;#x5728;Android&amp;#x5F00;&amp;#x53D1;&amp;#x4E2D;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x7ECF;&amp;#x5E38;&amp;#x9047;&amp;#x5230;&amp;#x914D;&amp;#x7F6E;&amp;#x66F4;&amp;#x6539;&amp;#xFF08;&amp;#x5982;&amp;#x5C4F;&amp;#x5E55;&amp;#x65CB;&amp;#x8F6C;&amp;#xFF09;&amp;#x5BFC;&amp;#x81F4;Activity&amp;#x6216;Fragment&amp;#x88AB;&amp;#x9500;&amp;#x6BC1;&amp;#x5E76;&amp;#x91CD;&amp;#x65B0;&amp;#x521B;&amp;#x5EFA;&amp;#x7684;&amp;#x60C5;&amp;#x51B5;&amp;#x3002;&amp;#x8FD9;&amp;#x79CD;&amp;#x60C5;&amp;#x51B5;&amp;#x4E0B;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x5E0C;&amp;#x671B;&amp;#x4FDD;&amp;#x6301;&amp;#x4E0E;UI&amp;#x76F8;&amp;#x5173;&amp;#x7684;&amp;#x6570;&amp;#x636E;&amp;#x7684;&amp;#x4E00;&amp;#x81F4;&amp;#x6027;&amp;#xFF0C;&amp;#x5373;&amp;#x4F7F;UI&amp;#x91CD;&amp;#x65B0;&amp;#x521B;&amp;#x5EFA;&amp;#xFF0C;&amp;#x6570;&amp;#x636E;&amp;#x4E5F;&amp;#x4E0D;&amp;#x4F1A;&amp;#x4E22;&amp;#x5931;&amp;#x3002;&lt;code&gt;ViewModelStore&lt;/code&gt;&amp;#x901A;&amp;#x8FC7;&amp;#x7BA1;&amp;#x7406;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x5B9E;&amp;#x4F8B;&amp;#x7684;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#xFF0C;&amp;#x786E;&amp;#x4FDD;&amp;#x5728;&amp;#x91CD;&amp;#x65B0;&amp;#x521B;&amp;#x5EFA;UI&amp;#x65F6;&amp;#xFF0C;&amp;#x65E7;&amp;#x7684;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x5B9E;&amp;#x4F8B;&amp;#x88AB;&amp;#x6B63;&amp;#x786E;&amp;#x5730;&amp;#x9500;&amp;#x6BC1;&amp;#xFF0C;&amp;#x800C;&amp;#x65B0;&amp;#x7684;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x5B9E;&amp;#x4F8B;&amp;#x88AB;&amp;#x6B63;&amp;#x786E;&amp;#x5730;&amp;#x521B;&amp;#x5EFA;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x8D44;&amp;#x6E90;&amp;#x7BA1;&amp;#x7406;&amp;#xFF1A;&amp;#x6BCF;&amp;#x4E2A;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x5B9E;&amp;#x4F8B;&amp;#x53EF;&amp;#x80FD;&amp;#x6301;&amp;#x6709;&amp;#x4E00;&amp;#x4E9B;&amp;#x8D44;&amp;#x6E90;&amp;#xFF0C;&amp;#x5982;&amp;#x6570;&amp;#x636E;&amp;#x5E93;&amp;#x8FDE;&amp;#x63A5;&amp;#x3001;&amp;#x7F51;&amp;#x7EDC;&amp;#x8FDE;&amp;#x63A5;&amp;#x7B49;&amp;#x3002;&amp;#x5982;&amp;#x679C;&amp;#x8FD9;&amp;#x4E9B;&amp;#x8D44;&amp;#x6E90;&amp;#x6CA1;&amp;#x6709;&amp;#x88AB;&amp;#x6B63;&amp;#x786E;&amp;#x5730;&amp;#x91CA;&amp;#x653E;&amp;#xFF0C;&amp;#x5C31;&amp;#x4F1A;&amp;#x5BFC;&amp;#x81F4;&amp;#x5185;&amp;#x5B58;&amp;#x6CC4;&amp;#x6F0F;&amp;#x548C;&amp;#x8D44;&amp;#x6E90;&amp;#x6D6A;&amp;#x8D39;&amp;#x3002;&lt;code&gt;ViewModelStore&lt;/code&gt;&amp;#x901A;&amp;#x8FC7;&amp;#x5728;&amp;#x9002;&amp;#x5F53;&amp;#x7684;&amp;#x65F6;&amp;#x673A;&amp;#x9500;&amp;#x6BC1;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x5B9E;&amp;#x4F8B;&amp;#xFF0C;&amp;#x786E;&amp;#x4FDD;&amp;#x8FD9;&amp;#x4E9B;&amp;#x8D44;&amp;#x6E90;&amp;#x53EF;&amp;#x4EE5;&amp;#x88AB;&amp;#x6B63;&amp;#x786E;&amp;#x5730;&amp;#x91CA;&amp;#x653E;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x4E86;&amp;#x5185;&amp;#x5B58;&amp;#x6CC4;&amp;#x6F0F;&amp;#x548C;&amp;#x8D44;&amp;#x6E90;&amp;#x6D6A;&amp;#x8D39;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x6570;&amp;#x636E;&amp;#x5171;&amp;#x4EAB;&amp;#xFF1A;&lt;code&gt;ViewModelStore&lt;/code&gt;&amp;#x5141;&amp;#x8BB8;&amp;#x591A;&amp;#x4E2A;&amp;#x7EC4;&amp;#x4EF6;&amp;#x5171;&amp;#x4EAB;&amp;#x540C;&amp;#x4E00;&amp;#x4E2A;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x5B9E;&amp;#x4F8B;&amp;#x3002;&amp;#x8FD9;&amp;#x5728;&amp;#x67D0;&amp;#x4E9B;&amp;#x60C5;&amp;#x51B5;&amp;#x4E0B;&amp;#x975E;&amp;#x5E38;&amp;#x6709;&amp;#x7528;&amp;#xFF0C;&amp;#x6BD4;&amp;#x5982;&amp;#x4E00;&amp;#x4E2A;Activity&amp;#x548C;&amp;#x5B83;&amp;#x7684;&amp;#x591A;&amp;#x4E2A;Fragment&amp;#x9700;&amp;#x8981;&amp;#x8BBF;&amp;#x95EE;&amp;#x548C;&amp;#x66F4;&amp;#x65B0;&amp;#x76F8;&amp;#x540C;&amp;#x7684;&amp;#x6570;&amp;#x636E;&amp;#x3002;&amp;#x901A;&amp;#x8FC7;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;ViewModelStore&lt;/code&gt;&amp;#xFF0C;&amp;#x8FD9;&amp;#x4E9B;&amp;#x7EC4;&amp;#x4EF6;&amp;#x53EF;&amp;#x4EE5;&amp;#x5171;&amp;#x4EAB;&amp;#x540C;&amp;#x4E00;&amp;#x4E2A;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x5B9E;&amp;#x4F8B;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x4E86;&amp;#x6570;&amp;#x636E;&amp;#x7684;&amp;#x91CD;&amp;#x590D;&amp;#x52A0;&amp;#x8F7D;&amp;#x548C;&amp;#x540C;&amp;#x6B65;&amp;#x95EE;&amp;#x9898;&amp;#x3002;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;&amp;#x7B80;&amp;#x5355;&amp;#x793A;&amp;#x4F8B;&quot;&gt;&lt;a href=&quot;#&amp;#x7B80;&amp;#x5355;&amp;#x793A;&amp;#x4F8B;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x7B80;&amp;#x5355;&amp;#x793A;&amp;#x4F8B;&quot;&gt;&lt;/a&gt;&amp;#x7B80;&amp;#x5355;&amp;#x793A;&amp;#x4F8B;&lt;/h2&gt;&lt;p&gt;&amp;#x4EE5;&amp;#x4E0B;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x7B80;&amp;#x5355;&amp;#x7684;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x793A;&amp;#x4F8B;&amp;#xFF0C;&amp;#x6F14;&amp;#x793A;&amp;#x4E86;&amp;#x5982;&amp;#x4F55;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x6765;&amp;#x4FDD;&amp;#x5B58;&amp;#x548C;&amp;#x7BA1;&amp;#x7406;&amp;#x6570;&amp;#x636E;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;22&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;23&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;24&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;25&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;26&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;MyViewModel&lt;/span&gt; : &lt;span class=&quot;type&quot;&gt;ViewModel&lt;/span&gt;&lt;/span&gt;() {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; state = MutableLiveData&amp;lt;String&amp;gt;()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;setData&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(value: &lt;span class=&quot;type&quot;&gt;String&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        sate.value = value&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;getData&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt;&lt;/span&gt;: LiveData&amp;lt;String&amp;gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; state&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;MyActivity&lt;/span&gt; : &lt;span class=&quot;type&quot;&gt;AppCompatActivity&lt;/span&gt;&lt;/span&gt;() {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; viewModel: MyViewModel &lt;span class=&quot;keyword&quot;&gt;by&lt;/span&gt; viewModels()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;onCreate&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(savedInstanceState: &lt;span class=&quot;type&quot;&gt;Bundle&lt;/span&gt;?)&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;super&lt;/span&gt;.onCreate(savedInstanceState)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        setContentView(R.layout.activity_main)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x89C2;&amp;#x5BDF; ViewModel &amp;#x7684;&amp;#x6570;&amp;#x636E;&amp;#x53D8;&amp;#x5316;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        viewModel.getData().observe(&lt;span class=&quot;keyword&quot;&gt;this&lt;/span&gt;, { &lt;span class=&quot;keyword&quot;&gt;data&lt;/span&gt; -&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;comment&quot;&gt;// &amp;#x66F4;&amp;#x65B0; UI&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        })&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x5728;&amp;#x4E0A;&amp;#x8FF0;&amp;#x4EE3;&amp;#x7801;&amp;#x4E2D;&amp;#xFF0C;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x5305;&amp;#x542B;&amp;#x4E00;&amp;#x4E2A;&lt;code&gt;MutableLiveData&lt;/code&gt;&amp;#x6765;&amp;#x5B58;&amp;#x50A8;&amp;#x6570;&amp;#x636E;&amp;#x3002;&amp;#x901A;&amp;#x8FC7;setData&amp;#x548C;getData&amp;#x65B9;&amp;#x6CD5;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x53EF;&amp;#x4EE5;&amp;#x8BBE;&amp;#x7F6E;&amp;#x548C;&amp;#x83B7;&amp;#x53D6;&amp;#x6570;&amp;#x636E;&amp;#x3002;&amp;#x8FD9;&amp;#x4E2A;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x5C06;&amp;#x5728;&amp;#x914D;&amp;#x7F6E;&amp;#x66F4;&amp;#x6539;&amp;#x65F6;&amp;#x4FDD;&amp;#x6301;&amp;#x6D3B;&amp;#x52A8;&amp;#xFF0C;&amp;#x786E;&amp;#x4FDD;&amp;#x6570;&amp;#x636E;&amp;#x4E0D;&amp;#x4F1A;&amp;#x4E22;&amp;#x5931;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x9AD8;&amp;#x7EA7;&amp;#x8FD0;&amp;#x7528;&quot;&gt;&lt;a href=&quot;#&amp;#x9AD8;&amp;#x7EA7;&amp;#x8FD0;&amp;#x7528;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x9AD8;&amp;#x7EA7;&amp;#x8FD0;&amp;#x7528;&quot;&gt;&lt;/a&gt;&amp;#x9AD8;&amp;#x7EA7;&amp;#x8FD0;&amp;#x7528;&lt;/h2&gt;&lt;h3 id=&quot;&amp;#x4F7F;&amp;#x7528;SavedStateHandle&quot;&gt;&lt;a href=&quot;#&amp;#x4F7F;&amp;#x7528;SavedStateHandle&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4F7F;&amp;#x7528;SavedStateHandle&quot;&gt;&lt;/a&gt;&amp;#x4F7F;&amp;#x7528;SavedStateHandle&lt;/h3&gt;&lt;p&gt;&lt;code&gt;SavedStateHandle&lt;/code&gt;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x53EF;&amp;#x7528;&amp;#x4E8E;&amp;#x5728;&amp;#x914D;&amp;#x7F6E;&amp;#x66F4;&amp;#x6539;&amp;#x540E;&amp;#x4FDD;&amp;#x6301;&amp;#x6570;&amp;#x636E;&amp;#x7684;&amp;#x5DE5;&amp;#x5177;&amp;#x3002;&amp;#x5B83;&amp;#x5141;&amp;#x8BB8;&amp;#x6211;&amp;#x4EEC;&amp;#x5C06;&amp;#x6570;&amp;#x636E;&amp;#x4E0E;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x5173;&amp;#x8054;&amp;#xFF0C;&amp;#x4EE5;&amp;#x4FBF;&amp;#x5728;&amp;#x5E94;&amp;#x7528;&amp;#x91CD;&amp;#x65B0;&amp;#x521B;&amp;#x5EFA;&amp;#x65F6;&amp;#x68C0;&amp;#x7D22;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;MyViewModel&lt;/span&gt;&lt;/span&gt;(&lt;span class=&quot;keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; savedStateHandle: SavedStateHandle) : ViewModel() {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; dataKey = &lt;span class=&quot;string&quot;&gt;&amp;quot;data_key&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;setData&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(value: &lt;span class=&quot;type&quot;&gt;String&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        savedStateHandle.&lt;span class=&quot;keyword&quot;&gt;set&lt;/span&gt;(dataKey, value)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;getData&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt;&lt;/span&gt;: String? {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; savedStateHandle.&lt;span class=&quot;keyword&quot;&gt;get&lt;/span&gt;(dataKey)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h3 id=&quot;&amp;#x5904;&amp;#x7406;&amp;#x5F02;&amp;#x6B65;&amp;#x64CD;&amp;#x4F5C;&quot;&gt;&lt;a href=&quot;#&amp;#x5904;&amp;#x7406;&amp;#x5F02;&amp;#x6B65;&amp;#x64CD;&amp;#x4F5C;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5904;&amp;#x7406;&amp;#x5F02;&amp;#x6B65;&amp;#x64CD;&amp;#x4F5C;&quot;&gt;&lt;/a&gt;&amp;#x5904;&amp;#x7406;&amp;#x5F02;&amp;#x6B65;&amp;#x64CD;&amp;#x4F5C;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x53EF;&amp;#x4EE5;&amp;#x4E0E;&amp;#x534F;&amp;#x7A0B;&amp;#x7ED3;&amp;#x5408;&amp;#xFF0C;&amp;#x4EE5;&amp;#x5904;&amp;#x7406;&amp;#x5F02;&amp;#x6B65;&amp;#x64CD;&amp;#x4F5C;&amp;#x3002;&amp;#x8FD9;&amp;#x4F7F;&amp;#x5F97;&amp;#x5728;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x4E2D;&amp;#x6267;&amp;#x884C;&amp;#x8017;&amp;#x65F6;&amp;#x64CD;&amp;#x4F5C;&amp;#x6210;&amp;#x4E3A;&amp;#x53EF;&amp;#x80FD;&amp;#xFF0C;&amp;#x800C;&amp;#x4E0D;&amp;#x4F1A;&amp;#x963B;&amp;#x585E;UI&amp;#x7EBF;&amp;#x7A0B;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;MyViewModel&lt;/span&gt; : &lt;span class=&quot;type&quot;&gt;ViewModel&lt;/span&gt;&lt;/span&gt;() {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;data&lt;/span&gt; = MutableLiveData&amp;lt;String&amp;gt;()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;fetchData&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        viewModelScope.launch {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;comment&quot;&gt;// &amp;#x6267;&amp;#x884C;&amp;#x8017;&amp;#x65F6;&amp;#x64CD;&amp;#x4F5C;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; result = fetchDataFromRepository()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;keyword&quot;&gt;data&lt;/span&gt;.value = result&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;getData&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt;&lt;/span&gt;: LiveData&amp;lt;String&amp;gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;data&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h3 id=&quot;&amp;#x4F7F;&amp;#x7528;Factory&quot;&gt;&lt;a href=&quot;#&amp;#x4F7F;&amp;#x7528;Factory&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4F7F;&amp;#x7528;Factory&quot;&gt;&lt;/a&gt;&amp;#x4F7F;&amp;#x7528;Factory&lt;/h3&gt;&lt;p&gt;&lt;code&gt;ViewModelProvider.Factory&lt;/code&gt;&amp;#x7528;&amp;#x4E8E;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x7684;&amp;#x521B;&amp;#x5EFA;&amp;#x8FC7;&amp;#x7A0B;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x4F20;&amp;#x9012;&amp;#x53C2;&amp;#x6570;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x7684;&amp;#x6784;&amp;#x9020;&amp;#x51FD;&amp;#x6570;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;class MyViewModelFactory(private val repository: MyRepository) : ViewModelProvider.Factory {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    override fun &amp;lt;T : ViewModel?&amp;gt; create(modelClass: Class&amp;lt;T&amp;gt;): T {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        if (modelClass.isAssignableFrom(MyViewModel::class.java)) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            return MyViewModel(repository) as T&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        throw IllegalArgumentException(&amp;quot;Unknown ViewModel class&amp;quot;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h2 id=&quot;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&amp;#x548C;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&quot;&gt;&lt;a href=&quot;#&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&amp;#x548C;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&amp;#x548C;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&quot;&gt;&lt;/a&gt;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&amp;#x548C;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&amp;#x907F;&amp;#x514D;&amp;#x5728;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x4E2D;&amp;#x6301;&amp;#x6709;&lt;code&gt;View&lt;/code&gt;&amp;#x7684;&amp;#x5F15;&amp;#x7528;&amp;#xFF0C;&amp;#x4EE5;&amp;#x9632;&amp;#x6B62;&amp;#x5185;&amp;#x5B58;&amp;#x6CC4;&amp;#x6F0F;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x5C06;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x7684;&amp;#x804C;&amp;#x8D23;&amp;#x9650;&amp;#x5236;&amp;#x5728;&amp;#x5904;&amp;#x7406;UI&amp;#x76F8;&amp;#x5173;&amp;#x7684;&amp;#x903B;&amp;#x8F91;&amp;#xFF0C;&amp;#x4E0D;&amp;#x8981;&amp;#x5305;&amp;#x542B;&amp;#x8FC7;&amp;#x591A;&amp;#x7684;&amp;#x4E1A;&amp;#x52A1;&amp;#x903B;&amp;#x8F91;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x8C28;&amp;#x614E;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;SavedStateHandle&lt;/code&gt;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x5C06;&amp;#x5927;&amp;#x91CF;&amp;#x6570;&amp;#x636E;&amp;#x5B58;&amp;#x50A8;&amp;#x5728;&amp;#x5176;&amp;#x4E2D;&amp;#x5BFC;&amp;#x81F4;&amp;#x6027;&amp;#x80FD;&amp;#x95EE;&amp;#x9898;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;&amp;#x7ED3;&amp;#x8BED;&quot;&gt;&lt;a href=&quot;#&amp;#x7ED3;&amp;#x8BED;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x7ED3;&amp;#x8BED;&quot;&gt;&lt;/a&gt;&amp;#x7ED3;&amp;#x8BED;&lt;/h2&gt;&lt;p&gt;&amp;#x901A;&amp;#x8FC7;&amp;#x6DF1;&amp;#x5165;&amp;#x7406;&amp;#x89E3;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x7684;&amp;#x539F;&amp;#x7406;&amp;#x548C;&amp;#x9AD8;&amp;#x7EA7;&amp;#x8FD0;&amp;#x7528;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x53EF;&amp;#x4EE5;&amp;#x66F4;&amp;#x597D;&amp;#x5730;&amp;#x5229;&amp;#x7528;&amp;#x8FD9;&amp;#x4E00;&amp;#x5F3A;&amp;#x5927;&amp;#x7684;&amp;#x67B6;&amp;#x6784;&amp;#x7EC4;&amp;#x4EF6;&amp;#x3002;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x7684;&amp;#x8BBE;&amp;#x8BA1;&amp;#x6A21;&amp;#x5F0F;&amp;#x548C;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x611F;&amp;#x77E5;&amp;#x4F7F;&amp;#x5176;&amp;#x6210;&amp;#x4E3A;&lt;code&gt;Android&lt;/code&gt;&amp;#x5F00;&amp;#x53D1;&amp;#x4E2D;&amp;#x4E0D;&amp;#x53EF;&amp;#x6216;&amp;#x7F3A;&amp;#x7684;&amp;#x4E00;&amp;#x90E8;&amp;#x5206;&amp;#x3002;&amp;#x5E0C;&amp;#x671B;&amp;#x672C;&amp;#x6587;&amp;#x80FD;&amp;#x591F;&amp;#x5E2E;&amp;#x52A9;&amp;#x5927;&amp;#x5BB6;&amp;#x66F4;&amp;#x597D;&amp;#x5730;&amp;#x5E94;&amp;#x7528;&amp;#x548C;&amp;#x7406;&amp;#x89E3;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;a href=&quot;#&amp;#x63A8;&amp;#x8350;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;/a&gt;&amp;#x63A8;&amp;#x8350;&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-startup&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android_startup&lt;/a&gt;: &amp;#x63D0;&amp;#x4F9B;&amp;#x4E00;&amp;#x79CD;&amp;#x5728;&amp;#x5E94;&amp;#x7528;&amp;#x542F;&amp;#x52A8;&amp;#x65F6;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x52A0;&amp;#x7B80;&amp;#x5355;&amp;#x3001;&amp;#x9AD8;&amp;#x6548;&amp;#x7684;&amp;#x65B9;&amp;#x5F0F;&amp;#x6765;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x7EC4;&amp;#x4EF6;&amp;#xFF0C;&amp;#x4F18;&amp;#x5316;&amp;#x542F;&amp;#x52A8;&amp;#x901F;&amp;#x5EA6;&amp;#x3002;&amp;#x4E0D;&amp;#x4EC5;&amp;#x652F;&amp;#x6301;Jetpack App Startup&amp;#x7684;&amp;#x5168;&amp;#x90E8;&amp;#x529F;&amp;#x80FD;&amp;#xFF0C;&amp;#x8FD8;&amp;#x63D0;&amp;#x4F9B;&amp;#x989D;&amp;#x5916;&amp;#x7684;&amp;#x540C;&amp;#x6B65;&amp;#x4E0E;&amp;#x5F02;&amp;#x6B65;&amp;#x7B49;&amp;#x5F85;&amp;#x3001;&amp;#x7EBF;&amp;#x7A0B;&amp;#x63A7;&amp;#x5236;&amp;#x4E0E;&amp;#x591A;&amp;#x8FDB;&amp;#x7A0B;&amp;#x652F;&amp;#x6301;&amp;#x7B49;&amp;#x529F;&amp;#x80FD;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/AwesomeGithub&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AwesomeGithub&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Github&amp;#x7684;&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x7EAF;&amp;#x7EC3;&amp;#x4E60;&amp;#x9879;&amp;#x76EE;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x7EC4;&amp;#x4EF6;&amp;#x5316;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x8D26;&amp;#x6237;&amp;#x5BC6;&amp;#x7801;&amp;#x4E0E;&amp;#x8BA4;&amp;#x8BC1;&amp;#x767B;&amp;#x9646;&amp;#x3002;&amp;#x4F7F;&amp;#x7528;Kotlin&amp;#x8BED;&amp;#x8A00;&amp;#x8FDB;&amp;#x884C;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x9879;&amp;#x76EE;&amp;#x67B6;&amp;#x6784;&amp;#x662F;&amp;#x57FA;&amp;#x4E8E;JetPack\&amp;amp;DataBinding&amp;#x7684;MVVM&amp;#xFF1B;&amp;#x9879;&amp;#x76EE;&amp;#x4E2D;&amp;#x4F7F;&amp;#x7528;&amp;#x4E86;Arouter&amp;#x3001;Retrofit&amp;#x3001;Coroutine&amp;#x3001;Glide&amp;#x3001;Dagger&amp;#x4E0E;Hilt&amp;#x7B49;&amp;#x6D41;&amp;#x884C;&amp;#x5F00;&amp;#x6E90;&amp;#x6280;&amp;#x672F;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/flutter_github&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;flutter_github&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Flutter&amp;#x7684;&amp;#x8DE8;&amp;#x5E73;&amp;#x53F0;&amp;#x7248;&amp;#x672C;Github&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x4E0E;AwesomeGithub&amp;#x76F8;&amp;#x5BF9;&amp;#x5E94;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-api-analysis&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android-api-analysis&lt;/a&gt;: &amp;#x7ED3;&amp;#x5408;&amp;#x8BE6;&amp;#x7EC6;&amp;#x7684;Demo&amp;#x6765;&amp;#x5168;&amp;#x9762;&amp;#x89E3;&amp;#x6790;Android&amp;#x76F8;&amp;#x5173;&amp;#x7684;&amp;#x77E5;&amp;#x8BC6;&amp;#x70B9;, &amp;#x5E2E;&amp;#x52A9;&amp;#x8BFB;&amp;#x8005;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x5FEB;&amp;#x7684;&amp;#x638C;&amp;#x63E1;&amp;#x4E0E;&amp;#x7406;&amp;#x89E3;&amp;#x6240;&amp;#x9610;&amp;#x8FF0;&amp;#x7684;&amp;#x8981;&amp;#x70B9;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/daily_algorithm&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;daily_algorithm&lt;/a&gt;: &amp;#x6BCF;&amp;#x65E5;&amp;#x4E00;&amp;#x7B97;&amp;#x6CD5;&amp;#xFF0C;&amp;#x7531;&amp;#x6D45;&amp;#x5165;&amp;#x6DF1;&amp;#xFF0C;&amp;#x6B22;&amp;#x8FCE;&amp;#x52A0;&amp;#x5165;&amp;#x4E00;&amp;#x8D77;&amp;#x5171;&amp;#x52C9;&amp;#x3002;&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;h2 id=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;a href=&quot;#&amp;#x5F15;&amp;#x8A00;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;/a&gt;&amp;#x5F15;&amp;#x8A00;&lt;/h2&gt;&lt;p&gt;&amp;#x5728;&lt;code&gt;
    
    </summary>
    
      <category term="android" scheme="https://www.rousetime.com/categories/android/"/>
    
    
      <category term="android" scheme="https://www.rousetime.com/tags/android/"/>
    
  </entry>
  
  <entry>
    <title>Android Lifecycle 深度解剖：三大类、五种状态、七大事件全面解读！</title>
    <link href="https://www.rousetime.com/2024/01/24/Android-Lifecycle-%E6%B7%B1%E5%BA%A6%E8%A7%A3%E5%89%96%EF%BC%9A%E4%B8%89%E5%A4%A7%E7%B1%BB%E3%80%81%E4%BA%94%E7%A7%8D%E7%8A%B6%E6%80%81%E3%80%81%E4%B8%83%E5%A4%A7%E4%BA%8B%E4%BB%B6%E5%85%A8%E9%9D%A2%E8%A7%A3%E8%AF%BB%EF%BC%81/"/>
    <id>https://www.rousetime.com/2024/01/24/Android-Lifecycle-深度解剖：三大类、五种状态、七大事件全面解读！/</id>
    <published>2024-01-24T01:49:51.000Z</published>
    <updated>2024-01-24T01:50:23.263Z</updated>
    
    <content type="html">&lt;h2 id=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;a href=&quot;#&amp;#x5F15;&amp;#x8A00;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;/a&gt;&amp;#x5F15;&amp;#x8A00;&lt;/h2&gt;&lt;p&gt;&amp;#x5728;Android&amp;#x5F00;&amp;#x53D1;&amp;#x9886;&amp;#x57DF;&amp;#xFF0C;&amp;#x638C;&amp;#x63E1;Jetpack&amp;#x662F;&amp;#x4E00;&amp;#x4F4D;&amp;#x4E13;&amp;#x4E1A;Android&amp;#x5F00;&amp;#x53D1;&amp;#x8005;&amp;#x5FC5;&amp;#x5907;&amp;#x7684;&amp;#x6280;&amp;#x80FD;&amp;#x3002;&amp;#x672C;&amp;#x6587;&amp;#x5C06;&amp;#x56F4;&amp;#x7ED5;Android Jetpack&amp;#x5C55;&amp;#x5F00;&amp;#xFF0C;&amp;#x6DF1;&amp;#x5EA6;&amp;#x89E3;&amp;#x6790;&amp;#x9762;&amp;#x8BD5;&amp;#x4E2D;&amp;#x53EF;&amp;#x80FD;&amp;#x6D89;&amp;#x53CA;&amp;#x5230;&amp;#x7684;&amp;#x9AD8;&amp;#x7EA7;&amp;#x7591;&amp;#x96BE;&amp;#x95EE;&amp;#x9898;&amp;#xFF0C;&amp;#x6211;&amp;#x5C06;&amp;#x5206;&amp;#x4EAB;&amp;#x4E00;&amp;#x4E9B;&amp;#x5173;&amp;#x4E8E;Android Jetpack&amp;#x7684;&amp;#x9762;&amp;#x8BD5;&amp;#x6280;&amp;#x5DE7;&amp;#xFF0C;&amp;#x5E2E;&amp;#x52A9;&amp;#x4F60;&amp;#x66F4;&amp;#x597D;&amp;#x5730;&amp;#x51C6;&amp;#x5907;&amp;#x9762;&amp;#x8BD5;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;Navigation&amp;#x7EC4;&amp;#x4EF6;&amp;#x7684;&amp;#x7406;&amp;#x89E3;&quot;&gt;&lt;a href=&quot;#Navigation&amp;#x7EC4;&amp;#x4EF6;&amp;#x7684;&amp;#x7406;&amp;#x89E3;&quot; class=&quot;headerlink&quot; title=&quot;Navigation&amp;#x7EC4;&amp;#x4EF6;&amp;#x7684;&amp;#x7406;&amp;#x89E3;&quot;&gt;&lt;/a&gt;Navigation&amp;#x7EC4;&amp;#x4EF6;&amp;#x7684;&amp;#x7406;&amp;#x89E3;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;&amp;#x95EE;&amp;#x9898;&amp;#xFF1A;&lt;/strong&gt; &amp;#x8BF7;&amp;#x8BE6;&amp;#x7EC6;&amp;#x8BF4;&amp;#x660E;Navigation&amp;#x7EC4;&amp;#x4EF6;&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&amp;#x573A;&amp;#x666F;&amp;#x4EE5;&amp;#x53CA;&amp;#x4E0E;&amp;#x4F20;&amp;#x7EDF;Fragment&amp;#x4E8B;&amp;#x52A1;&amp;#x7684;&amp;#x6BD4;&amp;#x8F83;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;#x51FA;&amp;#x53D1;&amp;#x70B9;&amp;#xFF1A;&lt;/strong&gt; &amp;#x5728;&amp;#x56DE;&amp;#x7B54;&amp;#x8FD9;&amp;#x4E2A;&amp;#x95EE;&amp;#x9898;&amp;#x65F6;&amp;#xFF0C;&amp;#x8981;&amp;#x7A81;&amp;#x51FA;Navigation&amp;#x7EC4;&amp;#x4EF6;&amp;#x7684;&amp;#x4F18;&amp;#x52BF;&amp;#xFF0C;&amp;#x4EE5;&amp;#x53CA;&amp;#x5B83;&amp;#x5728;&amp;#x5904;&amp;#x7406;&amp;#x5BFC;&amp;#x822A;&amp;#x548C;&amp;#x9875;&amp;#x9762;&amp;#x4EA4;&amp;#x4E92;&amp;#x65F6;&amp;#x76F8;&amp;#x5BF9;&amp;#x4E8E;&amp;#x4F20;&amp;#x7EDF;Fragment&amp;#x4E8B;&amp;#x52A1;&amp;#x7684;&amp;#x521B;&amp;#x65B0;&amp;#x4E4B;&amp;#x5904;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;#x53C2;&amp;#x8003;&amp;#x7B80;&amp;#x7B54;&amp;#xFF1A;&lt;/strong&gt;&lt;br&gt;Navigation&amp;#x7EC4;&amp;#x4EF6;&amp;#x662F;Jetpack&amp;#x4E2D;&amp;#x7528;&amp;#x4E8E;&amp;#x5904;&amp;#x7406;&amp;#x5E94;&amp;#x7528;&amp;#x5185;&amp;#x5BFC;&amp;#x822A;&amp;#x7684;&amp;#x5F3A;&amp;#x5927;&amp;#x5DE5;&amp;#x5177;&amp;#x3002;&amp;#x5B83;&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&amp;#x573A;&amp;#x666F;&amp;#x5305;&amp;#x62EC;&amp;#x4F46;&amp;#x4E0D;&amp;#x9650;&amp;#x4E8E;&amp;#xFF1A;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x5355;&amp;#x4E00;&amp;#x6D3B;&amp;#x52A8;&amp;#x591A;Fragment&amp;#x67B6;&amp;#x6784;&amp;#xFF1A;&lt;/strong&gt; &amp;#x901A;&amp;#x8FC7;&amp;#x5C06;&amp;#x6240;&amp;#x6709;Fragment&amp;#x96C6;&amp;#x4E2D;&amp;#x5728;&amp;#x4E00;&amp;#x4E2A;&amp;#x6D3B;&amp;#x52A8;&amp;#x4E2D;&amp;#xFF0C;&amp;#x7B80;&amp;#x5316;&amp;#x4E86;&amp;#x5BFC;&amp;#x822A;&amp;#x7684;&amp;#x7BA1;&amp;#x7406;&amp;#x548C;&amp;#x4F20;&amp;#x9012;&amp;#x6570;&amp;#x636E;&amp;#x7684;&amp;#x590D;&amp;#x6742;&amp;#x6027;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x6DF1;&amp;#x5C42;&amp;#x94FE;&amp;#x63A5;&amp;#xFF1A;&lt;/strong&gt; &amp;#x652F;&amp;#x6301;&amp;#x901A;&amp;#x8FC7;&amp;#x6DF1;&amp;#x5C42;&amp;#x94FE;&amp;#x63A5;&amp;#x76F4;&amp;#x63A5;&amp;#x5BFC;&amp;#x822A;&amp;#x5230;&amp;#x5E94;&amp;#x7528;&amp;#x4E2D;&amp;#x7684;&amp;#x7279;&amp;#x5B9A;&amp;#x76EE;&amp;#x6807;&amp;#xFF0C;&amp;#x63D0;&amp;#x9AD8;&amp;#x7528;&amp;#x6237;&amp;#x4F53;&amp;#x9A8C;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x7C7B;&amp;#x578B;&amp;#x5B89;&amp;#x5168;&amp;#x7684;&amp;#x5BFC;&amp;#x822A;&amp;#xFF1A;&lt;/strong&gt; &amp;#x4F7F;&amp;#x7528;&amp;#x5B89;&amp;#x5168;Args&amp;#x63D2;&amp;#x4EF6;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x4E86;&amp;#x4F20;&amp;#x7EDF;Bundle&amp;#x4F20;&amp;#x9012;&amp;#x53C2;&amp;#x6570;&amp;#x65F6;&amp;#x7684;&amp;#x7C7B;&amp;#x578B;&amp;#x9519;&amp;#x8BEF;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;#x76F8;&amp;#x5BF9;&amp;#x4E8E;&amp;#x4F20;&amp;#x7EDF;Fragment&amp;#x4E8B;&amp;#x52A1;&amp;#xFF0C;Navigation&amp;#x7EC4;&amp;#x4EF6;&amp;#x7684;&amp;#x4F18;&amp;#x52BF;&amp;#x5728;&amp;#x4E8E;&amp;#xFF1A;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x5BFC;&amp;#x822A;&amp;#x56FE;&amp;#x7684;&amp;#x53EF;&amp;#x89C6;&amp;#x5316;&amp;#xFF1A;&lt;/strong&gt; &amp;#x4F7F;&amp;#x7528;&amp;#x5BFC;&amp;#x822A;&amp;#x56FE;&amp;#x76F4;&amp;#x89C2;&amp;#x5C55;&amp;#x793A;&amp;#x5E94;&amp;#x7528;&amp;#x4E2D;&amp;#x7684;&amp;#x5BFC;&amp;#x822A;&amp;#x6D41;&amp;#x7A0B;&amp;#xFF0C;&amp;#x65B9;&amp;#x4FBF;&amp;#x7406;&amp;#x89E3;&amp;#x548C;&amp;#x4FEE;&amp;#x6539;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x7C7B;&amp;#x578B;&amp;#x5B89;&amp;#x5168;&amp;#xFF1A;&lt;/strong&gt; &amp;#x5229;&amp;#x7528;Kotlin&amp;#x7684;&amp;#x7C7B;&amp;#x578B;&amp;#x5B89;&amp;#x5168;&amp;#x7279;&amp;#x6027;&amp;#xFF0C;&amp;#x51CF;&amp;#x5C11;&amp;#x5728;&amp;#x5BFC;&amp;#x822A;&amp;#x65F6;&amp;#x7684;&amp;#x9519;&amp;#x8BEF;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x611F;&amp;#x77E5;&amp;#xFF1A;&lt;/strong&gt; &amp;#x81EA;&amp;#x52A8;&amp;#x5904;&amp;#x7406;Fragment&amp;#x7684;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x4E86;&amp;#x4E00;&amp;#x4E9B;&amp;#x5E38;&amp;#x89C1;&amp;#x7684;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x76F8;&amp;#x5173;&amp;#x95EE;&amp;#x9898;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&amp;#x95EE;&amp;#x9898;&amp;#xFF1A;&lt;/strong&gt; &amp;#x8BF7;&amp;#x89E3;&amp;#x91CA;Navigation&amp;#x7EC4;&amp;#x4EF6;&amp;#x7684;&amp;#x4F5C;&amp;#x7528;&amp;#xFF0C;&amp;#x5E76;&amp;#x4ECB;&amp;#x7ECD;Navigation&amp;#x7EC4;&amp;#x4EF6;&amp;#x7684;&amp;#x6838;&amp;#x5FC3;&amp;#x7EC4;&amp;#x4EF6;&amp;#x4EE5;&amp;#x53CA;&amp;#x5B83;&amp;#x4EEC;&amp;#x4E4B;&amp;#x95F4;&amp;#x7684;&amp;#x5173;&amp;#x7CFB;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;#x51FA;&amp;#x53D1;&amp;#x70B9;&amp;#xFF1A;&lt;/strong&gt; &amp;#x89E3;&amp;#x91CA;&amp;#x8BF4;&amp;#x660E;Navigation&amp;#x7684;&amp;#x51E0;&amp;#x4E2A;&amp;#x6838;&amp;#x5FC3;&amp;#x7EC4;&amp;#x4EF6;&amp;#xFF0C;&amp;#x4EE5;&amp;#x53CA;&amp;#x4ED6;&amp;#x4EEC;&amp;#x7684;&amp;#x4F5C;&amp;#x7528;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;#x53C2;&amp;#x8003;&amp;#x7B80;&amp;#x7B54;&amp;#xFF1A;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;#x5176;&amp;#x4F5C;&amp;#x7528;&amp;#x548C;&amp;#x6838;&amp;#x5FC3;&amp;#x7EC4;&amp;#x4EF6;&amp;#x5305;&amp;#x62EC;&amp;#xFF1A;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x4F5C;&amp;#x7528;&amp;#xFF1A;&lt;/strong&gt; Navigation&amp;#x7EC4;&amp;#x4EF6;&amp;#x7528;&amp;#x4E8E;&amp;#x5B9E;&amp;#x73B0;&amp;#x5E94;&amp;#x7528;&amp;#x5185;&amp;#x7684;&amp;#x5BFC;&amp;#x822A;&amp;#x7ED3;&amp;#x6784;&amp;#xFF0C;&amp;#x4F7F;&amp;#x5F97;&amp;#x4ECE;&amp;#x4E00;&amp;#x4E2A;&amp;#x76EE;&amp;#x7684;&amp;#x5730;&amp;#xFF08;Destination&amp;#xFF09;&amp;#x5230;&amp;#x53E6;&amp;#x4E00;&amp;#x4E2A;&amp;#x76EE;&amp;#x7684;&amp;#x5730;&amp;#x7684;&amp;#x5BFC;&amp;#x822A;&amp;#x53D8;&amp;#x5F97;&amp;#x66F4;&amp;#x52A0;&amp;#x5BB9;&amp;#x6613;&amp;#x7BA1;&amp;#x7406;&amp;#x548C;&amp;#x7EDF;&amp;#x4E00;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x6838;&amp;#x5FC3;&amp;#x7EC4;&amp;#x4EF6;&amp;#xFF1A;&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;NavGraph&amp;#xFF08;&amp;#x5BFC;&amp;#x822A;&amp;#x56FE;&amp;#xFF09;&amp;#xFF1A;&lt;/strong&gt; &amp;#x5305;&amp;#x542B;&amp;#x5E94;&amp;#x7528;&amp;#x4E2D;&amp;#x6240;&amp;#x6709;&amp;#x76EE;&amp;#x7684;&amp;#x5730;&amp;#x548C;&amp;#x5B83;&amp;#x4EEC;&amp;#x4E4B;&amp;#x95F4;&amp;#x7684;&amp;#x5BFC;&amp;#x822A;&amp;#x5173;&amp;#x7CFB;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NavController&amp;#xFF08;&amp;#x5BFC;&amp;#x822A;&amp;#x63A7;&amp;#x5236;&amp;#x5668;&amp;#xFF09;&amp;#xFF1A;&lt;/strong&gt; &amp;#x7BA1;&amp;#x7406;&amp;#x5BFC;&amp;#x822A;&amp;#x64CD;&amp;#x4F5C;&amp;#x7684;&amp;#x63A7;&amp;#x5236;&amp;#x5668;&amp;#xFF0C;&amp;#x8D1F;&amp;#x8D23;&amp;#x7BA1;&amp;#x7406;&amp;#x4E0E;&amp;#x76EE;&amp;#x7684;&amp;#x5730;&amp;#x7684;&amp;#x4EA4;&amp;#x4E92;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;NavDestination&amp;#xFF08;&amp;#x5BFC;&amp;#x822A;&amp;#x76EE;&amp;#x7684;&amp;#x5730;&amp;#xFF09;&amp;#xFF1A;&lt;/strong&gt; &amp;#x8868;&amp;#x793A;&amp;#x5BFC;&amp;#x822A;&amp;#x56FE;&amp;#x4E2D;&amp;#x7684;&amp;#x4E00;&amp;#x4E2A;&amp;#x9875;&amp;#x9762;&amp;#x6216;&amp;#x64CD;&amp;#x4F5C;&amp;#xFF0C;&amp;#x5B9A;&amp;#x4E49;&amp;#x4E86;&amp;#x76EE;&amp;#x7684;&amp;#x5730;&amp;#x7684;&amp;#x5C5E;&amp;#x6027;&amp;#x548C;&amp;#x884C;&amp;#x4E3A;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;#x8FD9;&amp;#x4E09;&amp;#x4E2A;&amp;#x6838;&amp;#x5FC3;&amp;#x7EC4;&amp;#x4EF6;&amp;#x5171;&amp;#x540C;&amp;#x6784;&amp;#x5EFA;&amp;#x4E86;&amp;#x6574;&amp;#x4E2A;&amp;#x5BFC;&amp;#x822A;&amp;#x4F53;&amp;#x7CFB;&amp;#xFF0C;&amp;#x4F7F;&amp;#x5F97;&amp;#x5728;Android&amp;#x5E94;&amp;#x7528;&amp;#x4E2D;&amp;#x5B9E;&amp;#x73B0;&amp;#x590D;&amp;#x6742;&amp;#x7684;&amp;#x5BFC;&amp;#x822A;&amp;#x7ED3;&amp;#x6784;&amp;#x53D8;&amp;#x5F97;&amp;#x66F4;&amp;#x52A0;&amp;#x7B80;&amp;#x5355;&amp;#x548C;&amp;#x53EF;&amp;#x7EF4;&amp;#x62A4;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;ViewModel&amp;#x4E0E;LiveData&amp;#x7684;&amp;#x7406;&amp;#x89E3;&quot;&gt;&lt;a href=&quot;#ViewModel&amp;#x4E0E;LiveData&amp;#x7684;&amp;#x7406;&amp;#x89E3;&quot; class=&quot;headerlink&quot; title=&quot;ViewModel&amp;#x4E0E;LiveData&amp;#x7684;&amp;#x7406;&amp;#x89E3;&quot;&gt;&lt;/a&gt;ViewModel&amp;#x4E0E;LiveData&amp;#x7684;&amp;#x7406;&amp;#x89E3;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;&amp;#x95EE;&amp;#x9898;&amp;#xFF1A;&lt;/strong&gt; &amp;#x8BF7;&amp;#x8BE6;&amp;#x7EC6;&amp;#x8BF4;&amp;#x660E;ViewModel&amp;#x7684;&amp;#x4F5C;&amp;#x7528;&amp;#xFF0C;&amp;#x5E76;&amp;#x4ECB;&amp;#x7ECD;&amp;#x4F7F;&amp;#x7528;ViewModel&amp;#x7684;&amp;#x4E3B;&amp;#x8981;&amp;#x4F18;&amp;#x52BF;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;#x51FA;&amp;#x53D1;&amp;#x70B9;&amp;#xFF1A;&lt;/strong&gt; &amp;#x5728;&amp;#x89E3;&amp;#x7B54;&amp;#x8FD9;&amp;#x4E2A;&amp;#x95EE;&amp;#x9898;&amp;#x65F6;&amp;#xFF0C;&amp;#x4E0D;&amp;#x4EC5;&amp;#x8981;&amp;#x5F3A;&amp;#x8C03;ViewModel&amp;#x7684;&amp;#x7528;&amp;#x9014;&amp;#xFF0C;&amp;#x8FD8;&amp;#x8981;&amp;#x6DF1;&amp;#x5165;&amp;#x8BA8;&amp;#x8BBA;&amp;#x5176;&amp;#x5728;Android&amp;#x67B6;&amp;#x6784;&amp;#x4E2D;&amp;#x7684;&amp;#x89D2;&amp;#x8272;&amp;#x548C;&amp;#x4F18;&amp;#x52BF;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;#x53C2;&amp;#x8003;&amp;#x7B80;&amp;#x7B54;&amp;#xFF1A;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;ViewModel&amp;#x7684;&amp;#x4F5C;&amp;#x7528;&amp;#x5728;&amp;#x4E8E;&amp;#x89E3;&amp;#x51B3;Android&amp;#x5E94;&amp;#x7528;&amp;#x4E2D;&amp;#x6D3B;&amp;#x52A8;&amp;#x548C;&amp;#x788E;&amp;#x7247;&amp;#xFF08;Fragment&amp;#xFF09;&amp;#x7684;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x95EE;&amp;#x9898;&amp;#x3002;&amp;#x5B83;&amp;#x5141;&amp;#x8BB8;&amp;#x6570;&amp;#x636E;&amp;#x5728;&amp;#x5C4F;&amp;#x5E55;&amp;#x65CB;&amp;#x8F6C;&amp;#x7B49;&amp;#x914D;&amp;#x7F6E;&amp;#x66F4;&amp;#x6539;&amp;#x65F6;&amp;#x5B58;&amp;#x6D3B;&amp;#xFF0C;&amp;#x5E76;&amp;#x786E;&amp;#x4FDD;&amp;#x6570;&amp;#x636E;&amp;#x5728;&amp;#x4E0D;&amp;#x540C;&amp;#x7EC4;&amp;#x4EF6;&amp;#x4E4B;&amp;#x95F4;&amp;#x5171;&amp;#x4EAB;&amp;#x800C;&amp;#x4E0D;&amp;#x4E22;&amp;#x5931;&amp;#x3002;&amp;#x4E3B;&amp;#x8981;&amp;#x4F18;&amp;#x52BF;&amp;#x5305;&amp;#x62EC;&amp;#xFF1A;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x611F;&amp;#x77E5;&amp;#xFF1A;ViewModel&amp;#x80FD;&amp;#x591F;&amp;#x611F;&amp;#x77E5;&amp;#x4E0E;UI&amp;#x76F8;&amp;#x5173;&amp;#x7684;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x53D8;&amp;#x5316;&amp;#xFF0C;&amp;#x786E;&amp;#x4FDD;&amp;#x6570;&amp;#x636E;&amp;#x5B58;&amp;#x6D3B;&amp;#x65F6;&amp;#x95F4;&amp;#x6BD4;&amp;#x77ED;&amp;#x6682;&amp;#x7684;UI&amp;#x7EC4;&amp;#x4EF6;&amp;#x66F4;&amp;#x957F;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x6570;&amp;#x636E;&amp;#x5171;&amp;#x4EAB;&amp;#xFF1A;&amp;#x901A;&amp;#x8FC7;ViewModel&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x5728;&amp;#x4E0D;&amp;#x540C;&amp;#x7684;UI&amp;#x7EC4;&amp;#x4EF6;&amp;#x4E4B;&amp;#x95F4;&amp;#x5171;&amp;#x4EAB;&amp;#x548C;&amp;#x7BA1;&amp;#x7406;&amp;#x6570;&amp;#x636E;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x91CD;&amp;#x590D;&amp;#x52A0;&amp;#x8F7D;&amp;#x6216;&amp;#x4E22;&amp;#x5931;&amp;#x6570;&amp;#x636E;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x72B6;&amp;#x6001;&amp;#x4FDD;&amp;#x5B58;&amp;#xFF1A;ViewModel&amp;#x5728;&amp;#x914D;&amp;#x7F6E;&amp;#x53D8;&amp;#x66F4;&amp;#x65F6;&amp;#x4FDD;&amp;#x6301;&amp;#x5176;&amp;#x72B6;&amp;#x6001;&amp;#xFF0C;&amp;#x4F8B;&amp;#x5982;&amp;#x5C4F;&amp;#x5E55;&amp;#x65CB;&amp;#x8F6C;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x91CD;&amp;#x65B0;&amp;#x52A0;&amp;#x8F7D;&amp;#x6570;&amp;#x636E;&amp;#x548C;&amp;#x6267;&amp;#x884C;&amp;#x8017;&amp;#x65F6;&amp;#x64CD;&amp;#x4F5C;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&amp;#x95EE;&amp;#x9898;&amp;#xFF1A;&lt;/strong&gt; &amp;#x8BE6;&amp;#x7EC6;&amp;#x8BF4;&amp;#x660E;LiveData&amp;#x548C;ViewModel&amp;#x7684;&amp;#x5DE5;&amp;#x4F5C;&amp;#x539F;&amp;#x7406;&amp;#xFF0C;&amp;#x5E76;&amp;#x8BA8;&amp;#x8BBA;&amp;#x5728;&amp;#x5B9E;&amp;#x9645;&amp;#x9879;&amp;#x76EE;&amp;#x4E2D;&amp;#x5982;&amp;#x4F55;&amp;#x89E3;&amp;#x51B3;&amp;#x5E38;&amp;#x89C1;&amp;#x7684;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x95EE;&amp;#x9898;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;#x51FA;&amp;#x53D1;&amp;#x70B9;&amp;#xFF1A;&lt;/strong&gt; &amp;#x5BF9;LiveData&amp;#x548C;ViewModel&amp;#x7684;&amp;#x5E95;&amp;#x5C42;&amp;#x673A;&amp;#x5236;&amp;#x6709;&amp;#x6DF1;&amp;#x5165;&amp;#x7406;&amp;#x89E3;&amp;#xFF0C;&amp;#x80FD;&amp;#x591F;&amp;#x5728;&amp;#x590D;&amp;#x6742;&amp;#x7684;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x573A;&amp;#x666F;&amp;#x4E2D;&amp;#x4FDD;&amp;#x8BC1;&amp;#x6570;&amp;#x636E;&amp;#x7684;&amp;#x6B63;&amp;#x786E;&amp;#x6027;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;#x53C2;&amp;#x8003;&amp;#x7B80;&amp;#x7B54;&amp;#xFF1A;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;LiveData&amp;#x662F;&amp;#x4E00;&amp;#x79CD;&amp;#x53EF;&amp;#x89C2;&amp;#x5BDF;&amp;#x7684;&amp;#x6570;&amp;#x636E;&amp;#x6301;&amp;#x6709;&amp;#x8005;&amp;#xFF0C;ViewModel&amp;#x7528;&amp;#x4E8E;&amp;#x5B58;&amp;#x50A8;&amp;#x548C;&amp;#x7BA1;&amp;#x7406;&amp;#x4E0E;&amp;#x7528;&amp;#x6237;&amp;#x754C;&amp;#x9762;&amp;#x76F8;&amp;#x5173;&amp;#x7684;&amp;#x6570;&amp;#x636E;&amp;#x3002;&amp;#x6DF1;&amp;#x5165;&amp;#x7406;&amp;#x89E3;&amp;#x5305;&amp;#x62EC;&amp;#xFF1A;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;LiveData&amp;#x7684;&amp;#x7C98;&amp;#x6027;&amp;#x4E8B;&amp;#x4EF6;&amp;#xFF1A;&lt;/strong&gt; &amp;#x4E86;&amp;#x89E3;&lt;code&gt;postValue&lt;/code&gt;&amp;#x548C;&lt;code&gt;setValue&lt;/code&gt;&amp;#x7684;&amp;#x533A;&amp;#x522B;&amp;#xFF0C;&amp;#x4EE5;&amp;#x53CA;&amp;#x5982;&amp;#x4F55;&amp;#x907F;&amp;#x514D;LiveData&amp;#x7684;&amp;#x7C98;&amp;#x6027;&amp;#x4E8B;&amp;#x4EF6;&amp;#x5728;&amp;#x7279;&amp;#x5B9A;&amp;#x573A;&amp;#x666F;&amp;#x4E2D;&amp;#x5F15;&amp;#x53D1;&amp;#x7684;&amp;#x95EE;&amp;#x9898;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;ViewModel&amp;#x7684;&amp;#x5B58;&amp;#x6D3B;&amp;#x5468;&amp;#x671F;&amp;#xFF1A;&lt;/strong&gt; &amp;#x4F7F;&amp;#x7528;&lt;code&gt;ViewModel&lt;/code&gt;&amp;#x6B63;&amp;#x786E;&amp;#x5904;&amp;#x7406;&amp;#x914D;&amp;#x7F6E;&amp;#x53D8;&amp;#x5316;&amp;#xFF0C;&amp;#x4FDD;&amp;#x8BC1;&amp;#x6570;&amp;#x636E;&amp;#x5728;&amp;#x5C4F;&amp;#x5E55;&amp;#x65CB;&amp;#x8F6C;&amp;#x7B49;&amp;#x60C5;&amp;#x51B5;&amp;#x4E0B;&amp;#x4E0D;&amp;#x4E22;&amp;#x5931;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;LiveData&amp;#x548C;View&amp;#x7ED1;&amp;#x5B9A;&amp;#xFF1A;&lt;/strong&gt; &amp;#x7ED3;&amp;#x5408;&lt;code&gt;DataBinding&lt;/code&gt;&amp;#xFF0C;&amp;#x5B9E;&amp;#x73B0;LiveData&amp;#x4E0E;View&amp;#x4E4B;&amp;#x95F4;&amp;#x7684;&amp;#x7ED1;&amp;#x5B9A;&amp;#xFF0C;&amp;#x786E;&amp;#x4FDD;&amp;#x6570;&amp;#x636E;&amp;#x7684;&amp;#x5B9E;&amp;#x65F6;&amp;#x66F4;&amp;#x65B0;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;&amp;#x95EE;&amp;#x9898;&amp;#xFF1A;&lt;/strong&gt; &amp;#x8BF7;&amp;#x5BF9;&amp;#x6BD4;LiveData&amp;#x548C;Observable&amp;#xFF0C;&amp;#x5206;&amp;#x6790;&amp;#x5B83;&amp;#x4EEC;&amp;#x5728;Android&amp;#x5E94;&amp;#x7528;&amp;#x4E2D;&amp;#x7684;&amp;#x5E94;&amp;#x7528;&amp;#x573A;&amp;#x666F;&amp;#xFF0C;&amp;#x4EE5;&amp;#x53CA;&amp;#x5728;&amp;#x4F55;&amp;#x79CD;&amp;#x60C5;&amp;#x51B5;&amp;#x4E0B;&amp;#x9009;&amp;#x62E9;&amp;#x4F7F;&amp;#x7528;&amp;#x54EA;&amp;#x79CD;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;#x51FA;&amp;#x53D1;&amp;#x70B9;&amp;#xFF1A;&lt;/strong&gt; &amp;#x8FD9;&amp;#x4E2A;&amp;#x95EE;&amp;#x9898;&amp;#x6D89;&amp;#x53CA;&amp;#x5230;Android&amp;#x5E94;&amp;#x7528;&amp;#x4E2D;&amp;#x7684;&amp;#x6570;&amp;#x636E;&amp;#x54CD;&amp;#x5E94;&amp;#x5F0F;&amp;#x7F16;&amp;#x7A0B;&amp;#xFF0C;&amp;#x8003;&amp;#x5BDF;&amp;#x9762;&amp;#x8BD5;&amp;#x8005;&amp;#x5BF9;LiveData&amp;#x548C;RxJava&amp;#x7684;&amp;#x7406;&amp;#x89E3;&amp;#xFF0C;&amp;#x4EE5;&amp;#x53CA;&amp;#x5728;&amp;#x5B9E;&amp;#x9645;&amp;#x5E94;&amp;#x7528;&amp;#x4E2D;&amp;#x7684;&amp;#x5408;&amp;#x7406;&amp;#x9009;&amp;#x62E9;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;#x53C2;&amp;#x8003;&amp;#x7B80;&amp;#x7B54;&amp;#xFF1A;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;LiveData&amp;#x548C;Observable&amp;#x90FD;&amp;#x662F;&amp;#x7528;&amp;#x4E8E;&amp;#x5B9E;&amp;#x73B0;&amp;#x54CD;&amp;#x5E94;&amp;#x5F0F;&amp;#x7F16;&amp;#x7A0B;&amp;#x7684;&amp;#x5DE5;&amp;#x5177;&amp;#xFF0C;&amp;#x4F46;&amp;#x6709;&amp;#x4E00;&amp;#x4E9B;&amp;#x5173;&amp;#x952E;&amp;#x533A;&amp;#x522B;&amp;#xFF1A;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x611F;&amp;#x77E5;&amp;#xFF1A;&lt;/strong&gt; LiveData&amp;#x662F;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x611F;&amp;#x77E5;&amp;#x7684;&amp;#xFF0C;&amp;#x5B83;&amp;#x4F1A;&amp;#x5728;&amp;#x89C2;&amp;#x5BDF;&amp;#x8005;&amp;#xFF08;&amp;#x901A;&amp;#x5E38;&amp;#x662F;UI&amp;#x7EC4;&amp;#x4EF6;&amp;#xFF09;&amp;#x7684;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x5185;&amp;#x81EA;&amp;#x52A8;&amp;#x542F;&amp;#x52A8;&amp;#x548C;&amp;#x505C;&amp;#x6B62;&amp;#x3002;&amp;#x8FD9;&amp;#x4F7F;&amp;#x5F97;&amp;#x5728;&amp;#x5904;&amp;#x7406;UI&amp;#x6570;&amp;#x636E;&amp;#x65F6;&amp;#x66F4;&amp;#x52A0;&amp;#x5B89;&amp;#x5168;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x4E86;&amp;#x6F5C;&amp;#x5728;&amp;#x7684;&amp;#x5185;&amp;#x5B58;&amp;#x6CC4;&amp;#x6F0F;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x80CC;&amp;#x538B;&amp;#x5904;&amp;#x7406;&amp;#xFF1A;&lt;/strong&gt; Observable&amp;#x5728;RxJava&amp;#x4E2D;&amp;#x901A;&amp;#x5E38;&amp;#x4F7F;&amp;#x7528;&amp;#x80CC;&amp;#x538B;&amp;#x7B56;&amp;#x7565;&amp;#x6765;&amp;#x5904;&amp;#x7406;&amp;#x6570;&amp;#x636E;&amp;#x6D41;&amp;#xFF0C;&amp;#x800C;LiveData&amp;#x5219;&amp;#x901A;&amp;#x8FC7;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x611F;&amp;#x77E5;&amp;#x6765;&amp;#x5B9E;&amp;#x73B0;&amp;#x53CD;&amp;#x5E94;&amp;#x5F0F;&amp;#x54CD;&amp;#x5E94;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x4E86;&amp;#x80CC;&amp;#x538B;&amp;#x95EE;&amp;#x9898;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;#x6839;&amp;#x636E;&amp;#x5B9E;&amp;#x9645;&amp;#x9700;&amp;#x6C42;&amp;#xFF0C;&amp;#x9009;&amp;#x62E9;&amp;#x4F7F;&amp;#x7528;LiveData&amp;#x8FD8;&amp;#x662F;Observable&amp;#x53D6;&amp;#x51B3;&amp;#x4E8E;&amp;#x5E94;&amp;#x7528;&amp;#x7684;&amp;#x5177;&amp;#x4F53;&amp;#x573A;&amp;#x666F;&amp;#x3002;&amp;#x5BF9;&amp;#x4E8E;&amp;#x9700;&amp;#x8981;&amp;#x4E0E;UI&amp;#x7EC4;&amp;#x4EF6;&amp;#x7ED1;&amp;#x5B9A;&amp;#x7684;&amp;#x6570;&amp;#x636E;&amp;#xFF0C;&amp;#x4EE5;&amp;#x53CA;&amp;#x5BF9;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x654F;&amp;#x611F;&amp;#x7684;&amp;#x573A;&amp;#x666F;&amp;#xFF0C;LiveData&amp;#x662F;&amp;#x66F4;&amp;#x597D;&amp;#x7684;&amp;#x9009;&amp;#x62E9;&amp;#x3002;&amp;#x800C;&amp;#x5728;&amp;#x9700;&amp;#x8981;&amp;#x66F4;&amp;#x5F3A;&amp;#x5927;&amp;#x7684;&amp;#x64CD;&amp;#x4F5C;&amp;#x7B26;&amp;#x548C;&amp;#x80CC;&amp;#x538B;&amp;#x5904;&amp;#x7406;&amp;#x7684;&amp;#x60C5;&amp;#x51B5;&amp;#x4E0B;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x8003;&amp;#x8651;&amp;#x4F7F;&amp;#x7528;Observable&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;Paging&amp;#x5E93;&amp;#x7684;&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&quot;&gt;&lt;a href=&quot;#Paging&amp;#x5E93;&amp;#x7684;&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&quot; class=&quot;headerlink&quot; title=&quot;Paging&amp;#x5E93;&amp;#x7684;&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&quot;&gt;&lt;/a&gt;Paging&amp;#x5E93;&amp;#x7684;&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;&amp;#x95EE;&amp;#x9898;&amp;#xFF1A;&lt;/strong&gt; &amp;#x8BF7;&amp;#x89E3;&amp;#x91CA;Paging&amp;#x5E93;&amp;#x7684;&amp;#x57FA;&amp;#x672C;&amp;#x539F;&amp;#x7406;&amp;#xFF0C;&amp;#x5E76;&amp;#x63D0;&amp;#x51FA;&amp;#x5728;&amp;#x5904;&amp;#x7406;&amp;#x5927;&amp;#x578B;&amp;#x6570;&amp;#x636E;&amp;#x96C6;&amp;#x65F6;&amp;#x5982;&amp;#x4F55;&amp;#x8FDB;&amp;#x884C;&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;#x51FA;&amp;#x53D1;&amp;#x70B9;&amp;#xFF1A;&lt;/strong&gt; &amp;#x8003;&amp;#x5BDF;&amp;#x961F;Paging&amp;#x7684;&amp;#x65E5;&amp;#x5E38;&amp;#x8FD0;&amp;#x7528;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x4ECE;&amp;#x5B83;&amp;#x7684;&amp;#x4E00;&amp;#x4E9B;&amp;#x7279;&amp;#x6027;&amp;#x8FDB;&amp;#x884C;&amp;#x56DE;&amp;#x7B54;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;#x53C2;&amp;#x8003;&amp;#x7B80;&amp;#x7B54;&amp;#xFF1A;&lt;/strong&gt; &lt;/p&gt;
&lt;p&gt;Paging&amp;#x5E93;&amp;#x901A;&amp;#x8FC7;&amp;#x5728;RecyclerView&amp;#x4E2D;&amp;#x5F02;&amp;#x6B65;&amp;#x52A0;&amp;#x8F7D;&amp;#x6570;&amp;#x636E;&amp;#xFF0C;&amp;#x5B9E;&amp;#x73B0;&amp;#x4E86;&amp;#x5BF9;&amp;#x5927;&amp;#x578B;&amp;#x6570;&amp;#x636E;&amp;#x96C6;&amp;#x7684;&amp;#x9AD8;&amp;#x6548;&amp;#x5904;&amp;#x7406;&amp;#x3002;&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&amp;#x7684;&amp;#x5173;&amp;#x952E;&amp;#x5728;&amp;#x4E8E;&amp;#x4EE5;&amp;#x4E0B;&amp;#x51E0;&amp;#x4E2A;&amp;#x65B9;&amp;#x9762;&amp;#xFF1A;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;DataSource&amp;#x7684;&amp;#x5B9A;&amp;#x5236;&amp;#xFF1A;&lt;/strong&gt; &amp;#x5B9E;&amp;#x73B0;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x7684;&lt;code&gt;DataSource&lt;/code&gt;&amp;#xFF0C;&amp;#x6839;&amp;#x636E;&amp;#x5B9E;&amp;#x9645;&amp;#x9700;&amp;#x6C42;&amp;#x5B9A;&amp;#x5236;&amp;#x52A0;&amp;#x8F7D;&amp;#x89C4;&amp;#x5219;&amp;#xFF0C;&amp;#x5982;&amp;#x9884;&amp;#x52A0;&amp;#x8F7D;&amp;#x3001;&amp;#x7F13;&amp;#x5B58;&amp;#x7B49;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x6570;&amp;#x636E;&amp;#x7F13;&amp;#x5B58;&amp;#x7B56;&amp;#x7565;&amp;#xFF1A;&lt;/strong&gt; &amp;#x4F7F;&amp;#x7528;&lt;code&gt;BoundaryCallback&lt;/code&gt;&amp;#x6765;&amp;#x5B9E;&amp;#x73B0;&amp;#x8FB9;&amp;#x754C;&amp;#x56DE;&amp;#x8C03;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x5728;&amp;#x6570;&amp;#x636E;&amp;#x8FB9;&amp;#x754C;&amp;#x5230;&amp;#x8FBE;&amp;#x65F6;&amp;#x89E6;&amp;#x53D1;&amp;#x9884;&amp;#x52A0;&amp;#x8F7D;&amp;#xFF0C;&amp;#x51CF;&amp;#x5C11;&amp;#x7528;&amp;#x6237;&amp;#x7B49;&amp;#x5F85;&amp;#x65F6;&amp;#x95F4;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;DiffUtil&amp;#x7684;&amp;#x5408;&amp;#x7406;&amp;#x4F7F;&amp;#x7528;&amp;#xFF1A;&lt;/strong&gt; &amp;#x914D;&amp;#x5408;&lt;code&gt;PagedListAdapter&lt;/code&gt;&amp;#xFF0C;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;DiffUtil&lt;/code&gt;&amp;#x6765;&amp;#x8BA1;&amp;#x7B97;&amp;#x5E76;&amp;#x5237;&amp;#x65B0;&amp;#x5217;&amp;#x8868;&amp;#x7684;&amp;#x5DEE;&amp;#x5F02;&amp;#xFF0C;&amp;#x51CF;&amp;#x5C11;&amp;#x4E0D;&amp;#x5FC5;&amp;#x8981;&amp;#x7684;&amp;#x6570;&amp;#x636E;&amp;#x5237;&amp;#x65B0;&amp;#xFF0C;&amp;#x63D0;&amp;#x9AD8;&amp;#x754C;&amp;#x9762;&amp;#x6D41;&amp;#x7545;&amp;#x5EA6;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;WorkManager&amp;#x7684;&amp;#x9AD8;&amp;#x7EA7;&amp;#x4EFB;&amp;#x52A1;&amp;#x8C03;&amp;#x5EA6;&quot;&gt;&lt;a href=&quot;#WorkManager&amp;#x7684;&amp;#x9AD8;&amp;#x7EA7;&amp;#x4EFB;&amp;#x52A1;&amp;#x8C03;&amp;#x5EA6;&quot; class=&quot;headerlink&quot; title=&quot;WorkManager&amp;#x7684;&amp;#x9AD8;&amp;#x7EA7;&amp;#x4EFB;&amp;#x52A1;&amp;#x8C03;&amp;#x5EA6;&quot;&gt;&lt;/a&gt;WorkManager&amp;#x7684;&amp;#x9AD8;&amp;#x7EA7;&amp;#x4EFB;&amp;#x52A1;&amp;#x8C03;&amp;#x5EA6;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;&amp;#x95EE;&amp;#x9898;&amp;#xFF1A;&lt;/strong&gt; &amp;#x8BF7;&amp;#x89E3;&amp;#x91CA;WorkManager&amp;#x7684;&amp;#x5DE5;&amp;#x4F5C;&amp;#x539F;&amp;#x7406;&amp;#xFF0C;&amp;#x5E76;&amp;#x8BA8;&amp;#x8BBA;&amp;#x5728;&amp;#x9700;&amp;#x8981;&amp;#x590D;&amp;#x6742;&amp;#x4EFB;&amp;#x52A1;&amp;#x8C03;&amp;#x5EA6;&amp;#x65F6;&amp;#x5982;&amp;#x4F55;&amp;#x8BBE;&amp;#x8BA1;&amp;#x548C;&amp;#x5B9E;&amp;#x73B0;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;#x51FA;&amp;#x53D1;&amp;#x70B9;&amp;#xFF1A;&lt;/strong&gt; &amp;#x53EF;&amp;#x4EE5;&amp;#x4ECE;WorkManager&amp;#x7684;&amp;#x8C03;&amp;#x5EA6;&amp;#x65B9;&amp;#x5F0F;&amp;#x8FDB;&amp;#x884C;&amp;#x5206;&amp;#x6790;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;#x53C2;&amp;#x8003;&amp;#x7B80;&amp;#x7B54;&amp;#xFF1A;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;WorkManager&amp;#x662F;&amp;#x4E00;&amp;#x79CD;&amp;#x7528;&amp;#x4E8E;&amp;#x5728;&amp;#x540E;&amp;#x53F0;&amp;#x6267;&amp;#x884C;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x5E93;&amp;#xFF0C;&amp;#x5B83;&amp;#x5EFA;&amp;#x7ACB;&amp;#x5728;JobScheduler&amp;#x3001;AlarmManager&amp;#x548C;JobIntentService&amp;#x4E4B;&amp;#x4E0A;&amp;#x3002;&amp;#x5728;&amp;#x9AD8;&amp;#x7EA7;&amp;#x4EFB;&amp;#x52A1;&amp;#x8C03;&amp;#x5EA6;&amp;#x4E2D;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x53EF;&amp;#x4EE5;&amp;#xFF1A;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;Worker&amp;#xFF1A;&lt;/strong&gt; &amp;#x5B9E;&amp;#x73B0;&lt;code&gt;Worker&lt;/code&gt;&amp;#x7C7B;&amp;#x4EE5;&amp;#x6267;&amp;#x884C;&amp;#x5177;&amp;#x4F53;&amp;#x4EFB;&amp;#x52A1;&amp;#xFF0C;&amp;#x5E76;&amp;#x901A;&amp;#x8FC7;&lt;code&gt;Constraints&lt;/code&gt;&amp;#x6765;&amp;#x5B9A;&amp;#x4E49;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x89E6;&amp;#x53D1;&amp;#x6761;&amp;#x4EF6;&amp;#xFF0C;&amp;#x5982;&amp;#x7F51;&amp;#x7EDC;&amp;#x72B6;&amp;#x6001;&amp;#x3001;&amp;#x7535;&amp;#x91CF;&amp;#x7B49;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x4EFB;&amp;#x52A1;&amp;#x94FE;&amp;#x548C;&amp;#x987A;&amp;#x5E8F;&amp;#x6267;&amp;#x884C;&amp;#xFF1A;&lt;/strong&gt; &amp;#x4F7F;&amp;#x7528;&lt;code&gt;OneTimeWorkRequest&lt;/code&gt;&amp;#x548C;&lt;code&gt;WorkContinuation&lt;/code&gt;&amp;#x6765;&amp;#x6784;&amp;#x5EFA;&amp;#x4EFB;&amp;#x52A1;&amp;#x94FE;&amp;#xFF0C;&amp;#x5B9E;&amp;#x73B0;&amp;#x590D;&amp;#x6742;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x987A;&amp;#x5E8F;&amp;#x6267;&amp;#x884C;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x7075;&amp;#x6D3B;&amp;#x7684;&amp;#x91CD;&amp;#x8BD5;&amp;#x673A;&amp;#x5236;&amp;#xFF1A;&lt;/strong&gt; &amp;#x7ED3;&amp;#x5408;&lt;code&gt;BackoffPolicy&lt;/code&gt;&amp;#xFF0C;&amp;#x5B9E;&amp;#x73B0;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x7075;&amp;#x6D3B;&amp;#x91CD;&amp;#x8BD5;&amp;#x7B56;&amp;#x7565;&amp;#xFF0C;&amp;#x5E94;&amp;#x5BF9;&amp;#x4E0D;&amp;#x540C;&amp;#x7C7B;&amp;#x578B;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#x5931;&amp;#x8D25;&amp;#x60C5;&amp;#x51B5;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;Hilt&amp;#x4F9D;&amp;#x8D56;&amp;#x6CE8;&amp;#x5165;&amp;#x7684;&amp;#x4F18;&amp;#x52BF;&amp;#x548C;&amp;#x57FA;&amp;#x672C;&amp;#x539F;&amp;#x7406;&quot;&gt;&lt;a href=&quot;#Hilt&amp;#x4F9D;&amp;#x8D56;&amp;#x6CE8;&amp;#x5165;&amp;#x7684;&amp;#x4F18;&amp;#x52BF;&amp;#x548C;&amp;#x57FA;&amp;#x672C;&amp;#x539F;&amp;#x7406;&quot; class=&quot;headerlink&quot; title=&quot;Hilt&amp;#x4F9D;&amp;#x8D56;&amp;#x6CE8;&amp;#x5165;&amp;#x7684;&amp;#x4F18;&amp;#x52BF;&amp;#x548C;&amp;#x57FA;&amp;#x672C;&amp;#x539F;&amp;#x7406;&quot;&gt;&lt;/a&gt;Hilt&amp;#x4F9D;&amp;#x8D56;&amp;#x6CE8;&amp;#x5165;&amp;#x7684;&amp;#x4F18;&amp;#x52BF;&amp;#x548C;&amp;#x57FA;&amp;#x672C;&amp;#x539F;&amp;#x7406;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;&amp;#x95EE;&amp;#x9898;&amp;#xFF1A;&lt;/strong&gt; &amp;#x8BF7;&amp;#x89E3;&amp;#x91CA;Hilt&amp;#x4F9D;&amp;#x8D56;&amp;#x6CE8;&amp;#x5165;&amp;#x6846;&amp;#x67B6;&amp;#x7684;&amp;#x4F18;&amp;#x52BF;&amp;#xFF0C;&amp;#x4EE5;&amp;#x53CA;&amp;#x5728;Android&amp;#x5E94;&amp;#x7528;&amp;#x4E2D;&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&amp;#x65B9;&amp;#x5F0F;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;#x51FA;&amp;#x53D1;&amp;#x70B9;&amp;#xFF1A;&lt;/strong&gt; &amp;#x8003;&amp;#x5BDF;&amp;#x9762;&amp;#x8BD5;&amp;#x8005;&amp;#x5BF9;&amp;#x4F9D;&amp;#x8D56;&amp;#x6CE8;&amp;#x5165;&amp;#x7684;&amp;#x7406;&amp;#x89E3;&amp;#x4EE5;&amp;#x53CA;&amp;#x5728;Android&amp;#x5F00;&amp;#x53D1;&amp;#x4E2D;&amp;#x7684;&amp;#x5E94;&amp;#x7528;&amp;#x7ECF;&amp;#x9A8C;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;#x53C2;&amp;#x8003;&amp;#x7B80;&amp;#x7B54;&amp;#xFF1A;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Hilt&amp;#x4F5C;&amp;#x4E3A;&amp;#x4F9D;&amp;#x8D56;&amp;#x6CE8;&amp;#x5165;&amp;#x6846;&amp;#x67B6;&amp;#xFF0C;&amp;#x5177;&amp;#x6709;&amp;#x4EE5;&amp;#x4E0B;&amp;#x4F18;&amp;#x52BF;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x7B80;&amp;#x5316;&amp;#x4F9D;&amp;#x8D56;&amp;#x6CE8;&amp;#x5165;&amp;#xFF1A;&lt;/strong&gt; Hilt&amp;#x901A;&amp;#x8FC7;&amp;#x6807;&amp;#x51C6;&amp;#x5316;&amp;#x4F9D;&amp;#x8D56;&amp;#x6CE8;&amp;#x5165;&amp;#x7684;&amp;#x65B9;&amp;#x5F0F;&amp;#xFF0C;&amp;#x5927;&amp;#x5927;&amp;#x7B80;&amp;#x5316;&amp;#x4E86;&amp;#x5728;Android&amp;#x5E94;&amp;#x7528;&amp;#x4E2D;&amp;#x7684;&amp;#x4F9D;&amp;#x8D56;&amp;#x6CE8;&amp;#x5165;&amp;#x8FC7;&amp;#x7A0B;&amp;#xFF0C;&amp;#x51CF;&amp;#x5C11;&amp;#x4E86;&amp;#x6837;&amp;#x677F;&amp;#x4EE3;&amp;#x7801;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x4E0E;Jetpack&amp;#x96C6;&amp;#x6210;&amp;#xFF1A;&lt;/strong&gt; Hilt&amp;#x4E0E;&amp;#x5176;&amp;#x4ED6;Jetpack&amp;#x7EC4;&amp;#x4EF6;&amp;#x65E0;&amp;#x7F1D;&amp;#x96C6;&amp;#x6210;&amp;#xFF0C;&amp;#x4F7F;&amp;#x5F97;&amp;#x5728;&amp;#x4F7F;&amp;#x7528;&amp;#x5176;&amp;#x4ED6;Jetpack&amp;#x5E93;&amp;#x65F6;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x52A0;&amp;#x65B9;&amp;#x4FBF;&amp;#x5730;&amp;#x8FDB;&amp;#x884C;&amp;#x4F9D;&amp;#x8D56;&amp;#x6CE8;&amp;#x5165;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;#x901A;&amp;#x8FC7;&amp;#x5728;&amp;#x5E94;&amp;#x7528;&amp;#x7C7B;&amp;#x4E0A;&amp;#x6DFB;&amp;#x52A0;&lt;code&gt;@HiltAndroidApp&lt;/code&gt;&amp;#x6CE8;&amp;#x89E3;&amp;#xFF0C;&amp;#x4EE5;&amp;#x53CA;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;@Inject&lt;/code&gt;&amp;#x6CE8;&amp;#x89E3;&amp;#x6765;&amp;#x6807;&amp;#x8BB0;&amp;#x4F9D;&amp;#x8D56;&amp;#x5173;&amp;#x7CFB;&amp;#xFF0C;&amp;#x7B49;&amp;#x591A;&amp;#x79CD;&amp;#x6CE8;&amp;#x89E3;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x8F7B;&amp;#x677E;&amp;#x5730;&amp;#x5B9E;&amp;#x73B0;&amp;#x4F9D;&amp;#x8D56;&amp;#x6CE8;&amp;#x5165;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;Room&amp;#x6570;&amp;#x636E;&amp;#x5E93;&amp;#x7684;&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&quot;&gt;&lt;a href=&quot;#Room&amp;#x6570;&amp;#x636E;&amp;#x5E93;&amp;#x7684;&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&quot; class=&quot;headerlink&quot; title=&quot;Room&amp;#x6570;&amp;#x636E;&amp;#x5E93;&amp;#x7684;&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&quot;&gt;&lt;/a&gt;Room&amp;#x6570;&amp;#x636E;&amp;#x5E93;&amp;#x7684;&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;&amp;#x95EE;&amp;#x9898;&amp;#xFF1A;&lt;/strong&gt; &amp;#x5728;&amp;#x4F7F;&amp;#x7528;Room&amp;#x6570;&amp;#x636E;&amp;#x5E93;&amp;#x65F6;&amp;#xFF0C;&amp;#x6709;&amp;#x54EA;&amp;#x4E9B;&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&amp;#x7684;&amp;#x624B;&amp;#x6BB5;&amp;#x53EF;&amp;#x4EE5;&amp;#x63D0;&amp;#x9AD8;&amp;#x6570;&amp;#x636E;&amp;#x5E93;&amp;#x8BBF;&amp;#x95EE;&amp;#x7684;&amp;#x6548;&amp;#x7387;&amp;#xFF1F;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;#x51FA;&amp;#x53D1;&amp;#x70B9;&amp;#xFF1A;&lt;/strong&gt; &amp;#x4E86;&amp;#x89E3;&amp;#x5728;&amp;#x5B9E;&amp;#x9645;&amp;#x9879;&amp;#x76EE;&amp;#x4E2D;&amp;#xFF0C;&amp;#x5982;&amp;#x4F55;&amp;#x901A;&amp;#x8FC7;&amp;#x4E00;&amp;#x4E9B;&amp;#x6280;&amp;#x5DE7;&amp;#x63D0;&amp;#x9AD8;Room&amp;#x6570;&amp;#x636E;&amp;#x5E93;&amp;#x7684;&amp;#x6027;&amp;#x80FD;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;#x53C2;&amp;#x8003;&amp;#x7B80;&amp;#x7B54;&amp;#xFF1A;&lt;/strong&gt;&lt;br&gt;Room&amp;#x6570;&amp;#x636E;&amp;#x5E93;&amp;#x7684;&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&amp;#x624B;&amp;#x6BB5;&amp;#x5305;&amp;#x62EC;&amp;#xFF1A;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x5408;&amp;#x7406;&amp;#x4F7F;&amp;#x7528;&amp;#x7D22;&amp;#x5F15;&amp;#xFF1A;&lt;/strong&gt; &amp;#x6839;&amp;#x636E;&amp;#x67E5;&amp;#x8BE2;&amp;#x9700;&amp;#x6C42;&amp;#x521B;&amp;#x5EFA;&amp;#x5408;&amp;#x9002;&amp;#x7684;&amp;#x7D22;&amp;#x5F15;&amp;#xFF0C;&amp;#x63D0;&amp;#x9AD8;&amp;#x67E5;&amp;#x8BE2;&amp;#x6548;&amp;#x7387;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x6279;&amp;#x91CF;&amp;#x64CD;&amp;#x4F5C;&amp;#xFF1A;&lt;/strong&gt; &amp;#x4F7F;&amp;#x7528;&lt;code&gt;@Transaction&lt;/code&gt;&amp;#x6CE8;&amp;#x89E3;&amp;#x5C06;&amp;#x591A;&amp;#x4E2A;&amp;#x64CD;&amp;#x4F5C;&amp;#x653E;&amp;#x5728;&amp;#x540C;&amp;#x4E00;&amp;#x4E2A;&amp;#x4E8B;&amp;#x52A1;&amp;#x4E2D;&amp;#xFF0C;&amp;#x51CF;&amp;#x5C11;&amp;#x6570;&amp;#x636E;&amp;#x5E93;&amp;#x4E8B;&amp;#x52A1;&amp;#x7684;&amp;#x5F00;&amp;#x9500;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x5F02;&amp;#x6B65;&amp;#x67E5;&amp;#x8BE2;&amp;#xFF1A;&lt;/strong&gt; &amp;#x5728;&amp;#x540E;&amp;#x53F0;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6267;&amp;#x884C;&amp;#x67E5;&amp;#x8BE2;&amp;#x64CD;&amp;#x4F5C;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x5728;&amp;#x4E3B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x4E2D;&amp;#x6267;&amp;#x884C;&amp;#x8017;&amp;#x65F6;&amp;#x7684;&amp;#x6570;&amp;#x636E;&amp;#x5E93;&amp;#x64CD;&amp;#x4F5C;&amp;#xFF0C;&amp;#x9632;&amp;#x6B62;ANR&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x9002;&amp;#x5EA6;&amp;#x4F7F;&amp;#x7528;Room&amp;#x7684;&amp;#x5185;&amp;#x5B58;&amp;#x7F13;&amp;#x5B58;&amp;#xFF1A;&lt;/strong&gt; &amp;#x4F7F;&amp;#x7528;&lt;code&gt;@Query&lt;/code&gt;&amp;#x6CE8;&amp;#x89E3;&amp;#x7684;&lt;code&gt;LiveData&lt;/code&gt;&amp;#x8FD4;&amp;#x56DE;&amp;#x503C;&amp;#x65F6;&amp;#xFF0C;Room&amp;#x4F1A;&amp;#x81EA;&amp;#x52A8;&amp;#x5728;&amp;#x5185;&amp;#x5B58;&amp;#x4E2D;&amp;#x7EF4;&amp;#x62A4;&amp;#x7F13;&amp;#x5B58;&amp;#xFF0C;&amp;#x4F46;&amp;#x8981;&amp;#x6CE8;&amp;#x610F;&amp;#x4E0D;&amp;#x8981;&amp;#x8FC7;&amp;#x5EA6;&amp;#x4F9D;&amp;#x8D56;&amp;#xFF0C;&amp;#x4EE5;&amp;#x514D;&amp;#x9020;&amp;#x6210;&amp;#x5185;&amp;#x5B58;&amp;#x6D6A;&amp;#x8D39;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;&amp;#x7ED3;&amp;#x8BED;&quot;&gt;&lt;a href=&quot;#&amp;#x7ED3;&amp;#x8BED;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x7ED3;&amp;#x8BED;&quot;&gt;&lt;/a&gt;&amp;#x7ED3;&amp;#x8BED;&lt;/h2&gt;&lt;p&gt;&amp;#x5728;Android Jetpack&amp;#x9762;&amp;#x8BD5;&amp;#x4E2D;&amp;#xFF0C;&amp;#x6DF1;&amp;#x5165;&amp;#x7406;&amp;#x89E3;&amp;#x6838;&amp;#x5FC3;&amp;#x5E93;&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&amp;#x548C;&amp;#x5E95;&amp;#x5C42;&amp;#x539F;&amp;#x7406;&amp;#x662F;&amp;#x5C55;&amp;#x73B0;&amp;#x4E13;&amp;#x4E1A;&amp;#x6C34;&amp;#x5E73;&amp;#x7684;&amp;#x5173;&amp;#x952E;&amp;#x3002;&amp;#x5E0C;&amp;#x671B;&amp;#x8FD9;&amp;#x4E9B;&amp;#x9762;&amp;#x8BD5;&amp;#x6280;&amp;#x5DE7;&amp;#x80FD;&amp;#x591F;&amp;#x5E2E;&amp;#x52A9;&amp;#x5404;&amp;#x4F4D;Android&amp;#x5F00;&amp;#x53D1;&amp;#x8005;&amp;#x66F4;&amp;#x597D;&amp;#x5730;&amp;#x51C6;&amp;#x5907;&amp;#x9762;&amp;#x8BD5;&amp;#xFF0C;&amp;#x5C55;&amp;#x73B0;&amp;#x51FA;&amp;#x81EA;&amp;#x5DF1;&amp;#x7684;&amp;#x6280;&amp;#x672F;&amp;#x5B9E;&amp;#x529B;&amp;#x3002;&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;h2 id=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;a href=&quot;#&amp;#x5F15;&amp;#x8A00;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;/a&gt;&amp;#x5F15;&amp;#x8A00;&lt;/h2&gt;&lt;p&gt;&amp;#x5728;Androi
    
    </summary>
    
      <category term="android" scheme="https://www.rousetime.com/categories/android/"/>
    
    
      <category term="android" scheme="https://www.rousetime.com/tags/android/"/>
    
  </entry>
  
  <entry>
    <title>3分钟搞定，学会Android滑动冲突解决技巧</title>
    <link href="https://www.rousetime.com/2024/01/23/3%E5%88%86%E9%92%9F%E6%90%9E%E5%AE%9A%EF%BC%8C%E5%AD%A6%E4%BC%9AAndroid%E6%BB%91%E5%8A%A8%E5%86%B2%E7%AA%81%E8%A7%A3%E5%86%B3%E6%8A%80%E5%B7%A7/"/>
    <id>https://www.rousetime.com/2024/01/23/3分钟搞定，学会Android滑动冲突解决技巧/</id>
    <published>2024-01-23T02:08:45.000Z</published>
    <updated>2024-01-23T02:09:14.120Z</updated>
    
    <content type="html">&lt;h2 id=&quot;&amp;#x524D;&amp;#x8A00;&quot;&gt;&lt;a href=&quot;#&amp;#x524D;&amp;#x8A00;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x524D;&amp;#x8A00;&quot;&gt;&lt;/a&gt;&amp;#x524D;&amp;#x8A00;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Android&lt;/code&gt;&amp;#x6ED1;&amp;#x52A8;&amp;#x51B2;&amp;#x7A81;&amp;#x662F;&lt;code&gt;Android&lt;/code&gt;&amp;#x5F00;&amp;#x53D1;&amp;#x4E2D;&amp;#x5E38;&amp;#x89C1;&amp;#x7684;&amp;#x95EE;&amp;#x9898;&amp;#x3002;&amp;#x5728;&amp;#x4E00;&amp;#x4E2A;&amp;#x754C;&amp;#x9762;&amp;#x4E2D;&amp;#xFF0C;&amp;#x53EF;&amp;#x80FD;&amp;#x5B58;&amp;#x5728;&amp;#x591A;&amp;#x4E2A;&lt;code&gt;View&lt;/code&gt;&amp;#x53EF;&amp;#x4EE5;&amp;#x54CD;&amp;#x5E94;&amp;#x6ED1;&amp;#x52A8;&amp;#x4E8B;&amp;#x4EF6;&amp;#x3002;&amp;#x5982;&amp;#x679C;&amp;#x8FD9;&amp;#x4E9B;&lt;code&gt;View&lt;/code&gt;&amp;#x6ED1;&amp;#x52A8;&amp;#x65B9;&amp;#x5411;&amp;#x4E00;&amp;#x81F4;&amp;#xFF0C;&amp;#x5219;&amp;#x4F1A;&amp;#x5BFC;&amp;#x81F4;&amp;#x6ED1;&amp;#x52A8;&amp;#x51B2;&amp;#x7A81;&amp;#x3002;&amp;#x672C;&amp;#x6587;&amp;#x5C06;&amp;#x4ECE;&amp;#x539F;&amp;#x7406;&amp;#x3001;&amp;#x4F7F;&amp;#x7528;&amp;#x4E0E;&amp;#x4F18;&amp;#x5316;&amp;#x4E09;&amp;#x4E2A;&amp;#x65B9;&amp;#x9762;&amp;#xFF0C;&amp;#x8BE6;&amp;#x7EC6;&amp;#x4ECB;&amp;#x7ECD;&lt;code&gt;Android&lt;/code&gt;&amp;#x6ED1;&amp;#x52A8;&amp;#x51B2;&amp;#x7A81;&amp;#x7684;&amp;#x89E3;&amp;#x51B3;&amp;#x65B9;&amp;#x5F0F;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x6ED1;&amp;#x52A8;&amp;#x51B2;&amp;#x7A81;&amp;#x7684;&amp;#x539F;&amp;#x7406;&quot;&gt;&lt;a href=&quot;#&amp;#x6ED1;&amp;#x52A8;&amp;#x51B2;&amp;#x7A81;&amp;#x7684;&amp;#x539F;&amp;#x7406;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x6ED1;&amp;#x52A8;&amp;#x51B2;&amp;#x7A81;&amp;#x7684;&amp;#x539F;&amp;#x7406;&quot;&gt;&lt;/a&gt;&amp;#x6ED1;&amp;#x52A8;&amp;#x51B2;&amp;#x7A81;&amp;#x7684;&amp;#x539F;&amp;#x7406;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Android&lt;/code&gt;&amp;#x7684;&amp;#x4E8B;&amp;#x4EF6;&amp;#x5206;&amp;#x53D1;&amp;#x673A;&amp;#x5236;&amp;#x662F;&amp;#x57FA;&amp;#x4E8E;&lt;code&gt;ViewGroup&lt;/code&gt;&amp;#x7684;&amp;#x3002;&amp;#x5F53;&amp;#x7528;&amp;#x6237;&amp;#x5728;&amp;#x5C4F;&amp;#x5E55;&amp;#x4E0A;&amp;#x89E6;&amp;#x6478;&amp;#x65F6;&amp;#xFF0C;&amp;#x4E8B;&amp;#x4EF6;&amp;#x4F1A;&amp;#x9996;&amp;#x5148;&amp;#x4F20;&amp;#x9012;&amp;#x7ED9;&amp;#x6700;&amp;#x9876;&amp;#x5C42;&amp;#x7684;&lt;code&gt;ViewGroup&lt;/code&gt;&amp;#x3002;&lt;code&gt;ViewGroup&lt;/code&gt;&amp;#x4F1A;&amp;#x6839;&amp;#x636E;&amp;#x81EA;&amp;#x5DF1;&amp;#x7684;&amp;#x6ED1;&amp;#x52A8;&amp;#x65B9;&amp;#x5411;&amp;#x548C;&amp;#x6ED1;&amp;#x52A8;&amp;#x80FD;&amp;#x529B;&amp;#x6765;&amp;#x51B3;&amp;#x5B9A;&amp;#x662F;&amp;#x5426;&amp;#x62E6;&amp;#x622A;&amp;#x4E8B;&amp;#x4EF6;&amp;#x3002;&amp;#x5982;&amp;#x679C;&lt;code&gt;ViewGroup&lt;/code&gt;&amp;#x62E6;&amp;#x622A;&amp;#x4E86;&amp;#x4E8B;&amp;#x4EF6;&amp;#xFF0C;&amp;#x5219;&amp;#x4E8B;&amp;#x4EF6;&amp;#x4E0D;&amp;#x4F1A;&amp;#x4F20;&amp;#x9012;&amp;#x7ED9;&amp;#x5B50;&lt;code&gt;View&lt;/code&gt;&amp;#x3002;&amp;#x5982;&amp;#x679C;&lt;code&gt;ViewGroup&lt;/code&gt;&amp;#x6CA1;&amp;#x6709;&amp;#x62E6;&amp;#x622A;&amp;#x4E8B;&amp;#x4EF6;&amp;#xFF0C;&amp;#x5219;&amp;#x4E8B;&amp;#x4EF6;&amp;#x4F1A;&amp;#x4F20;&amp;#x9012;&amp;#x7ED9;&amp;#x5B50;&lt;code&gt;View&lt;/code&gt;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x5982;&amp;#x679C;&amp;#x5B50;&lt;code&gt;View&lt;/code&gt;&amp;#x4E5F;&amp;#x9700;&amp;#x8981;&amp;#x54CD;&amp;#x5E94;&amp;#x6ED1;&amp;#x52A8;&amp;#x4E8B;&amp;#x4EF6;&amp;#xFF0C;&amp;#x5219;&amp;#x5B50;&lt;code&gt;View&lt;/code&gt;&amp;#x9700;&amp;#x8981;&amp;#x91CD;&amp;#x5199;&lt;code&gt;onTouchEvent()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x6765;&amp;#x5904;&amp;#x7406;&amp;#x4E8B;&amp;#x4EF6;&amp;#x3002;&amp;#x5B50;&lt;code&gt;View&lt;/code&gt;&amp;#x53EF;&amp;#x4EE5;&amp;#x901A;&amp;#x8FC7;&lt;code&gt;requestDisallowInterceptTouchEvent()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x6765;&amp;#x544A;&amp;#x8BC9;&amp;#x7236;&lt;code&gt;ViewGroup&lt;/code&gt;&amp;#x4E0D;&amp;#x8981;&amp;#x62E6;&amp;#x622A;&amp;#x4E8B;&amp;#x4EF6;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x6ED1;&amp;#x52A8;&amp;#x51B2;&amp;#x7A81;&amp;#x662F;&amp;#x6307;&amp;#x4E24;&amp;#x4E2A;&amp;#x6216;&amp;#x591A;&amp;#x4E2A;&lt;code&gt;View&lt;/code&gt;&amp;#x540C;&amp;#x65F6;&amp;#x6536;&amp;#x5230;&amp;#x6ED1;&amp;#x52A8;&amp;#x4E8B;&amp;#x4EF6;&amp;#xFF0C;&amp;#x5BFC;&amp;#x81F4;&amp;#x65E0;&amp;#x6CD5;&amp;#x6B63;&amp;#x5E38;&amp;#x6ED1;&amp;#x52A8;&amp;#x3002;&amp;#x6ED1;&amp;#x52A8;&amp;#x51B2;&amp;#x7A81;&amp;#x7684;&amp;#x539F;&amp;#x56E0;&amp;#x6709;&amp;#x5F88;&amp;#x591A;&amp;#xFF0C;&amp;#x4F8B;&amp;#x5982;&amp;#xFF1A;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&amp;#x4E24;&amp;#x4E2A;&lt;code&gt;View&lt;/code&gt;&amp;#x7684;&amp;#x6ED1;&amp;#x52A8;&amp;#x65B9;&amp;#x5411;&amp;#x76F8;&amp;#x540C;&amp;#xFF0C;&amp;#x4F8B;&amp;#x5982;&lt;code&gt;RecyclerView&lt;/code&gt;&amp;#x548C;&lt;code&gt;ScrollView&lt;/code&gt;&amp;#x540C;&amp;#x65F6;&amp;#x6ED1;&amp;#x52A8;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x4E24;&amp;#x4E2A;&lt;code&gt;View&lt;/code&gt;&amp;#x7684;&amp;#x6ED1;&amp;#x52A8;&amp;#x65B9;&amp;#x5411;&amp;#x4E0D;&amp;#x540C;&amp;#xFF0C;&amp;#x4F46;&amp;#x6ED1;&amp;#x52A8;&amp;#x8303;&amp;#x56F4;&amp;#x91CD;&amp;#x53E0;&amp;#xFF0C;&amp;#x4F8B;&amp;#x5982;&lt;code&gt;HorizontalScrollView&lt;/code&gt;&amp;#x548C;&lt;code&gt;WebView&lt;/code&gt;&amp;#x540C;&amp;#x65F6;&amp;#x6ED1;&amp;#x52A8;&amp;#x3002;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;&amp;#x89E3;&amp;#x51B3;&amp;#x65B9;&amp;#x6CD5;&quot;&gt;&lt;a href=&quot;#&amp;#x89E3;&amp;#x51B3;&amp;#x65B9;&amp;#x6CD5;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x89E3;&amp;#x51B3;&amp;#x65B9;&amp;#x6CD5;&quot;&gt;&lt;/a&gt;&amp;#x89E3;&amp;#x51B3;&amp;#x65B9;&amp;#x6CD5;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Android&lt;/code&gt;&amp;#x6ED1;&amp;#x52A8;&amp;#x51B2;&amp;#x7A81;&amp;#x7684;&amp;#x4E3B;&amp;#x8981;&amp;#x89E3;&amp;#x51B3;&amp;#x601D;&amp;#x60F3;&amp;#x6709;&amp;#x4E24;&amp;#x79CD;&amp;#xFF1A;&amp;#x5916;&amp;#x90E8;&amp;#x62E6;&amp;#x622A;&amp;#x6CD5;&amp;#x548C;&amp;#x5185;&amp;#x90E8;&amp;#x62E6;&amp;#x622A;&amp;#x6CD5;&amp;#x3002;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;#x5916;&amp;#x90E8;&amp;#x62E6;&amp;#x622A;&amp;#x6CD5;&amp;#xFF1A;&amp;#x7531;&amp;#x7236;&lt;code&gt;View&lt;/code&gt;&amp;#x62E6;&amp;#x622A;&amp;#x4E8B;&amp;#x4EF6;&amp;#xFF0C;&amp;#x7136;&amp;#x540E;&amp;#x6839;&amp;#x636E;&amp;#x9700;&amp;#x8981;&amp;#x5C06;&amp;#x4E8B;&amp;#x4EF6;&amp;#x4F20;&amp;#x9012;&amp;#x7ED9;&amp;#x5B50;&lt;code&gt;View&lt;/code&gt;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x5185;&amp;#x90E8;&amp;#x62E6;&amp;#x622A;&amp;#x6CD5;&amp;#xFF1A;&amp;#x7531;&amp;#x5B50;&lt;code&gt;View&lt;/code&gt;&amp;#x62E6;&amp;#x622A;&amp;#x4E8B;&amp;#x4EF6;&amp;#xFF0C;&amp;#x7136;&amp;#x540E;&amp;#x6839;&amp;#x636E;&amp;#x9700;&amp;#x8981;&amp;#x5C06;&amp;#x4E8B;&amp;#x4EF6;&amp;#x4F20;&amp;#x9012;&amp;#x7ED9;&amp;#x7236;&lt;code&gt;View&lt;/code&gt;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;&amp;#x5916;&amp;#x90E8;&amp;#x62E6;&amp;#x622A;&amp;#x6CD5;&quot;&gt;&lt;a href=&quot;#&amp;#x5916;&amp;#x90E8;&amp;#x62E6;&amp;#x622A;&amp;#x6CD5;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5916;&amp;#x90E8;&amp;#x62E6;&amp;#x622A;&amp;#x6CD5;&quot;&gt;&lt;/a&gt;&amp;#x5916;&amp;#x90E8;&amp;#x62E6;&amp;#x622A;&amp;#x6CD5;&lt;/h3&gt;&lt;p&gt;&amp;#x5916;&amp;#x90E8;&amp;#x62E6;&amp;#x622A;&amp;#x6CD5;&amp;#x662F;&lt;code&gt;Android&lt;/code&gt;&amp;#x9ED8;&amp;#x8BA4;&amp;#x7684;&amp;#x6ED1;&amp;#x52A8;&amp;#x51B2;&amp;#x7A81;&amp;#x89E3;&amp;#x51B3;&amp;#x65B9;&amp;#x5F0F;&amp;#x3002;&amp;#x5728;&amp;#x8FD9;&amp;#x79CD;&amp;#x65B9;&amp;#x5F0F;&amp;#x4E0B;&amp;#xFF0C;&amp;#x7236;&lt;code&gt;View&lt;/code&gt;&amp;#x4F1A;&amp;#x5148;&amp;#x62E6;&amp;#x622A;&amp;#x4E8B;&amp;#x4EF6;&amp;#xFF0C;&amp;#x7136;&amp;#x540E;&amp;#x6839;&amp;#x636E;&amp;#x9700;&amp;#x8981;&amp;#x5C06;&amp;#x4E8B;&amp;#x4EF6;&amp;#x4F20;&amp;#x9012;&amp;#x7ED9;&amp;#x5B50;&lt;code&gt;View&lt;/code&gt;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x7236;&lt;code&gt;View&lt;/code&gt;&amp;#x53EF;&amp;#x4EE5;&amp;#x901A;&amp;#x8FC7;&amp;#x91CD;&amp;#x5199;&lt;code&gt;onInterceptTouchEvent()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x6765;&amp;#x5B9E;&amp;#x73B0;&amp;#x5916;&amp;#x90E8;&amp;#x62E6;&amp;#x622A;&amp;#x6CD5;&amp;#x3002;&amp;#x5728;&lt;code&gt;onInterceptTouchEvent()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x4E2D;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x53EF;&amp;#x4EE5;&amp;#x6839;&amp;#x636E;&amp;#x4E8B;&amp;#x4EF6;&amp;#x7684;&amp;#x7C7B;&amp;#x578B;&amp;#x548C;&amp;#x4F4D;&amp;#x7F6E;&amp;#x6765;&amp;#x5224;&amp;#x65AD;&amp;#x662F;&amp;#x5426;&amp;#x9700;&amp;#x8981;&amp;#x62E6;&amp;#x622A;&amp;#x4E8B;&amp;#x4EF6;&amp;#x3002;&amp;#x5982;&amp;#x679C;&amp;#x9700;&amp;#x8981;&amp;#x62E6;&amp;#x622A;&amp;#x4E8B;&amp;#x4EF6;&amp;#xFF0C;&amp;#x5219;&amp;#x8FD4;&amp;#x56DE;&lt;code&gt;true&lt;/code&gt;&amp;#xFF0C;&amp;#x5426;&amp;#x5219;&amp;#x8FD4;&amp;#x56DE;&lt;code&gt;false&lt;/code&gt;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;22&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;23&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;24&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;25&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;26&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;27&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;28&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;29&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;30&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;31&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;class CustomParentView(context: Context, attrs: AttributeSet) : ViewGroup(context, attrs) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    private var downX: Float = 0F&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    private var downY: Float = 0F&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    override fun onInterceptTouchEvent(ev: MotionEvent): Boolean {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        when (ev.action) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            MotionEvent.ACTION_DOWN -&amp;gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                downX = ev.x&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                downY = ev.y&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            MotionEvent.ACTION_MOVE -&amp;gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                val deltaX = ev.x - downX&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                val deltaY = ev.y - downY&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                // &amp;#x6839;&amp;#x636E;&amp;#x6ED1;&amp;#x52A8;&amp;#x65B9;&amp;#x5411;&amp;#x5224;&amp;#x65AD;&amp;#x662F;&amp;#x5426;&amp;#x62E6;&amp;#x622A;&amp;#x4E8B;&amp;#x4EF6;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                if (Math.abs(deltaX) &amp;gt; Math.abs(deltaY)) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                    return true&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        return super.onInterceptTouchEvent(ev)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    override fun onTouchEvent(event: MotionEvent): Boolean {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        // &amp;#x5904;&amp;#x7406;&amp;#x6ED1;&amp;#x52A8;&amp;#x903B;&amp;#x8F91;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        return true&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    // &amp;#x5176;&amp;#x4ED6;&amp;#x76F8;&amp;#x5173;&amp;#x4EE3;&amp;#x7801;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;&amp;#x4F18;&amp;#x70B9;:&lt;/strong&gt; &amp;#x7B80;&amp;#x5355;&amp;#x6613;&amp;#x7528;&amp;#xFF0C;&amp;#x9002;&amp;#x7528;&amp;#x4E8E;&amp;#x5927;&amp;#x591A;&amp;#x6570;&amp;#x6ED1;&amp;#x52A8;&amp;#x51B2;&amp;#x7A81;&amp;#x95EE;&amp;#x9898;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;#x7F3A;&amp;#x70B9;:&lt;/strong&gt; &amp;#x53EF;&amp;#x80FD;&amp;#x4F1A;&amp;#x5BFC;&amp;#x81F4;&amp;#x7236;&lt;code&gt;ViewGroup&lt;/code&gt;&amp;#x65E0;&amp;#x6CD5;&amp;#x54CD;&amp;#x5E94;&amp;#x4E8B;&amp;#x4EF6;&amp;#xFF0C;&amp;#x4F8B;&amp;#x5982;&amp;#x7236;&lt;code&gt;ViewGroup&lt;/code&gt;&amp;#x7684;&amp;#x5B50;&lt;code&gt;View&lt;/code&gt;&amp;#x6B63;&amp;#x5728;&amp;#x6ED1;&amp;#x52A8;&amp;#xFF0C;&amp;#x800C;&amp;#x7236;&lt;code&gt;ViewGroup&lt;/code&gt;&amp;#x7684;&amp;#x6ED1;&amp;#x52A8;&amp;#x4E8B;&amp;#x4EF6;&amp;#x4E5F;&amp;#x88AB;&amp;#x62E6;&amp;#x622A;&amp;#x4E86;&amp;#x3002;&lt;/p&gt;
&lt;h3 id=&quot;&amp;#x5185;&amp;#x90E8;&amp;#x62E6;&amp;#x622A;&amp;#x6CD5;&quot;&gt;&lt;a href=&quot;#&amp;#x5185;&amp;#x90E8;&amp;#x62E6;&amp;#x622A;&amp;#x6CD5;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5185;&amp;#x90E8;&amp;#x62E6;&amp;#x622A;&amp;#x6CD5;&quot;&gt;&lt;/a&gt;&amp;#x5185;&amp;#x90E8;&amp;#x62E6;&amp;#x622A;&amp;#x6CD5;&lt;/h3&gt;&lt;p&gt;&amp;#x5185;&amp;#x90E8;&amp;#x62E6;&amp;#x622A;&amp;#x6CD5;&amp;#x662F;&amp;#x6307;&amp;#x7531;&amp;#x5B50;&lt;code&gt;View&lt;/code&gt;&amp;#x62E6;&amp;#x622A;&amp;#x4E8B;&amp;#x4EF6;&amp;#xFF0C;&amp;#x7136;&amp;#x540E;&amp;#x6839;&amp;#x636E;&amp;#x9700;&amp;#x8981;&amp;#x5C06;&amp;#x4E8B;&amp;#x4EF6;&amp;#x4F20;&amp;#x9012;&amp;#x7ED9;&amp;#x7236;&lt;code&gt;View&lt;/code&gt;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x5B50;&lt;code&gt;View&lt;/code&gt;&amp;#x53EF;&amp;#x4EE5;&amp;#x901A;&amp;#x8FC7;&amp;#x91CD;&amp;#x5199;&lt;code&gt;dispatchTouchEvent()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x6765;&amp;#x5B9E;&amp;#x73B0;&amp;#x5185;&amp;#x90E8;&amp;#x62E6;&amp;#x622A;&amp;#x6CD5;&amp;#x3002;&amp;#x5728;&lt;code&gt;dispatchTouchEvent()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x4E2D;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x53EF;&amp;#x4EE5;&amp;#x6839;&amp;#x636E;&amp;#x4E8B;&amp;#x4EF6;&amp;#x7684;&amp;#x7C7B;&amp;#x578B;&amp;#x548C;&amp;#x4F4D;&amp;#x7F6E;&amp;#x6765;&amp;#x5224;&amp;#x65AD;&amp;#x662F;&amp;#x5426;&amp;#x9700;&amp;#x8981;&amp;#x62E6;&amp;#x622A;&amp;#x4E8B;&amp;#x4EF6;&amp;#x3002;&amp;#x5982;&amp;#x679C;&amp;#x9700;&amp;#x8981;&amp;#x62E6;&amp;#x622A;&amp;#x4E8B;&amp;#x4EF6;&amp;#xFF0C;&amp;#x5219;&amp;#x8C03;&amp;#x7528;&lt;code&gt;requestDisallowInterceptTouchEvent()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x6765;&amp;#x544A;&amp;#x8BC9;&amp;#x7236;&lt;code&gt;View&lt;/code&gt;&amp;#x4E0D;&amp;#x8981;&amp;#x62E6;&amp;#x622A;&amp;#x4E8B;&amp;#x4EF6;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;22&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;23&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;24&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;class MyView : View {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    // &amp;#x901A;&amp;#x8FC7;&amp;#x91CD;&amp;#x5199; dispatchTouchEvent &amp;#x65B9;&amp;#x6CD5;&amp;#x5B9E;&amp;#x73B0;&amp;#x5185;&amp;#x90E8;&amp;#x62E6;&amp;#x622A;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    override fun dispatchTouchEvent(ev: MotionEvent): Boolean {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        when (ev.action) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            MotionEvent.ACTION_DOWN -&amp;gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                // &amp;#x6309;&amp;#x4E0B;&amp;#x65F6;&amp;#xFF0C;&amp;#x7981;&amp;#x6B62;&amp;#x7236;View&amp;#x62E6;&amp;#x622A;&amp;#x4E8B;&amp;#x4EF6;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                parent.requestDisallowInterceptTouchEvent(true)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            MotionEvent.ACTION_MOVE -&amp;gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                // &amp;#x6839;&amp;#x636E;&amp;#x4E1A;&amp;#x52A1;&amp;#x903B;&amp;#x8F91;&amp;#x5224;&amp;#x65AD;&amp;#x662F;&amp;#x5426;&amp;#x62E6;&amp;#x622A;&amp;#x4E8B;&amp;#x4EF6;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                if (shouldInterceptTouchEvent(ev)) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                    return true&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            MotionEvent.ACTION_UP -&amp;gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                // &amp;#x624B;&amp;#x6307;&amp;#x62AC;&amp;#x8D77;&amp;#x65F6;&amp;#xFF0C;&amp;#x5141;&amp;#x8BB8;&amp;#x7236;View&amp;#x62E6;&amp;#x622A;&amp;#x4E8B;&amp;#x4EF6;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                parent.requestDisallowInterceptTouchEvent(false)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        return super.dispatchTouchEvent(ev)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;&amp;#x4F18;&amp;#x70B9;:&lt;/strong&gt; &amp;#x4E0D;&amp;#x4F1A;&amp;#x5BFC;&amp;#x81F4;&amp;#x7236;&lt;code&gt;ViewGroup&lt;/code&gt;&amp;#x65E0;&amp;#x6CD5;&amp;#x54CD;&amp;#x5E94;&amp;#x4E8B;&amp;#x4EF6;&amp;#xFF0C;&amp;#x9002;&amp;#x7528;&amp;#x4E8E;&amp;#x7236;&lt;code&gt;ViewGroup&lt;/code&gt;&amp;#x548C;&amp;#x5B50;&lt;code&gt;View&lt;/code&gt;&amp;#x90FD;&amp;#x9700;&amp;#x8981;&amp;#x6ED1;&amp;#x52A8;&amp;#x7684;&amp;#x60C5;&amp;#x51B5;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;#x7F3A;&amp;#x70B9;:&lt;/strong&gt; &amp;#x9700;&amp;#x8981;&amp;#x91CD;&amp;#x5199;&amp;#x5B50;&lt;code&gt;View&lt;/code&gt;&amp;#x7684;&lt;code&gt;dispatchTouchEvent()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#xFF0C;&amp;#x53EF;&amp;#x80FD;&amp;#x4F1A;&amp;#x5BFC;&amp;#x81F4;&amp;#x4EE3;&amp;#x7801;&amp;#x590D;&amp;#x6742;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&amp;#x548C;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&quot;&gt;&lt;a href=&quot;#&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&amp;#x548C;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&amp;#x548C;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&quot;&gt;&lt;/a&gt;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&amp;#x548C;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&amp;#x5728;&amp;#x5224;&amp;#x65AD;&amp;#x662F;&amp;#x5426;&amp;#x9700;&amp;#x8981;&amp;#x62E6;&amp;#x622A;&amp;#x4E8B;&amp;#x4EF6;&amp;#x65F6;&amp;#xFF0C;&amp;#x9700;&amp;#x8981;&amp;#x8003;&amp;#x8651;&amp;#x4E8B;&amp;#x4EF6;&amp;#x7684;&amp;#x65B9;&amp;#x5411;&amp;#x3001;&amp;#x6ED1;&amp;#x52A8;&amp;#x8DDD;&amp;#x79BB;&amp;#x7B49;&amp;#x56E0;&amp;#x7D20;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x5982;&amp;#x679C;&amp;#x7236;&lt;code&gt;ViewGroup&lt;/code&gt;&amp;#x548C;&amp;#x5B50;&lt;code&gt;View&lt;/code&gt;&amp;#x90FD;&amp;#x9700;&amp;#x8981;&amp;#x6ED1;&amp;#x52A8;&amp;#xFF0C;&amp;#x5219;&amp;#x53EF;&amp;#x4EE5;&amp;#x4F7F;&amp;#x7528;&amp;#x4E8B;&amp;#x4EF6;&amp;#x5206;&amp;#x53D1;&amp;#x673A;&amp;#x5236;&amp;#x6765;&amp;#x89E3;&amp;#x51B3;&amp;#x6ED1;&amp;#x52A8;&amp;#x51B2;&amp;#x7A81;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x907F;&amp;#x514D;&amp;#x8FC7;&amp;#x591A;&amp;#x7684;&amp;#x5D4C;&amp;#x5957;, &amp;#x5C3D;&amp;#x91CF;&amp;#x51CF;&amp;#x5C11;&amp;#x5E03;&amp;#x5C40;&amp;#x7684;&amp;#x5D4C;&amp;#x5957;&amp;#x5C42;&amp;#x6B21;&amp;#xFF0C;&amp;#x4EE5;&amp;#x964D;&amp;#x4F4E;&amp;#x6ED1;&amp;#x52A8;&amp;#x51B2;&amp;#x7A81;&amp;#x7684;&amp;#x6982;&amp;#x7387;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;&amp;#x603B;&amp;#x7ED3;&quot;&gt;&lt;a href=&quot;#&amp;#x603B;&amp;#x7ED3;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x603B;&amp;#x7ED3;&quot;&gt;&lt;/a&gt;&amp;#x603B;&amp;#x7ED3;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Android&lt;/code&gt;&amp;#x6ED1;&amp;#x52A8;&amp;#x51B2;&amp;#x7A81;&amp;#x7684;&amp;#x89E3;&amp;#x51B3;&amp;#x65B9;&amp;#x5F0F;&amp;#x4E3B;&amp;#x8981;&amp;#x6709;&amp;#x5916;&amp;#x90E8;&amp;#x62E6;&amp;#x622A;&amp;#x6CD5;&amp;#x548C;&amp;#x5185;&amp;#x90E8;&amp;#x62E6;&amp;#x622A;&amp;#x6CD5;&amp;#x4E24;&amp;#x79CD;&amp;#x3002;&amp;#x5E0C;&amp;#x671B;&amp;#x672C;&amp;#x6587;&amp;#x80FD;&amp;#x5E2E;&amp;#x52A9;&amp;#x8BFB;&amp;#x8005;&amp;#x89E3;&amp;#x51B3;&amp;#x6ED1;&amp;#x52A8;&amp;#x51B2;&amp;#x7A81;&amp;#x95EE;&amp;#x9898;&amp;#xFF0C;&amp;#x63D0;&amp;#x9AD8;&lt;code&gt;Android&lt;/code&gt;&amp;#x5F00;&amp;#x53D1;&amp;#x6C34;&amp;#x5E73;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;a href=&quot;#&amp;#x63A8;&amp;#x8350;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;/a&gt;&amp;#x63A8;&amp;#x8350;&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-startup&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android_startup&lt;/a&gt;: &amp;#x63D0;&amp;#x4F9B;&amp;#x4E00;&amp;#x79CD;&amp;#x5728;&amp;#x5E94;&amp;#x7528;&amp;#x542F;&amp;#x52A8;&amp;#x65F6;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x52A0;&amp;#x7B80;&amp;#x5355;&amp;#x3001;&amp;#x9AD8;&amp;#x6548;&amp;#x7684;&amp;#x65B9;&amp;#x5F0F;&amp;#x6765;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x7EC4;&amp;#x4EF6;&amp;#xFF0C;&amp;#x4F18;&amp;#x5316;&amp;#x542F;&amp;#x52A8;&amp;#x901F;&amp;#x5EA6;&amp;#x3002;&amp;#x4E0D;&amp;#x4EC5;&amp;#x652F;&amp;#x6301;Jetpack App Startup&amp;#x7684;&amp;#x5168;&amp;#x90E8;&amp;#x529F;&amp;#x80FD;&amp;#xFF0C;&amp;#x8FD8;&amp;#x63D0;&amp;#x4F9B;&amp;#x989D;&amp;#x5916;&amp;#x7684;&amp;#x540C;&amp;#x6B65;&amp;#x4E0E;&amp;#x5F02;&amp;#x6B65;&amp;#x7B49;&amp;#x5F85;&amp;#x3001;&amp;#x7EBF;&amp;#x7A0B;&amp;#x63A7;&amp;#x5236;&amp;#x4E0E;&amp;#x591A;&amp;#x8FDB;&amp;#x7A0B;&amp;#x652F;&amp;#x6301;&amp;#x7B49;&amp;#x529F;&amp;#x80FD;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/AwesomeGithub&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AwesomeGithub&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Github&amp;#x7684;&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x7EAF;&amp;#x7EC3;&amp;#x4E60;&amp;#x9879;&amp;#x76EE;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x7EC4;&amp;#x4EF6;&amp;#x5316;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x8D26;&amp;#x6237;&amp;#x5BC6;&amp;#x7801;&amp;#x4E0E;&amp;#x8BA4;&amp;#x8BC1;&amp;#x767B;&amp;#x9646;&amp;#x3002;&amp;#x4F7F;&amp;#x7528;Kotlin&amp;#x8BED;&amp;#x8A00;&amp;#x8FDB;&amp;#x884C;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x9879;&amp;#x76EE;&amp;#x67B6;&amp;#x6784;&amp;#x662F;&amp;#x57FA;&amp;#x4E8E;JetPack\&amp;amp;DataBinding&amp;#x7684;MVVM&amp;#xFF1B;&amp;#x9879;&amp;#x76EE;&amp;#x4E2D;&amp;#x4F7F;&amp;#x7528;&amp;#x4E86;Arouter&amp;#x3001;Retrofit&amp;#x3001;Coroutine&amp;#x3001;Glide&amp;#x3001;Dagger&amp;#x4E0E;Hilt&amp;#x7B49;&amp;#x6D41;&amp;#x884C;&amp;#x5F00;&amp;#x6E90;&amp;#x6280;&amp;#x672F;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/flutter_github&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;flutter_github&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Flutter&amp;#x7684;&amp;#x8DE8;&amp;#x5E73;&amp;#x53F0;&amp;#x7248;&amp;#x672C;Github&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x4E0E;AwesomeGithub&amp;#x76F8;&amp;#x5BF9;&amp;#x5E94;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-api-analysis&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android-api-analysis&lt;/a&gt;: &amp;#x7ED3;&amp;#x5408;&amp;#x8BE6;&amp;#x7EC6;&amp;#x7684;Demo&amp;#x6765;&amp;#x5168;&amp;#x9762;&amp;#x89E3;&amp;#x6790;Android&amp;#x76F8;&amp;#x5173;&amp;#x7684;&amp;#x77E5;&amp;#x8BC6;&amp;#x70B9;, &amp;#x5E2E;&amp;#x52A9;&amp;#x8BFB;&amp;#x8005;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x5FEB;&amp;#x7684;&amp;#x638C;&amp;#x63E1;&amp;#x4E0E;&amp;#x7406;&amp;#x89E3;&amp;#x6240;&amp;#x9610;&amp;#x8FF0;&amp;#x7684;&amp;#x8981;&amp;#x70B9;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/daily_algorithm&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;daily_algorithm&lt;/a&gt;: &amp;#x6BCF;&amp;#x65E5;&amp;#x4E00;&amp;#x7B97;&amp;#x6CD5;&amp;#xFF0C;&amp;#x7531;&amp;#x6D45;&amp;#x5165;&amp;#x6DF1;&amp;#xFF0C;&amp;#x6B22;&amp;#x8FCE;&amp;#x52A0;&amp;#x5165;&amp;#x4E00;&amp;#x8D77;&amp;#x5171;&amp;#x52C9;&amp;#x3002;&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;h2 id=&quot;&amp;#x524D;&amp;#x8A00;&quot;&gt;&lt;a href=&quot;#&amp;#x524D;&amp;#x8A00;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x524D;&amp;#x8A00;&quot;&gt;&lt;/a&gt;&amp;#x524D;&amp;#x8A00;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;Android&lt;
    
    </summary>
    
      <category term="android" scheme="https://www.rousetime.com/categories/android/"/>
    
    
      <category term="android" scheme="https://www.rousetime.com/tags/android/"/>
    
  </entry>
  
  <entry>
    <title>Android大图监测的这三种实现方式，你最喜欢哪种？</title>
    <link href="https://www.rousetime.com/2024/01/11/Android%E5%A4%A7%E5%9B%BE%E7%9B%91%E6%B5%8B%E7%9A%84%E8%BF%99%E4%B8%89%E7%A7%8D%E5%AE%9E%E7%8E%B0%E6%96%B9%E5%BC%8F%EF%BC%8C%E4%BD%A0%E6%9C%80%E5%96%9C%E6%AC%A2%E5%93%AA%E7%A7%8D%EF%BC%9F/"/>
    <id>https://www.rousetime.com/2024/01/11/Android大图监测的这三种实现方式，你最喜欢哪种？/</id>
    <published>2024-01-11T02:43:08.000Z</published>
    <updated>2024-01-11T02:43:32.498Z</updated>
    
    <content type="html">&lt;p&gt;&amp;#x5728;&lt;code&gt;Android&lt;/code&gt;&amp;#x5E94;&amp;#x7528;&amp;#x4E2D;&amp;#xFF0C;&amp;#x5927;&amp;#x56FE;&amp;#x7684;&amp;#x52A0;&amp;#x8F7D;&amp;#x548C;&amp;#x663E;&amp;#x793A;&amp;#x53EF;&amp;#x80FD;&amp;#x5BFC;&amp;#x81F4;&amp;#x5185;&amp;#x5B58;&amp;#x5360;&amp;#x7528;&amp;#x8FC7;&amp;#x9AD8;&amp;#xFF0C;&amp;#x8FDB;&amp;#x800C;&amp;#x5F15;&amp;#x53D1;&lt;code&gt;OOM&lt;/code&gt;&amp;#xFF08;Out Of Memory&amp;#xFF09;&amp;#x5F02;&amp;#x5E38;&amp;#xFF0C;&amp;#x5F71;&amp;#x54CD;&amp;#x5E94;&amp;#x7528;&amp;#x7684;&amp;#x7A33;&amp;#x5B9A;&amp;#x6027;&amp;#x548C;&amp;#x7528;&amp;#x6237;&amp;#x4F53;&amp;#x9A8C;&amp;#x3002;&amp;#x4E3A;&amp;#x4E86;&amp;#x66F4;&amp;#x597D;&amp;#x5730;&amp;#x7BA1;&amp;#x7406;&amp;#x5927;&amp;#x56FE;&amp;#x8D44;&amp;#x6E90;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x9700;&amp;#x8981;&amp;#x5EFA;&amp;#x7ACB;&amp;#x8D77;&amp;#x4E00;&amp;#x5957;&amp;#x53EF;&amp;#x9760;&amp;#x7684;&amp;#x5927;&amp;#x56FE;&amp;#x76D1;&amp;#x6D4B;&amp;#x7CFB;&amp;#x7EDF;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x539F;&amp;#x7406;&amp;#x89E3;&amp;#x6790;&quot;&gt;&lt;a href=&quot;#&amp;#x539F;&amp;#x7406;&amp;#x89E3;&amp;#x6790;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x539F;&amp;#x7406;&amp;#x89E3;&amp;#x6790;&quot;&gt;&lt;/a&gt;&amp;#x539F;&amp;#x7406;&amp;#x89E3;&amp;#x6790;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x5185;&amp;#x5B58;&amp;#x5360;&amp;#x7528;&amp;#x8BA1;&amp;#x7B97;&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;#x9996;&amp;#x5148;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x9700;&amp;#x8981;&amp;#x4E86;&amp;#x89E3;&amp;#x5982;&amp;#x4F55;&amp;#x8BA1;&amp;#x7B97;&amp;#x4E00;&amp;#x5F20;&amp;#x56FE;&amp;#x7247;&amp;#x5728;&amp;#x5185;&amp;#x5B58;&amp;#x4E2D;&amp;#x7684;&amp;#x5360;&amp;#x7528;&amp;#x5927;&amp;#x5C0F;&amp;#x3002;Android&amp;#x4E2D;&amp;#xFF0C;&amp;#x56FE;&amp;#x7247;&amp;#x5360;&amp;#x7528;&amp;#x7684;&amp;#x5185;&amp;#x5B58;&amp;#x4E3B;&amp;#x8981;&amp;#x7531;&amp;#x5176;&amp;#x5BBD;&amp;#x3001;&amp;#x9AD8;&amp;#x548C;&amp;#x6BCF;&amp;#x4E2A;&amp;#x50CF;&amp;#x7D20;&amp;#x7684;&amp;#x4F4D;&amp;#x6570;&amp;#x51B3;&amp;#x5B9A;&amp;#x3002;&amp;#x6211;&amp;#x4EEC;&amp;#x53EF;&amp;#x4EE5;&amp;#x4F7F;&amp;#x7528;&amp;#x4EE5;&amp;#x4E0B;&amp;#x516C;&amp;#x5F0F;&amp;#x8BA1;&amp;#x7B97;&amp;#xFF1A;&lt;/p&gt;
&lt;p&gt;[ &amp;#x5185;&amp;#x5B58;&amp;#x5360;&amp;#x7528;&amp;#x5927;&amp;#x5C0F; = &amp;#x5BBD; \times &amp;#x9AD8; \times &amp;#x50CF;&amp;#x7D20;&amp;#x4F4D;&amp;#x6570; / 8 ]&lt;/p&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x5927;&amp;#x56FE;&amp;#x5224;&amp;#x5B9A;&amp;#x6807;&amp;#x51C6;&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;#x4E00;&amp;#x822C;&amp;#x60C5;&amp;#x51B5;&amp;#x4E0B;&amp;#xFF0C;&amp;#x5927;&amp;#x56FE;&amp;#x7684;&amp;#x5B9A;&amp;#x4E49;&amp;#x662F;&amp;#x6307;&amp;#x8D85;&amp;#x8FC7;&amp;#x4E00;&amp;#x5B9A;&amp;#x9608;&amp;#x503C;&amp;#x7684;&amp;#x56FE;&amp;#x7247;&amp;#x3002;&amp;#x8FD9;&amp;#x4E2A;&amp;#x9608;&amp;#x503C;&amp;#x53EF;&amp;#x4EE5;&amp;#x6839;&amp;#x636E;&amp;#x5E94;&amp;#x7528;&amp;#x7684;&amp;#x5B9E;&amp;#x9645;&amp;#x9700;&amp;#x6C42;&amp;#x6765;&amp;#x8BBE;&amp;#x5B9A;&amp;#xFF0C;&amp;#x901A;&amp;#x5E38;&amp;#x5EFA;&amp;#x8BAE;&amp;#x6839;&amp;#x636E;&amp;#x8BBE;&amp;#x5907;&amp;#x7684;&amp;#x5185;&amp;#x5B58;&amp;#x60C5;&amp;#x51B5;&amp;#x548C;&amp;#x5E94;&amp;#x7528;&amp;#x573A;&amp;#x666F;&amp;#x52A8;&amp;#x6001;&amp;#x8C03;&amp;#x6574;&amp;#x3002;&lt;/p&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x76D1;&amp;#x6D4B;&amp;#x7B56;&amp;#x7565;&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;#x5927;&amp;#x56FE;&amp;#x76D1;&amp;#x6D4B;&amp;#x4E00;&amp;#x822C;&amp;#x91C7;&amp;#x7528;&amp;#x4E24;&amp;#x79CD;&amp;#x7B56;&amp;#x7565;&amp;#xFF1A;&lt;strong&gt;&amp;#x4E3B;&amp;#x52A8;&amp;#x76D1;&amp;#x6D4B;&lt;/strong&gt;&amp;#x548C;&lt;strong&gt;&amp;#x88AB;&amp;#x52A8;&amp;#x76D1;&amp;#x6D4B;&lt;/strong&gt;&amp;#x3002;&amp;#x4E3B;&amp;#x52A8;&amp;#x76D1;&amp;#x6D4B;&amp;#x901A;&amp;#x8FC7;&amp;#x5468;&amp;#x671F;&amp;#x6027;&amp;#x5730;&amp;#x626B;&amp;#x63CF;&amp;#x5185;&amp;#x5B58;&amp;#x4E2D;&amp;#x7684;&amp;#x56FE;&amp;#x7247;&amp;#x8D44;&amp;#x6E90;&amp;#xFF0C;&amp;#x8BC6;&amp;#x522B;&amp;#x5927;&amp;#x56FE;&amp;#xFF0C;&amp;#x8FDB;&amp;#x884C;&amp;#x5904;&amp;#x7406;&amp;#x3002;&amp;#x800C;&amp;#x88AB;&amp;#x52A8;&amp;#x76D1;&amp;#x6D4B;&amp;#x5219;&amp;#x662F;&amp;#x5728;&amp;#x56FE;&amp;#x7247;&amp;#x52A0;&amp;#x8F7D;&amp;#x8FC7;&amp;#x7A0B;&amp;#x4E2D;&amp;#x5B9E;&amp;#x65F6;&amp;#x5224;&amp;#x65AD;&amp;#x662F;&amp;#x5426;&amp;#x4E3A;&amp;#x5927;&amp;#x56FE;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x4E3B;&amp;#x52A8;&amp;#x76D1;&amp;#x6D4B;&quot;&gt;&lt;a href=&quot;#&amp;#x4E3B;&amp;#x52A8;&amp;#x76D1;&amp;#x6D4B;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4E3B;&amp;#x52A8;&amp;#x76D1;&amp;#x6D4B;&quot;&gt;&lt;/a&gt;&amp;#x4E3B;&amp;#x52A8;&amp;#x76D1;&amp;#x6D4B;&lt;/h2&gt;&lt;p&gt;&amp;#x4E3B;&amp;#x52A8;&amp;#x76D1;&amp;#x6D4B;&amp;#x53EA;&amp;#x8981;&amp;#x83B7;&amp;#x53D6;&amp;#x5230;&amp;#x5185;&amp;#x5B58;&amp;#x4E2D;&amp;#x7684;&amp;#x56FE;&amp;#x7247;&amp;#x8D44;&amp;#x6E90;&amp;#xFF0C;&amp;#x901A;&amp;#x8FC7;&amp;#x626B;&amp;#x63CF;&amp;#x5224;&amp;#x65AD;&amp;#x662F;&amp;#x5426;&amp;#x8D85;&amp;#x8FC7;&amp;#x8BBE;&amp;#x7F6E;&amp;#x7684;&amp;#x9608;&amp;#x503C;&amp;#x5373;&amp;#x53EF;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;22&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;23&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;24&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;25&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;LargeImageScanner&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;scanLargeImages&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x904D;&amp;#x5386;&amp;#x5185;&amp;#x5B58;&amp;#x4E2D;&amp;#x7684;&amp;#x56FE;&amp;#x7247;&amp;#x8D44;&amp;#x6E90;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;for&lt;/span&gt; (image &lt;span class=&quot;keyword&quot;&gt;in&lt;/span&gt; MemoryManager.getAllImages()) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; imageSize = calculateImageSize(image)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            &lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;comment&quot;&gt;// &amp;#x5224;&amp;#x65AD;&amp;#x662F;&amp;#x5426;&amp;#x4E3A;&amp;#x5927;&amp;#x56FE;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt; (imageSize &amp;gt; LARGE_IMAGE_THRESHOLD) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;comment&quot;&gt;// &amp;#x8FDB;&amp;#x884C;&amp;#x5904;&amp;#x7406;&amp;#xFF0C;&amp;#x5982;&amp;#x538B;&amp;#x7F29;&amp;#x3001;&amp;#x88C1;&amp;#x526A;&amp;#x6216;&amp;#x5F02;&amp;#x6B65;&amp;#x52A0;&amp;#x8F7D;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                handleLargeImage(image)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;calculateImageSize&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(image: &lt;span class=&quot;type&quot;&gt;Bitmap&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;: &lt;span class=&quot;built_in&quot;&gt;Int&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x8BA1;&amp;#x7B97;&amp;#x56FE;&amp;#x7247;&amp;#x5360;&amp;#x7528;&amp;#x7684;&amp;#x5185;&amp;#x5B58;&amp;#x5927;&amp;#x5C0F;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; image.width * image.height * (image.config.bitsPerPixel / &lt;span class=&quot;number&quot;&gt;8&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;handleLargeImage&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(image: &lt;span class=&quot;type&quot;&gt;Bitmap&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x5B9E;&amp;#x73B0;&amp;#x5927;&amp;#x56FE;&amp;#x7684;&amp;#x5904;&amp;#x7406;&amp;#x903B;&amp;#x8F91;&amp;#xFF0C;&amp;#x4F8B;&amp;#x5982;&amp;#x538B;&amp;#x7F29;&amp;#x3001;&amp;#x88C1;&amp;#x526A;&amp;#x6216;&amp;#x5F02;&amp;#x6B65;&amp;#x52A0;&amp;#x8F7D;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// ...&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h2 id=&quot;&amp;#x88AB;&amp;#x52A8;&amp;#x76D1;&amp;#x6D4B;&quot;&gt;&lt;a href=&quot;#&amp;#x88AB;&amp;#x52A8;&amp;#x76D1;&amp;#x6D4B;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x88AB;&amp;#x52A8;&amp;#x76D1;&amp;#x6D4B;&quot;&gt;&lt;/a&gt;&amp;#x88AB;&amp;#x52A8;&amp;#x76D1;&amp;#x6D4B;&lt;/h2&gt;&lt;p&gt;&amp;#x88AB;&amp;#x52A8;&amp;#x76D1;&amp;#x6D4B;&amp;#x7684;&amp;#x76EE;&amp;#x7684;&amp;#x662F;&amp;#xFF0C;&amp;#x8BA9;&amp;#x56FE;&amp;#x5728;&amp;#x52A0;&amp;#x8F7D;&amp;#x7684;&amp;#x8FC7;&amp;#x7A0B;&amp;#x4E2D;&amp;#xFF0C;&amp;#x81EA;&amp;#x52A8;&amp;#x83B7;&amp;#x53D6;&amp;#x5230;&amp;#x52A0;&amp;#x8F7D;&amp;#x56FE;&amp;#x7247;&amp;#x7684;&amp;#x5927;&amp;#x5C0F;&amp;#x3002;&amp;#x6240;&amp;#x4EE5;&amp;#x5207;&amp;#x5165;&amp;#x7684;&amp;#x65F6;&amp;#x673A;&amp;#x5C31;&amp;#x975E;&amp;#x5E38;&amp;#x91CD;&amp;#x8981;&amp;#x3002;&lt;/p&gt;
&lt;h3 id=&quot;&amp;#x5728;&amp;#x7B2C;&amp;#x4E09;&amp;#x65B9;&amp;#x56FE;&amp;#x7247;&amp;#x52A0;&amp;#x8F7D;&amp;#x5E93;&amp;#x56DE;&amp;#x8C03;&amp;#x4E2D;&amp;#x8FDB;&amp;#x884C;&amp;#x5927;&amp;#x56FE;&amp;#x76D1;&amp;#x6D4B;&quot;&gt;&lt;a href=&quot;#&amp;#x5728;&amp;#x7B2C;&amp;#x4E09;&amp;#x65B9;&amp;#x56FE;&amp;#x7247;&amp;#x52A0;&amp;#x8F7D;&amp;#x5E93;&amp;#x56DE;&amp;#x8C03;&amp;#x4E2D;&amp;#x8FDB;&amp;#x884C;&amp;#x5927;&amp;#x56FE;&amp;#x76D1;&amp;#x6D4B;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5728;&amp;#x7B2C;&amp;#x4E09;&amp;#x65B9;&amp;#x56FE;&amp;#x7247;&amp;#x52A0;&amp;#x8F7D;&amp;#x5E93;&amp;#x56DE;&amp;#x8C03;&amp;#x4E2D;&amp;#x8FDB;&amp;#x884C;&amp;#x5927;&amp;#x56FE;&amp;#x76D1;&amp;#x6D4B;&quot;&gt;&lt;/a&gt;&amp;#x5728;&amp;#x7B2C;&amp;#x4E09;&amp;#x65B9;&amp;#x56FE;&amp;#x7247;&amp;#x52A0;&amp;#x8F7D;&amp;#x5E93;&amp;#x56DE;&amp;#x8C03;&amp;#x4E2D;&amp;#x8FDB;&amp;#x884C;&amp;#x5927;&amp;#x56FE;&amp;#x76D1;&amp;#x6D4B;&lt;/h3&gt;&lt;p&gt;&amp;#x5982;&amp;#x679C;&amp;#x4F60;&amp;#x4F7F;&amp;#x7528;&amp;#x7684;&amp;#x662F;&amp;#x7B2C;&amp;#x4E09;&amp;#x65B9;&amp;#x56FE;&amp;#x7247;&amp;#x52A0;&amp;#x8F7D;&amp;#x5E93;&lt;code&gt;Glide&lt;/code&gt;&amp;#xFF0C;&amp;#x6700;&amp;#x7B80;&amp;#x5355;&amp;#x7684;&amp;#x76F4;&amp;#x63A5;&amp;#x7684;&amp;#x662F;&amp;#x5728;&amp;#x56FE;&amp;#x7247;&amp;#x52A0;&amp;#x8F7D;&amp;#x7684;&amp;#x6210;&amp;#x529F;&amp;#x7684;&amp;#x65F6;&amp;#x673A;&amp;#x8FDB;&amp;#x884C;&amp;#x76D1;&amp;#x6D4B;&amp;#x3002;&lt;br&gt;&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;22&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;23&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;24&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;25&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;26&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;27&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;28&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;29&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;30&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;31&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;32&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;33&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;34&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;35&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;36&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;37&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;38&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;39&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;40&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;41&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;42&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;43&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;44&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;45&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;46&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;47&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;48&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;49&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;GlideImageLoader&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;loadWithLargeImageCheck&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(context: &lt;span class=&quot;type&quot;&gt;Context&lt;/span&gt;, url: &lt;span class=&quot;type&quot;&gt;String&lt;/span&gt;, target: &lt;span class=&quot;type&quot;&gt;ImageView&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        Glide.with(context)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            .asBitmap()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            .load(url)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            .listener(&lt;span class=&quot;keyword&quot;&gt;object&lt;/span&gt; : RequestListener&amp;lt;Bitmap&amp;gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;onLoadFailed&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;params&quot;&gt;                    e: &lt;span class=&quot;type&quot;&gt;GlideException&lt;/span&gt;?,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;params&quot;&gt;                    model: &lt;span class=&quot;type&quot;&gt;Any&lt;/span&gt;?,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;params&quot;&gt;                    target: &lt;span class=&quot;type&quot;&gt;Target&lt;/span&gt;&amp;lt;&lt;span class=&quot;type&quot;&gt;Bitmap&lt;/span&gt;&amp;gt;?,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;params&quot;&gt;                    isFirstResource: &lt;span class=&quot;type&quot;&gt;Boolean&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;params&quot;&gt;                )&lt;/span&gt;&lt;/span&gt;: &lt;span class=&quot;built_in&quot;&gt;Boolean&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                    &lt;span class=&quot;comment&quot;&gt;// &amp;#x56FE;&amp;#x7247;&amp;#x52A0;&amp;#x8F7D;&amp;#x5931;&amp;#x8D25;&amp;#x5904;&amp;#x7406;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                    &lt;span class=&quot;comment&quot;&gt;// ...&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                    &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;literal&quot;&gt;false&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;onResourceReady&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;params&quot;&gt;                    resource: &lt;span class=&quot;type&quot;&gt;Bitmap&lt;/span&gt;?,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;params&quot;&gt;                    model: &lt;span class=&quot;type&quot;&gt;Any&lt;/span&gt;?,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;params&quot;&gt;                    target: &lt;span class=&quot;type&quot;&gt;Target&lt;/span&gt;&amp;lt;&lt;span class=&quot;type&quot;&gt;Bitmap&lt;/span&gt;&amp;gt;?,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;params&quot;&gt;                    dataSource: &lt;span class=&quot;type&quot;&gt;DataSource&lt;/span&gt;?,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;params&quot;&gt;                    isFirstResource: &lt;span class=&quot;type&quot;&gt;Boolean&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;params&quot;&gt;                )&lt;/span&gt;&lt;/span&gt;: &lt;span class=&quot;built_in&quot;&gt;Boolean&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                    &lt;span class=&quot;comment&quot;&gt;// &amp;#x56FE;&amp;#x7247;&amp;#x52A0;&amp;#x8F7D;&amp;#x6210;&amp;#x529F;&amp;#xFF0C;&amp;#x68C0;&amp;#x67E5;&amp;#x662F;&amp;#x5426;&amp;#x4E3A;&amp;#x5927;&amp;#x56FE;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                    resource?.let {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                        &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; imageSize = calculateImageSize(it)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                        &lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt; (imageSize &amp;gt; LARGE_IMAGE_THRESHOLD) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                            &lt;span class=&quot;comment&quot;&gt;// &amp;#x5904;&amp;#x7406;&amp;#x5927;&amp;#x56FE;&amp;#x903B;&amp;#x8F91;&amp;#xFF0C;&amp;#x5982;&amp;#x538B;&amp;#x7F29;&amp;#x3001;&amp;#x88C1;&amp;#x526A;&amp;#x6216;&amp;#x5F02;&amp;#x6B65;&amp;#x52A0;&amp;#x8F7D;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                            handleLargeImage(it)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                    &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;literal&quot;&gt;false&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            })&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            .into(target)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;calculateImageSize&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(image: &lt;span class=&quot;type&quot;&gt;Bitmap&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;: &lt;span class=&quot;built_in&quot;&gt;Int&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x8BA1;&amp;#x7B97;&amp;#x56FE;&amp;#x7247;&amp;#x5360;&amp;#x7528;&amp;#x7684;&amp;#x5185;&amp;#x5B58;&amp;#x5927;&amp;#x5C0F;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; image.width * image.height * (image.config.bitsPerPixel / &lt;span class=&quot;number&quot;&gt;8&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;handleLargeImage&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(image: &lt;span class=&quot;type&quot;&gt;Bitmap&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x5B9E;&amp;#x73B0;&amp;#x5927;&amp;#x56FE;&amp;#x7684;&amp;#x5904;&amp;#x7406;&amp;#x903B;&amp;#x8F91;&amp;#xFF0C;&amp;#x4F8B;&amp;#x5982;&amp;#x538B;&amp;#x7F29;&amp;#x3001;&amp;#x88C1;&amp;#x526A;&amp;#x6216;&amp;#x5F02;&amp;#x6B65;&amp;#x52A0;&amp;#x8F7D;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// ...&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;&lt;/p&gt;
&lt;p&gt;&amp;#x4F46;&amp;#x4E0A;&amp;#x9762;&amp;#x8FD9;&amp;#x79CD;&amp;#x65B9;&amp;#x5F0F;&amp;#x5B58;&amp;#x5728;&amp;#x51E0;&amp;#x4E2A;&amp;#x5F0A;&amp;#x7AEF;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&amp;#x9002;&amp;#x7528;&amp;#x6027;&amp;#x4F4E;&amp;#xFF0C;&amp;#x5F3A;&amp;#x5236;&amp;#x8981;&amp;#x6C42;&amp;#x6240;&amp;#x4EE5;&amp;#x56FE;&amp;#x7247;&amp;#x52A0;&amp;#x8F7D;&amp;#x90FD;&amp;#x8981;&amp;#x8C03;&amp;#x7528;&lt;code&gt;loadWithLargeImageCheck&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#xFF0C;&amp;#x5982;&amp;#x679C;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x73B0;&amp;#x6709;&amp;#x7684;&amp;#x5927;&amp;#x9879;&amp;#x76EE;&amp;#xFF0C;&amp;#x5C06;&amp;#x65E0;&amp;#x6CD5;&amp;#x6539;&amp;#x9020;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x5F3A;&amp;#x4F9D;&amp;#x8D56;&amp;#x4E8E;&amp;#x7B2C;&amp;#x4E09;&amp;#x65B9;&amp;#x52A0;&amp;#x8F7D;&amp;#x5E93;&lt;code&gt;Glide&lt;/code&gt;&amp;#xFF0C;&amp;#x540E;&amp;#x7EED;&amp;#x6362;&amp;#x5E93;&amp;#x4E5F;&amp;#x4E0D;&amp;#x517C;&amp;#x5BB9;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;#x6240;&amp;#x4EE5;&amp;#x4E3A;&amp;#x4E86;&amp;#x89E3;&amp;#x51B3;&amp;#x4E0A;&amp;#x9762;&amp;#x7684;&amp;#x8FD9;&amp;#x51E0;&amp;#x4E2A;&amp;#x95EE;&amp;#x9898;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x8981;&amp;#x60F3;&amp;#x7684;&amp;#x662F;&amp;#xFF0C;&amp;#x80FD;&amp;#x5426;&amp;#x4E0D;&amp;#x4F9D;&amp;#x8D56;&amp;#x4E8E;&amp;#x7B2C;&amp;#x4E09;&amp;#x65B9;&amp;#x56FE;&amp;#x7247;&amp;#x52A0;&amp;#x8F7D;&amp;#x5E93;&amp;#x5462;&amp;#xFF1F;&lt;/p&gt;
&lt;p&gt;&amp;#x4E8E;&amp;#x662F;&amp;#x5C31;&amp;#x6709;&amp;#x4E86;&amp;#x4E0B;&amp;#x9762;&amp;#x8FD9;&amp;#x79CD;&amp;#x65B9;&amp;#x5F0F;&lt;/p&gt;
&lt;h3 id=&quot;&amp;#x5728;&amp;#x7F51;&amp;#x7EDC;&amp;#x52A0;&amp;#x8F7D;&amp;#x56FE;&amp;#x7247;&amp;#x65F6;&amp;#x8FDB;&amp;#x884C;&amp;#x5927;&amp;#x56FE;&amp;#x76D1;&amp;#x6D4B;&quot;&gt;&lt;a href=&quot;#&amp;#x5728;&amp;#x7F51;&amp;#x7EDC;&amp;#x52A0;&amp;#x8F7D;&amp;#x56FE;&amp;#x7247;&amp;#x65F6;&amp;#x8FDB;&amp;#x884C;&amp;#x5927;&amp;#x56FE;&amp;#x76D1;&amp;#x6D4B;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5728;&amp;#x7F51;&amp;#x7EDC;&amp;#x52A0;&amp;#x8F7D;&amp;#x56FE;&amp;#x7247;&amp;#x65F6;&amp;#x8FDB;&amp;#x884C;&amp;#x5927;&amp;#x56FE;&amp;#x76D1;&amp;#x6D4B;&quot;&gt;&lt;/a&gt;&amp;#x5728;&amp;#x7F51;&amp;#x7EDC;&amp;#x52A0;&amp;#x8F7D;&amp;#x56FE;&amp;#x7247;&amp;#x65F6;&amp;#x8FDB;&amp;#x884C;&amp;#x5927;&amp;#x56FE;&amp;#x76D1;&amp;#x6D4B;&lt;/h3&gt;&lt;p&gt;&amp;#x73B0;&amp;#x5728;&amp;#x4F7F;&amp;#x7528;&amp;#x7F51;&amp;#x7EDC;&amp;#x8BF7;&amp;#x6C42;&amp;#x57FA;&amp;#x672C;&amp;#x90FD;&amp;#x662F;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;Okhttp&lt;/code&gt;&amp;#xFF0C;&amp;#x5728;&amp;#x8FD9;&amp;#x79CD;&amp;#x60C5;&amp;#x51B5;&amp;#x4E0B;&amp;#xFF0C;&amp;#x4F60;&amp;#x53EF;&amp;#x4EE5;&amp;#x8003;&amp;#x8651;&amp;#x4F7F;&amp;#x7528;&amp;#x62E6;&amp;#x622A;&amp;#x5668;&amp;#xFF08;Interceptor&amp;#xFF09;&amp;#x6765;&amp;#x5B9E;&amp;#x73B0;&amp;#x901A;&amp;#x7528;&amp;#x7684;&amp;#x5927;&amp;#x56FE;&amp;#x76D1;&amp;#x6D4B;&amp;#x903B;&amp;#x8F91;&amp;#x3002;&amp;#x62E6;&amp;#x622A;&amp;#x5668;&amp;#x662F;&lt;code&gt;OkHttp&lt;/code&gt; &amp;#x4E2D;&amp;#x7684;&amp;#x4E00;&amp;#x79CD;&amp;#x5F3A;&amp;#x5927;&amp;#x7684;&amp;#x673A;&amp;#x5236;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x5728;&amp;#x8BF7;&amp;#x6C42;&amp;#x53D1;&amp;#x8D77;&amp;#x548C;&amp;#x54CD;&amp;#x5E94;&amp;#x8FD4;&amp;#x56DE;&amp;#x7684;&amp;#x8FC7;&amp;#x7A0B;&amp;#x4E2D;&amp;#x8FDB;&amp;#x884C;&amp;#x62E6;&amp;#x622A;&amp;#x3001;&amp;#x4FEE;&amp;#x6539;&amp;#x548C;&amp;#x76D1;&amp;#x6D4B;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x4EE5;&amp;#x4E0B;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;OkHttp&lt;/code&gt;&amp;#x62E6;&amp;#x622A;&amp;#x5668;&amp;#x8FDB;&amp;#x884C;&amp;#x5927;&amp;#x56FE;&amp;#x76D1;&amp;#x6D4B;&amp;#x7684;&amp;#x793A;&amp;#x4F8B;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;22&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;23&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;24&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;25&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;26&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;27&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;28&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;29&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;30&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;31&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;32&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;33&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;34&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;35&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;36&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;37&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;38&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;39&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;40&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;41&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;42&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;43&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;import&lt;/span&gt; okhttp3.Interceptor&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;import&lt;/span&gt; okhttp3.OkHttpClient&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;import&lt;/span&gt; okhttp3.Response&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;import&lt;/span&gt; java.io.IOException&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;LargeImageInterceptor&lt;/span&gt; : &lt;span class=&quot;type&quot;&gt;Interceptor {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;meta&quot;&gt;@Throws(IOException::class)&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;intercept&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(chain: &lt;span class=&quot;type&quot;&gt;Interceptor&lt;/span&gt;.&lt;span class=&quot;type&quot;&gt;Chain&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;: Response {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; request = chain.request()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x53D1;&amp;#x8D77;&amp;#x8BF7;&amp;#x6C42;&amp;#x524D;&amp;#x7684;&amp;#x5904;&amp;#x7406;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x5728;&amp;#x8FD9;&amp;#x91CC;&amp;#x8BB0;&amp;#x5F55;&amp;#x8BF7;&amp;#x6C42;&amp;#x65F6;&amp;#x95F4;&amp;#x7B49;&amp;#x4FE1;&amp;#x606F;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; response = chain.proceed(request)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x8BF7;&amp;#x6C42;&amp;#x8FD4;&amp;#x56DE;&amp;#x540E;&amp;#x7684;&amp;#x5904;&amp;#x7406;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt; (response.isSuccessful) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; contentType = response.body()?.contentType()?.toString()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;comment&quot;&gt;// &amp;#x68C0;&amp;#x67E5;&amp;#x662F;&amp;#x5426;&amp;#x4E3A;&amp;#x56FE;&amp;#x7247;&amp;#x8D44;&amp;#x6E90;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt; (contentType?.startsWith(&lt;span class=&quot;string&quot;&gt;&amp;quot;image/&amp;quot;&lt;/span&gt;) == &lt;span class=&quot;literal&quot;&gt;true&lt;/span&gt;) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;comment&quot;&gt;// &amp;#x83B7;&amp;#x53D6;&amp;#x56FE;&amp;#x7247;&amp;#x5927;&amp;#x5C0F;&amp;#x5E76;&amp;#x8FDB;&amp;#x884C;&amp;#x5927;&amp;#x56FE;&amp;#x76D1;&amp;#x6D4B;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; imageSize = calculateImageSize(response.body()?.byteStream())&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt; (imageSize &amp;gt; LARGE_IMAGE_THRESHOLD) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                    &lt;span class=&quot;comment&quot;&gt;// &amp;#x5904;&amp;#x7406;&amp;#x5927;&amp;#x56FE;&amp;#x903B;&amp;#x8F91;&amp;#xFF0C;&amp;#x5982;&amp;#x538B;&amp;#x7F29;&amp;#x3001;&amp;#x88C1;&amp;#x526A;&amp;#x6216;&amp;#x5F02;&amp;#x6B65;&amp;#x52A0;&amp;#x8F7D;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                    handleLargeImage()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; response&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;calculateImageSize&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(inputStream: &lt;span class=&quot;type&quot;&gt;InputStream&lt;/span&gt;?)&lt;/span&gt;&lt;/span&gt;: &lt;span class=&quot;built_in&quot;&gt;Int&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x901A;&amp;#x8FC7;&amp;#x8F93;&amp;#x5165;&amp;#x6D41;&amp;#x8BA1;&amp;#x7B97;&amp;#x56FE;&amp;#x7247;&amp;#x5360;&amp;#x7528;&amp;#x7684;&amp;#x5185;&amp;#x5B58;&amp;#x5927;&amp;#x5C0F;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// ...&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;handleLargeImage&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x5B9E;&amp;#x73B0;&amp;#x5927;&amp;#x56FE;&amp;#x7684;&amp;#x5904;&amp;#x7406;&amp;#x903B;&amp;#x8F91;&amp;#xFF0C;&amp;#x4F8B;&amp;#x5982;&amp;#x538B;&amp;#x7F29;&amp;#x3001;&amp;#x88C1;&amp;#x526A;&amp;#x6216;&amp;#x5F02;&amp;#x6B65;&amp;#x52A0;&amp;#x8F7D;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// ...&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x7136;&amp;#x540E;&amp;#xFF0C;&amp;#x5728;&amp;#x521B;&amp;#x5EFA;&lt;code&gt;OkHttpClient&lt;/code&gt;&amp;#x65F6;&amp;#xFF0C;&amp;#x6DFB;&amp;#x52A0;&amp;#x8FD9;&amp;#x4E2A;&amp;#x62E6;&amp;#x622A;&amp;#x5668;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; okHttpClient = OkHttpClient.Builder()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    .addInterceptor(LargeImageInterceptor())&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    .build()&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x901A;&amp;#x8FC7;&amp;#x8FD9;&amp;#x79CD;&amp;#x65B9;&amp;#x5F0F;&amp;#xFF0C;&amp;#x4F60;&amp;#x53EA;&amp;#x9700;&amp;#x8981;&amp;#x5728;&lt;code&gt;OkHttp&lt;/code&gt;&amp;#x4E2D;&amp;#x6DFB;&amp;#x52A0;&amp;#x4E00;&amp;#x6B21;&amp;#x62E6;&amp;#x622A;&amp;#x5668;&amp;#xFF0C;&amp;#x5373;&amp;#x53EF;&amp;#x5728;&amp;#x6BCF;&amp;#x4E2A;&amp;#x56FE;&amp;#x7247;&amp;#x8BF7;&amp;#x6C42;&amp;#x4E2D;&amp;#x8FDB;&amp;#x884C;&amp;#x901A;&amp;#x7528;&amp;#x7684;&amp;#x5927;&amp;#x56FE;&amp;#x76D1;&amp;#x6D4B;&amp;#x5904;&amp;#x7406;&amp;#xFF0C;&amp;#x800C;&amp;#x4E0D;&amp;#x7528;&amp;#x5728;&amp;#x6BCF;&amp;#x4E2A;&amp;#x8BF7;&amp;#x6C42;&amp;#x7684;&amp;#x54CD;&amp;#x5E94;&amp;#x56DE;&amp;#x8C03;&amp;#x4E2D;&amp;#x6DFB;&amp;#x52A0;&amp;#x76D1;&amp;#x6D4B;&amp;#x4EE3;&amp;#x7801;&amp;#x3002;&amp;#x8FD9;&amp;#x6837;&amp;#x4F7F;&amp;#x5F97;&amp;#x4EE3;&amp;#x7801;&amp;#x66F4;&amp;#x52A0;&amp;#x6E05;&amp;#x6670;&amp;#x3001;&amp;#x6613;&amp;#x4E8E;&amp;#x7EF4;&amp;#x62A4;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x53EF;&amp;#x80FD;&amp;#x53C8;&amp;#x6709;&amp;#x4EBA;&amp;#x4F1A;&amp;#x8BF4;&amp;#xFF0C;&amp;#x6211;&amp;#x7F51;&amp;#x7EDC;&amp;#x52A0;&amp;#x8F7D;&amp;#x5E93;&amp;#x6362;&amp;#x4E86;&amp;#xFF0C;&amp;#x90A3;&amp;#x4E0D;&amp;#x662F;&amp;#x4E00;&amp;#x6837;&amp;#x65E0;&amp;#x6CD5;&amp;#x517C;&amp;#x5BB9;&amp;#x5417;&amp;#xFF1F;&lt;/p&gt;
&lt;p&gt;&amp;#x786E;&amp;#x5B9E;&amp;#xFF0C;&amp;#x867D;&amp;#x7136;&amp;#x6982;&amp;#x7387;&amp;#x6BD4;&amp;#x76F4;&amp;#x63A5;&amp;#x6362;&amp;#x7B2C;&amp;#x4E09;&amp;#x65B9;&amp;#x56FE;&amp;#x7247;&amp;#x52A0;&amp;#x8F7D;&amp;#x5E93;&amp;#x8FD8;&amp;#x4F4E;&amp;#xFF0C;&amp;#x4F46;&amp;#x65E2;&amp;#x7136;&amp;#x6709;&amp;#x53EF;&amp;#x80FD;&amp;#xFF0C;&amp;#x5C31;&amp;#x8981;&amp;#x5C3D;&amp;#x53EF;&amp;#x80FD;&amp;#x7684;&amp;#x89E3;&amp;#x51B3;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x4E8E;&amp;#x662F;&amp;#x5C31;&amp;#x662F;&amp;#x4E86;&amp;#x4E0B;&amp;#x9762;&amp;#x7684;&amp;#x8FD9;&amp;#x79CD;&amp;#x7EC8;&amp;#x6781;&amp;#x65B9;&amp;#x6CD5;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x4F7F;&amp;#x7528;ASM&amp;#x63D2;&amp;#x6869;&amp;#x8FDB;&amp;#x884C;&amp;#x5927;&amp;#x56FE;&amp;#x76D1;&amp;#x63A7;&quot;&gt;&lt;a href=&quot;#&amp;#x4F7F;&amp;#x7528;ASM&amp;#x63D2;&amp;#x6869;&amp;#x8FDB;&amp;#x884C;&amp;#x5927;&amp;#x56FE;&amp;#x76D1;&amp;#x63A7;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4F7F;&amp;#x7528;ASM&amp;#x63D2;&amp;#x6869;&amp;#x8FDB;&amp;#x884C;&amp;#x5927;&amp;#x56FE;&amp;#x76D1;&amp;#x63A7;&quot;&gt;&lt;/a&gt;&amp;#x4F7F;&amp;#x7528;ASM&amp;#x63D2;&amp;#x6869;&amp;#x8FDB;&amp;#x884C;&amp;#x5927;&amp;#x56FE;&amp;#x76D1;&amp;#x63A7;&lt;/h2&gt;&lt;p&gt;&amp;#x8FD9;&amp;#x5C31;&amp;#x5347;&amp;#x7EA7;&amp;#x5230;&amp;#x56FE;&amp;#x7247;&amp;#x52A0;&amp;#x8F7D;&amp;#x7684;&amp;#x672C;&amp;#x8D28;&amp;#x4E86;&amp;#xFF0C;&amp;#x4EFB;&amp;#x4F55;&amp;#x56FE;&amp;#x7247;&amp;#x52A0;&amp;#x8F7D;&amp;#x6700;&amp;#x7EC8;&amp;#x90FD;&amp;#x662F;&amp;#x8981;&amp;#x586B;&amp;#x5145;&amp;#x5230;&lt;code&gt;ImageView&lt;/code&gt;&amp;#x4E0A;&amp;#x3002;&amp;#x800C;&amp;#x5728;&amp;#x8FD9;&amp;#x8FC7;&amp;#x7A0B;&amp;#x4E2D;&amp;#x81EA;&amp;#x7136;&amp;#x907F;&amp;#x514D;&amp;#x4E0D;&amp;#x4E86;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;ImageView&lt;/code&gt;&amp;#x7684;&amp;#x65B9;&amp;#x6CD5;&amp;#x8FDB;&amp;#x884C;&amp;#x586B;&amp;#x5145;&amp;#x56FE;&amp;#x7247;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x4F8B;&amp;#x5982;&amp;#xFF1A;&lt;code&gt;setImageDrawable&lt;/code&gt;&amp;#x7B49;&amp;#x7B49;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x5F53;&amp;#x7136;&amp;#x4E5F;&amp;#x53EF;&amp;#x4EE5;&amp;#x76F4;&amp;#x63A5;&lt;code&gt;hook&lt;/code&gt;&amp;#x6574;&amp;#x4E2A;&lt;code&gt;ImageView&lt;/code&gt;&amp;#xFF0C;&amp;#x5168;&amp;#x5C40;&amp;#x5C06;&amp;#x5176;&amp;#x66FF;&amp;#x6362;&amp;#x6210;&lt;code&gt;HookImageView&lt;/code&gt;&amp;#xFF0C;&amp;#x518D;&amp;#x5230;&amp;#x5176;&amp;#x5185;&amp;#x90E8;&amp;#x5B9E;&amp;#x73B0;&amp;#x5927;&amp;#x56FE;&amp;#x76D1;&amp;#x6D4B;&amp;#x3002;&lt;br&gt;&amp;#x8FD9;&amp;#x4E24;&amp;#x79CD;&amp;#x90FD;&amp;#x662F;&amp;#x901A;&amp;#x8FC7;&lt;code&gt;ASM&lt;/code&gt;&amp;#xFF0C;&amp;#x53EA;&amp;#x662F;&amp;#x5BF9;&amp;#x8C61;&amp;#x4E0D;&amp;#x4E00;&amp;#x6837;&amp;#xFF0C;&amp;#x4F46;&amp;#x539F;&amp;#x7406;&amp;#x90FD;&amp;#x57FA;&amp;#x672C;&amp;#x4E00;&amp;#x81F4;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x4EE5;&amp;#x4E0B;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x7B80;&amp;#x5355;&amp;#x7684;&amp;#x793A;&amp;#x4F8B;&amp;#xFF0C;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;ASM&lt;/code&gt;&amp;#x5BF9;&lt;code&gt;Android&lt;/code&gt;&amp;#x4E2D;&amp;#x7684; &lt;code&gt;ImageView&lt;/code&gt; &amp;#x7684; &lt;code&gt;setImageDrawable&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x8FDB;&amp;#x884C;&amp;#x62E6;&amp;#x622A;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;22&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;23&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;24&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;25&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;26&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;27&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;28&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;29&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;30&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;31&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;32&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;33&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;34&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;35&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;36&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;37&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;38&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;39&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;40&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;41&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;42&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;43&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;44&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;45&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;46&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;47&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;48&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;49&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;50&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;51&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;52&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;import&lt;/span&gt; org.objectweb.asm.*;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;ImageViewInterceptor&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;implements&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;ClassVisitor&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;final&lt;/span&gt; ClassVisitor cv;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;ImageViewInterceptor&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(ClassVisitor cv)&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;this&lt;/span&gt;.cv = cv;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;meta&quot;&gt;@Override&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt; MethodVisitor &lt;span class=&quot;title&quot;&gt;visitMethod&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(&lt;span class=&quot;keyword&quot;&gt;int&lt;/span&gt; access, String name, String desc, String signature, String[] exceptions)&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        MethodVisitor mv = cv.visitMethod(access, name, desc, signature, exceptions);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt; (name.equals(&lt;span class=&quot;string&quot;&gt;&amp;quot;setImageDrawable&amp;quot;&lt;/span&gt;) &amp;amp;&amp;amp; desc.equals(&lt;span class=&quot;string&quot;&gt;&amp;quot;(Landroid/graphics/drawable/Drawable;)V&amp;quot;&lt;/span&gt;)) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt; ImageViewMethodVisitor(mv);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; mv;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x5176;&amp;#x4ED6;&amp;#x65B9;&amp;#x6CD5;&amp;#x7701;&amp;#x7565;&amp;#xFF0C;&amp;#x4F60;&amp;#x53EF;&amp;#x4EE5;&amp;#x6839;&amp;#x636E;&amp;#x9700;&amp;#x8981;&amp;#x5B9E;&amp;#x73B0;&amp;#x5176;&amp;#x4ED6; visitX &amp;#x65B9;&amp;#x6CD5;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;ImageViewMethodVisitor&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;MethodVisitor&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;ImageViewMethodVisitor&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(MethodVisitor mv)&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;super&lt;/span&gt;(Opcodes.ASM5, mv);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;meta&quot;&gt;@Override&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;visitCode&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;super&lt;/span&gt;.visitCode();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x5728;&amp;#x65B9;&amp;#x6CD5;&amp;#x5F00;&amp;#x5934;&amp;#x63D2;&amp;#x5165;&amp;#x5927;&amp;#x56FE;&amp;#x76D1;&amp;#x6D4B;&amp;#x903B;&amp;#x8F91;&amp;#x7684;&amp;#x5B57;&amp;#x8282;&amp;#x7801;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// ...&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;meta&quot;&gt;@Override&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;visitInsn&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(&lt;span class=&quot;keyword&quot;&gt;int&lt;/span&gt; opcode)&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt; (opcode == Opcodes.RETURN) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;comment&quot;&gt;// &amp;#x5728; RETURN &amp;#x6307;&amp;#x4EE4;&amp;#x524D;&amp;#x63D2;&amp;#x5165;&amp;#x5927;&amp;#x56FE;&amp;#x76D1;&amp;#x6D4B;&amp;#x903B;&amp;#x8F91;&amp;#x7684;&amp;#x5B57;&amp;#x8282;&amp;#x7801;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;comment&quot;&gt;// ...&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;super&lt;/span&gt;.visitInsn(opcode);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x5728;&amp;#x67D0;&amp;#x5904;&amp;#xFF0C;&amp;#x4F7F;&amp;#x7528; ASM &amp;#x8FDB;&amp;#x884C;&amp;#x5B57;&amp;#x8282;&amp;#x7801;&amp;#x4FEE;&amp;#x6539;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;ClassReader cr = &lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt; ClassReader(&lt;span class=&quot;string&quot;&gt;&amp;quot;android/widget/ImageView&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;ClassWriter cw = &lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt; ClassWriter(ClassWriter.COMPUTE_MAXS);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;ImageViewInterceptor interceptor = &lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt; ImageViewInterceptor(cw);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;cr.accept(interceptor, &lt;span class=&quot;number&quot;&gt;0&lt;/span&gt;);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;....&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x8FD9;&amp;#x4E2A;&amp;#x793A;&amp;#x4F8B;&amp;#x4E2D;&amp;#xFF0C;&lt;code&gt;ImageViewInterceptor&lt;/code&gt; &amp;#x5BF9; &lt;code&gt;ImageView&lt;/code&gt; &amp;#x7684; &lt;code&gt;setImageDrawable&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x8FDB;&amp;#x884C;&amp;#x4E86;&amp;#x62E6;&amp;#x622A;&amp;#xFF0C;&lt;code&gt;ImageViewMethodVisitor&lt;/code&gt; &amp;#x4E2D;&amp;#x63D2;&amp;#x5165;&amp;#x4E86;&amp;#x5927;&amp;#x56FE;&amp;#x76D1;&amp;#x6D4B;&amp;#x903B;&amp;#x8F91;&amp;#x7684;&amp;#x5B57;&amp;#x8282;&amp;#x7801;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x9700;&amp;#x8981;&amp;#x6CE8;&amp;#x610F;&amp;#x7684;&amp;#x662F;&amp;#x3002;&amp;#x5728;&amp;#x5B9E;&amp;#x9645;&amp;#x5E94;&amp;#x7528;&amp;#x4E2D;&amp;#xFF0C;&amp;#x9700;&amp;#x8C28;&amp;#x614E;&amp;#x8003;&amp;#x8651;&amp;#x56E0;&amp;#x5B57;&amp;#x8282;&amp;#x7801;&amp;#x64CD;&amp;#x4F5C;&amp;#x800C;&amp;#x5F15;&amp;#x8D77;&amp;#x7684;&amp;#x6F5C;&amp;#x5728;&amp;#x95EE;&amp;#x9898;&amp;#x548C;&amp;#x517C;&amp;#x5BB9;&amp;#x6027;&amp;#x98CE;&amp;#x9669;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&amp;#x4E0E;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&quot;&gt;&lt;a href=&quot;#&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&amp;#x4E0E;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&amp;#x4E0E;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&quot;&gt;&lt;/a&gt;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&amp;#x4E0E;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&lt;/h2&gt;&lt;p&gt;&amp;#x5728;&amp;#x5B9E;&amp;#x73B0;&amp;#x5927;&amp;#x56FE;&amp;#x76D1;&amp;#x6D4B;&amp;#x65F6;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x9700;&amp;#x8981;&amp;#x6CE8;&amp;#x610F;&amp;#x4EE5;&amp;#x4E0B;&amp;#x4E8B;&amp;#x9879;&amp;#xFF1A;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x7075;&amp;#x6D3B;&amp;#x8BBE;&amp;#x7F6E;&amp;#x9608;&amp;#x503C;&amp;#xFF1A;&lt;/strong&gt; &amp;#x6839;&amp;#x636E;&amp;#x4E0D;&amp;#x540C;&amp;#x8BBE;&amp;#x5907;&amp;#x548C;&amp;#x5E94;&amp;#x7528;&amp;#x573A;&amp;#x666F;&amp;#xFF0C;&amp;#x52A8;&amp;#x6001;&amp;#x8C03;&amp;#x6574;&amp;#x5927;&amp;#x56FE;&amp;#x7684;&amp;#x9608;&amp;#x503C;&amp;#xFF0C;&amp;#x4EE5;&amp;#x4FDD;&amp;#x8BC1;&amp;#x76D1;&amp;#x6D4B;&amp;#x7684;&amp;#x51C6;&amp;#x786E;&amp;#x6027;&amp;#x548C;&amp;#x53CA;&amp;#x65F6;&amp;#x6027;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x5408;&amp;#x7406;&amp;#x9009;&amp;#x62E9;&amp;#x5904;&amp;#x7406;&amp;#x65B9;&amp;#x5F0F;&amp;#xFF1A;&lt;/strong&gt; &amp;#x5BF9;&amp;#x4E8E;&amp;#x5927;&amp;#x56FE;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x9009;&amp;#x62E9;&amp;#x5408;&amp;#x9002;&amp;#x7684;&amp;#x5904;&amp;#x7406;&amp;#x65B9;&amp;#x5F0F;&amp;#xFF0C;&amp;#x5982;&amp;#x538B;&amp;#x7F29;&amp;#x3001;&amp;#x88C1;&amp;#x526A;&amp;#x6216;&amp;#x5F02;&amp;#x6B65;&amp;#x52A0;&amp;#x8F7D;&amp;#xFF0C;&amp;#x4EE5;&amp;#x964D;&amp;#x4F4E;&amp;#x5185;&amp;#x5B58;&amp;#x5360;&amp;#x7528;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x5F02;&amp;#x6B65;&amp;#x5904;&amp;#x7406;&amp;#xFF1A;&lt;/strong&gt; &amp;#x5C06;&amp;#x5927;&amp;#x56FE;&amp;#x7684;&amp;#x5904;&amp;#x7406;&amp;#x653E;&amp;#x5728;&amp;#x5F02;&amp;#x6B65;&amp;#x7EBF;&amp;#x7A0B;&amp;#x4E2D;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x963B;&amp;#x585E;&amp;#x4E3B;&amp;#x7EBF;&amp;#x7A0B;&amp;#xFF0C;&amp;#x63D0;&amp;#x9AD8;&amp;#x5E94;&amp;#x7528;&amp;#x7684;&amp;#x54CD;&amp;#x5E94;&amp;#x6027;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;&amp;#x603B;&amp;#x7ED3;&quot;&gt;&lt;a href=&quot;#&amp;#x603B;&amp;#x7ED3;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x603B;&amp;#x7ED3;&quot;&gt;&lt;/a&gt;&amp;#x603B;&amp;#x7ED3;&lt;/h2&gt;&lt;p&gt;&amp;#x901A;&amp;#x8FC7;&amp;#x672C;&amp;#x6587;&amp;#x7684;&amp;#x5B66;&amp;#x4E60;&amp;#xFF0C;&amp;#x76F8;&amp;#x4FE1;&amp;#x4F60;&amp;#x5DF2;&amp;#x7ECF;&amp;#x5BF9;Android&amp;#x5927;&amp;#x56FE;&amp;#x76D1;&amp;#x6D4B;&amp;#x6709;&amp;#x4E86;&amp;#x6DF1;&amp;#x5165;&amp;#x7684;&amp;#x7406;&amp;#x89E3;&amp;#xFF0C;&amp;#x5E76;&amp;#x53EF;&amp;#x4EE5;&amp;#x5728;&amp;#x5B9E;&amp;#x9645;&amp;#x9879;&amp;#x76EE;&amp;#x4E2D;&amp;#x5E94;&amp;#x7528;&amp;#x8FD9;&amp;#x4E9B;&amp;#x77E5;&amp;#x8BC6;&amp;#xFF0C;&amp;#x63D0;&amp;#x5347;&amp;#x5E94;&amp;#x7528;&amp;#x7684;&amp;#x6027;&amp;#x80FD;&amp;#x548C;&amp;#x7528;&amp;#x6237;&amp;#x4F53;&amp;#x9A8C;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;a href=&quot;#&amp;#x63A8;&amp;#x8350;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;/a&gt;&amp;#x63A8;&amp;#x8350;&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-startup&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android_startup&lt;/a&gt;: &amp;#x63D0;&amp;#x4F9B;&amp;#x4E00;&amp;#x79CD;&amp;#x5728;&amp;#x5E94;&amp;#x7528;&amp;#x542F;&amp;#x52A8;&amp;#x65F6;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x52A0;&amp;#x7B80;&amp;#x5355;&amp;#x3001;&amp;#x9AD8;&amp;#x6548;&amp;#x7684;&amp;#x65B9;&amp;#x5F0F;&amp;#x6765;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x7EC4;&amp;#x4EF6;&amp;#xFF0C;&amp;#x4F18;&amp;#x5316;&amp;#x542F;&amp;#x52A8;&amp;#x901F;&amp;#x5EA6;&amp;#x3002;&amp;#x4E0D;&amp;#x4EC5;&amp;#x652F;&amp;#x6301;Jetpack App Startup&amp;#x7684;&amp;#x5168;&amp;#x90E8;&amp;#x529F;&amp;#x80FD;&amp;#xFF0C;&amp;#x8FD8;&amp;#x63D0;&amp;#x4F9B;&amp;#x989D;&amp;#x5916;&amp;#x7684;&amp;#x540C;&amp;#x6B65;&amp;#x4E0E;&amp;#x5F02;&amp;#x6B65;&amp;#x7B49;&amp;#x5F85;&amp;#x3001;&amp;#x7EBF;&amp;#x7A0B;&amp;#x63A7;&amp;#x5236;&amp;#x4E0E;&amp;#x591A;&amp;#x8FDB;&amp;#x7A0B;&amp;#x652F;&amp;#x6301;&amp;#x7B49;&amp;#x529F;&amp;#x80FD;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/AwesomeGithub&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AwesomeGithub&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Github&amp;#x7684;&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x7EAF;&amp;#x7EC3;&amp;#x4E60;&amp;#x9879;&amp;#x76EE;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x7EC4;&amp;#x4EF6;&amp;#x5316;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x8D26;&amp;#x6237;&amp;#x5BC6;&amp;#x7801;&amp;#x4E0E;&amp;#x8BA4;&amp;#x8BC1;&amp;#x767B;&amp;#x9646;&amp;#x3002;&amp;#x4F7F;&amp;#x7528;Kotlin&amp;#x8BED;&amp;#x8A00;&amp;#x8FDB;&amp;#x884C;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x9879;&amp;#x76EE;&amp;#x67B6;&amp;#x6784;&amp;#x662F;&amp;#x57FA;&amp;#x4E8E;JetPack\&amp;amp;DataBinding&amp;#x7684;MVVM&amp;#xFF1B;&amp;#x9879;&amp;#x76EE;&amp;#x4E2D;&amp;#x4F7F;&amp;#x7528;&amp;#x4E86;Arouter&amp;#x3001;Retrofit&amp;#x3001;Coroutine&amp;#x3001;Glide&amp;#x3001;Dagger&amp;#x4E0E;Hilt&amp;#x7B49;&amp;#x6D41;&amp;#x884C;&amp;#x5F00;&amp;#x6E90;&amp;#x6280;&amp;#x672F;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/flutter_github&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;flutter_github&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Flutter&amp;#x7684;&amp;#x8DE8;&amp;#x5E73;&amp;#x53F0;&amp;#x7248;&amp;#x672C;Github&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x4E0E;AwesomeGithub&amp;#x76F8;&amp;#x5BF9;&amp;#x5E94;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-api-analysis&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android-api-analysis&lt;/a&gt;: &amp;#x7ED3;&amp;#x5408;&amp;#x8BE6;&amp;#x7EC6;&amp;#x7684;Demo&amp;#x6765;&amp;#x5168;&amp;#x9762;&amp;#x89E3;&amp;#x6790;Android&amp;#x76F8;&amp;#x5173;&amp;#x7684;&amp;#x77E5;&amp;#x8BC6;&amp;#x70B9;, &amp;#x5E2E;&amp;#x52A9;&amp;#x8BFB;&amp;#x8005;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x5FEB;&amp;#x7684;&amp;#x638C;&amp;#x63E1;&amp;#x4E0E;&amp;#x7406;&amp;#x89E3;&amp;#x6240;&amp;#x9610;&amp;#x8FF0;&amp;#x7684;&amp;#x8981;&amp;#x70B9;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/daily_algorithm&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;daily_algorithm&lt;/a&gt;: &amp;#x6BCF;&amp;#x65E5;&amp;#x4E00;&amp;#x7B97;&amp;#x6CD5;&amp;#xFF0C;&amp;#x7531;&amp;#x6D45;&amp;#x5165;&amp;#x6DF1;&amp;#xFF0C;&amp;#x6B22;&amp;#x8FCE;&amp;#x52A0;&amp;#x5165;&amp;#x4E00;&amp;#x8D77;&amp;#x5171;&amp;#x52C9;&amp;#x3002;&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;p&gt;&amp;#x5728;&lt;code&gt;Android&lt;/code&gt;&amp;#x5E94;&amp;#x7528;&amp;#x4E2D;&amp;#xFF0C;&amp;#x5927;&amp;#x56FE;&amp;#x7684;&amp;#x52A0;&amp;#x8F7D;&amp;#x548C;&amp;#x663E;&amp;#x793A;&amp;#x53EF;&amp;#x80
    
    </summary>
    
      <category term="android" scheme="https://www.rousetime.com/categories/android/"/>
    
    
      <category term="android" scheme="https://www.rousetime.com/tags/android/"/>
    
  </entry>
  
  <entry>
    <title>ThreadLocal：你不知道的优化技巧，Android开发者都在用</title>
    <link href="https://www.rousetime.com/2024/01/09/ThreadLocal%EF%BC%9A%E4%BD%A0%E4%B8%8D%E7%9F%A5%E9%81%93%E7%9A%84%E4%BC%98%E5%8C%96%E6%8A%80%E5%B7%A7%EF%BC%8CAndroid%E5%BC%80%E5%8F%91%E8%80%85%E9%83%BD%E5%9C%A8%E7%94%A8/"/>
    <id>https://www.rousetime.com/2024/01/09/ThreadLocal：你不知道的优化技巧，Android开发者都在用/</id>
    <published>2024-01-09T02:33:11.000Z</published>
    <updated>2024-01-09T02:33:44.152Z</updated>
    
    <content type="html">&lt;h2 id=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;a href=&quot;#&amp;#x5F15;&amp;#x8A00;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;/a&gt;&amp;#x5F15;&amp;#x8A00;&lt;/h2&gt;&lt;p&gt;&amp;#x5728;&lt;code&gt;Android&lt;/code&gt;&amp;#x5F00;&amp;#x53D1;&amp;#x4E2D;&amp;#xFF0C;&amp;#x591A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x5E38;&amp;#x89C1;&amp;#x7684;&amp;#x8BDD;&amp;#x9898;&amp;#x3002;&amp;#x4E3A;&amp;#x4E86;&amp;#x6709;&amp;#x6548;&amp;#x5730;&amp;#x5904;&amp;#x7406;&amp;#x591A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7684;&amp;#x5E76;&amp;#x53D1;&amp;#x95EE;&amp;#x9898;&amp;#xFF0C;&lt;code&gt;Android&lt;/code&gt;&amp;#x63D0;&amp;#x4F9B;&amp;#x4E86;&amp;#x4E00;&amp;#x4E9B;&amp;#x5DE5;&amp;#x5177;&amp;#x548C;&amp;#x673A;&amp;#x5236;&amp;#x3002;&amp;#x5176;&amp;#x4E2D;&amp;#xFF0C;&lt;code&gt;ThreadLocal&lt;/code&gt;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x5F3A;&amp;#x5927;&amp;#x7684;&amp;#x5DE5;&amp;#x5177;&amp;#xFF0C;&amp;#x5B83;&amp;#x53EF;&amp;#x4EE5;&amp;#x4F7F;&amp;#x5F97;&amp;#x6BCF;&amp;#x4E2A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x90FD;&amp;#x62E5;&amp;#x6709;&amp;#x81EA;&amp;#x5DF1;&amp;#x72EC;&amp;#x7ACB;&amp;#x7684;&amp;#x53D8;&amp;#x91CF;&amp;#x526F;&amp;#x672C;&amp;#xFF0C;&amp;#x4ECE;&amp;#x800C;&amp;#x907F;&amp;#x514D;&amp;#x4E86;&amp;#x7EBF;&amp;#x7A0B;&amp;#x5B89;&amp;#x5168;&amp;#x95EE;&amp;#x9898;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x672C;&amp;#x6587;&amp;#x5C06;&amp;#x6DF1;&amp;#x5165;&amp;#x63A2;&amp;#x8BA8;Android&amp;#x4E2D;&amp;#x7684;&lt;code&gt;ThreadLocal&lt;/code&gt;&amp;#x539F;&amp;#x7406;&amp;#x53CA;&amp;#x5176;&amp;#x4F7F;&amp;#x7528;&amp;#x6280;&amp;#x5DE7;&amp;#xFF0C; &amp;#x5E2E;&amp;#x52A9;&amp;#x4F60;&amp;#x66F4;&amp;#x597D;&amp;#x7684;&amp;#x7406;&amp;#x89E3;&amp;#x548C;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;ThreadLocal&lt;/code&gt;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;ThreadLocal&amp;#x7684;&amp;#x539F;&amp;#x7406;&quot;&gt;&lt;a href=&quot;#ThreadLocal&amp;#x7684;&amp;#x539F;&amp;#x7406;&quot; class=&quot;headerlink&quot; title=&quot;ThreadLocal&amp;#x7684;&amp;#x539F;&amp;#x7406;&quot;&gt;&lt;/a&gt;ThreadLocal&amp;#x7684;&amp;#x539F;&amp;#x7406;&lt;/h2&gt;&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;public class Thread implements Runnable {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    /* ThreadLocal values pertaining to this thread. This map is maintained&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;     * by the ThreadLocal class. */&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    ThreadLocal.ThreadLocalMap threadLocals = null;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&lt;code&gt;ThreadLocal&lt;/code&gt;&amp;#x7684;&amp;#x539F;&amp;#x7406;&amp;#x662F;&amp;#x57FA;&amp;#x4E8E;&amp;#x6BCF;&amp;#x4E2A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x90FD;&amp;#x6709;&amp;#x4E00;&amp;#x4E2A;&amp;#x72EC;&amp;#x7ACB;&amp;#x7684;&lt;code&gt;ThreadLocalMap&lt;/code&gt;&amp;#x5BF9;&amp;#x8C61;&amp;#x3002;&lt;code&gt;ThreadLocalMap&lt;/code&gt;&amp;#x5BF9;&amp;#x8C61;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&lt;code&gt;Map&lt;/code&gt;&amp;#xFF0C;&amp;#x5B83;&amp;#x7684;&amp;#x952E;&amp;#x662F;&lt;code&gt;ThreadLocal&lt;/code&gt;&amp;#x5BF9;&amp;#x8C61;&amp;#xFF0C;&amp;#x503C;&amp;#x662F;&lt;code&gt;ThreadLocal&lt;/code&gt;&amp;#x5BF9;&amp;#x8C61;&amp;#x4FDD;&amp;#x5B58;&amp;#x7684;&amp;#x503C;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;22&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;23&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;public void set(T value) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    Thread t = Thread.currentThread();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    ThreadLocalMap map = getMap(t);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    if (map != null) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        map.set(this, value);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    } else {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        createMap(t, value);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;public T get() {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    Thread t = Thread.currentThread();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    ThreadLocalMap map = getMap(t);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    if (map != null) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        ThreadLocalMap.Entry e = map.getEntry(this);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        if (e != null) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            @SuppressWarnings(&amp;quot;unchecked&amp;quot;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            T result = (T)e.value;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            return result;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    return setInitialValue();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x5F53;&amp;#x6211;&amp;#x4EEC;&amp;#x8C03;&amp;#x7528;&lt;code&gt;ThreadLocal&lt;/code&gt;&amp;#x7684;&lt;code&gt;set()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x65F6;&amp;#xFF0C;&amp;#x4F1A;&amp;#x5C06;&amp;#x503C;&amp;#x5B58;&amp;#x50A8;&amp;#x5230;&amp;#x5F53;&amp;#x524D;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7684;&lt;code&gt;ThreadLocalMap&lt;/code&gt;&amp;#x5BF9;&amp;#x8C61;&amp;#x4E2D;&amp;#x3002;&amp;#x5F53;&amp;#x6211;&amp;#x4EEC;&amp;#x8C03;&amp;#x7528;&lt;code&gt;ThreadLocal&lt;/code&gt;&amp;#x7684;&lt;code&gt;get()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x65F6;&amp;#xFF0C;&amp;#x4F1A;&amp;#x4ECE;&amp;#x5F53;&amp;#x524D;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7684;&lt;code&gt;ThreadLocalMap&lt;/code&gt;&amp;#x5BF9;&amp;#x8C61;&amp;#x4E2D;&amp;#x83B7;&amp;#x53D6;&amp;#x503C;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;ThreadLocal&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&quot;&gt;&lt;a href=&quot;#ThreadLocal&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&quot; class=&quot;headerlink&quot; title=&quot;ThreadLocal&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&quot;&gt;&lt;/a&gt;ThreadLocal&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&lt;/h2&gt;&lt;p&gt;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;ThreadLocal&lt;/code&gt;&amp;#x975E;&amp;#x5E38;&amp;#x7B80;&amp;#x5355;&amp;#xFF0C;&amp;#x9996;&amp;#x5148;&amp;#x9700;&amp;#x8981;&amp;#x521B;&amp;#x5EFA;&amp;#x4E00;&amp;#x4E2A;&lt;code&gt;ThreadLocal&lt;/code&gt;&amp;#x5BF9;&amp;#x8C61;&amp;#xFF0C;&amp;#x7136;&amp;#x540E;&amp;#x901A;&amp;#x8FC7;&lt;code&gt;set&lt;/code&gt;&amp;#x548C;&lt;code&gt;get&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x6765;&amp;#x8BBE;&amp;#x7F6E;&amp;#x548C;&amp;#x83B7;&amp;#x53D6;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7684;&amp;#x5C40;&amp;#x90E8;&amp;#x53D8;&amp;#x91CF;&amp;#x3002;&amp;#x4EE5;&amp;#x4E0B;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x7B80;&amp;#x5355;&amp;#x7684;&amp;#x4F8B;&amp;#x5B50;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; threadLocal = ThreadLocal&amp;lt;String&amp;gt;()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;setThreadName&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(name: &lt;span class=&quot;type&quot;&gt;String&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    threadLocal.&lt;span class=&quot;keyword&quot;&gt;set&lt;/span&gt;(name)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;getThreadName&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt;&lt;/span&gt;: String {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; threadLocal.&lt;span class=&quot;keyword&quot;&gt;get&lt;/span&gt;() ?: &lt;span class=&quot;string&quot;&gt;&amp;quot;DefaultThreadName&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x5728;&lt;code&gt;Android&lt;/code&gt;&amp;#x5F00;&amp;#x53D1;&amp;#x4E2D;&amp;#xFF0C;&lt;code&gt;ThreadLocal&lt;/code&gt;&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&amp;#x573A;&amp;#x666F;&amp;#x975E;&amp;#x5E38;&amp;#x591A;&amp;#xFF0C;&amp;#x6BD4;&amp;#x5982;&amp;#xFF1A;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;#x5728;&lt;code&gt;Activity&lt;/code&gt;&amp;#x4E2D;&amp;#x5B58;&amp;#x50A8;&lt;code&gt;Fragment&lt;/code&gt;&amp;#x7684;&amp;#x72B6;&amp;#x6001;&lt;/li&gt;
&lt;li&gt;&amp;#x5728;&lt;code&gt;Handler&lt;/code&gt;&amp;#x4E2D;&amp;#x5B58;&amp;#x50A8;&amp;#x6D88;&amp;#x606F;&amp;#x7684;&amp;#x4E0A;&amp;#x4E0B;&amp;#x6587;&lt;/li&gt;
&lt;li&gt;&amp;#x5728;&lt;code&gt;RecyclerView&lt;/code&gt;&amp;#x4E2D;&amp;#x5B58;&amp;#x50A8;&amp;#x6EDA;&amp;#x52A8;&amp;#x4F4D;&amp;#x7F6E;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;&amp;#x5B9E;&amp;#x9645;&amp;#x5E94;&amp;#x7528;&amp;#x573A;&amp;#x666F;&quot;&gt;&lt;a href=&quot;#&amp;#x5B9E;&amp;#x9645;&amp;#x5E94;&amp;#x7528;&amp;#x573A;&amp;#x666F;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5B9E;&amp;#x9645;&amp;#x5E94;&amp;#x7528;&amp;#x573A;&amp;#x666F;&quot;&gt;&lt;/a&gt;&amp;#x5B9E;&amp;#x9645;&amp;#x5E94;&amp;#x7528;&amp;#x573A;&amp;#x666F;&lt;/h2&gt;&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;22&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;23&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;24&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;25&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;26&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;27&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;28&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;29&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;30&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;31&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;32&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;33&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;34&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;35&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;36&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;37&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;38&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;39&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;40&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;// &amp;#x5728; Activity &amp;#x4E2D;&amp;#x5B58;&amp;#x50A8; Fragment &amp;#x7684;&amp;#x72B6;&amp;#x6001;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;class MyActivity : AppCompatActivity() {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    private val mFragmentState = ThreadLocal&amp;lt;FragmentState&amp;gt;()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    override fun onCreate(savedInstanceState: Bundle?) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        super.onCreate(savedInstanceState)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        setContentView(R.layout.activity_my)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        // &amp;#x83B7;&amp;#x53D6; Fragment &amp;#x7684;&amp;#x72B6;&amp;#x6001;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        val fragmentState = mFragmentState.get()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        if (fragmentState == null) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            // &amp;#x521D;&amp;#x59CB;&amp;#x5316; Fragment &amp;#x7684;&amp;#x72B6;&amp;#x6001;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            fragmentState = FragmentState()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        // &amp;#x8BBE;&amp;#x7F6E; Fragment &amp;#x7684;&amp;#x72B6;&amp;#x6001;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        mFragmentState.set(fragmentState)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        // &amp;#x521B;&amp;#x5EFA; Fragment&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        val fragment = MyFragment()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        fragment.arguments = fragmentState.toBundle()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        supportFragmentManager.beginTransaction().add(R.id.container, fragment).commit()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;class FragmentState {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    var name: String? = null&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    var age: Int? = null&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    fun toBundle(): Bundle {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        val bundle = Bundle()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        bundle.putString(&amp;quot;name&amp;quot;, name)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        bundle.putInt(&amp;quot;age&amp;quot;, age)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        return bundle&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x8FD9;&amp;#x6BB5;&amp;#x4EE3;&amp;#x7801;&amp;#x5728;&lt;code&gt;Activity&lt;/code&gt;&amp;#x4E2D;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;ThreadLocal&lt;/code&gt;&amp;#x6765;&amp;#x5B58;&amp;#x50A8;&lt;code&gt;Fragment&lt;/code&gt;&amp;#x7684;&amp;#x72B6;&amp;#x6001;&amp;#x3002;&amp;#x5F53;&lt;code&gt;Activity&lt;/code&gt;&amp;#x7B2C;&amp;#x4E00;&amp;#x6B21;&amp;#x542F;&amp;#x52A8;&amp;#x65F6;&amp;#xFF0C;&amp;#x4F1A;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&lt;code&gt;Fragment&lt;/code&gt;&amp;#x7684;&amp;#x72B6;&amp;#x6001;&amp;#x3002;&amp;#x5F53;&lt;code&gt;Activity&lt;/code&gt;&amp;#x91CD;&amp;#x65B0;&amp;#x542F;&amp;#x52A8;&amp;#x65F6;&amp;#xFF0C;&amp;#x4F1A;&amp;#x4ECE;&lt;code&gt;ThreadLocal&lt;/code&gt;&amp;#x4E2D;&amp;#x83B7;&amp;#x53D6;&lt;code&gt;Fragment&lt;/code&gt;&amp;#x7684;&amp;#x72B6;&amp;#x6001;&amp;#xFF0C;&amp;#x5E76;&amp;#x5C06;&amp;#x5176;&amp;#x4F20;&amp;#x9012;&amp;#x7ED9;&lt;code&gt;Fragment&lt;/code&gt;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&quot;&gt;&lt;a href=&quot;#&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&quot;&gt;&lt;/a&gt;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x5185;&amp;#x5B58;&amp;#x6CC4;&amp;#x6F0F;&amp;#x98CE;&amp;#x9669;&amp;#xFF1A;&lt;/strong&gt; &lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;ThreadLocal&lt;/code&gt;&amp;#x53D8;&amp;#x91CF;&amp;#x7684;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x4E0E;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7684;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x662F;&amp;#x4E00;&amp;#x81F4;&amp;#x7684;&amp;#x3002;&amp;#x8FD9;&amp;#x610F;&amp;#x5473;&amp;#x7740;&amp;#xFF0C;&amp;#x5982;&amp;#x679C;&amp;#x4E00;&amp;#x4E2A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x4E00;&amp;#x76F4;&amp;#x4E0D;&amp;#x7ED3;&amp;#x675F;&amp;#xFF0C;&amp;#x90A3;&amp;#x4E48;&amp;#x5B83;&amp;#x6240;&amp;#x6301;&amp;#x6709;&amp;#x7684;&lt;code&gt;ThreadLocal&lt;/code&gt;&amp;#x53D8;&amp;#x91CF;&amp;#x4E5F;&amp;#x4E0D;&amp;#x4F1A;&amp;#x88AB;&amp;#x91CA;&amp;#x653E;&amp;#x3002;&amp;#x8FD9;&amp;#x53EF;&amp;#x80FD;&amp;#x4F1A;&amp;#x5BFC;&amp;#x81F4;&amp;#x5185;&amp;#x5B58;&amp;#x6CC4;&amp;#x6F0F;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x4E3A;&amp;#x4E86;&amp;#x907F;&amp;#x514D;&amp;#x5185;&amp;#x5B58;&amp;#x6CC4;&amp;#x6F0F;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x5E94;&amp;#x8BE5;&amp;#x5728;&amp;#x4E0D;&amp;#x518D;&amp;#x9700;&amp;#x8981;&lt;code&gt;ThreadLocal&lt;/code&gt;&amp;#x53D8;&amp;#x91CF;&amp;#x65F6;&amp;#xFF0C;&amp;#x663E;&amp;#x5F0F;&amp;#x5730;&amp;#x5C06;&amp;#x5176;&amp;#x79FB;&amp;#x9664;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;threadLocal.remove()&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x4E0D;&amp;#x9002;&amp;#x5408;&amp;#x5168;&amp;#x5C40;&amp;#x53D8;&amp;#x91CF;&amp;#xFF1A;&lt;/strong&gt; &lt;code&gt;ThreadLocal&lt;/code&gt;&amp;#x9002;&amp;#x7528;&amp;#x4E8E;&amp;#x9700;&amp;#x8981;&amp;#x5728;&amp;#x7EBF;&amp;#x7A0B;&amp;#x95F4;&amp;#x4F20;&amp;#x9012;&amp;#x7684;&amp;#x5C40;&amp;#x90E8;&amp;#x53D8;&amp;#x91CF;&amp;#xFF0C;&amp;#x4F46;&amp;#x4E0D;&amp;#x9002;&amp;#x5408;&amp;#x4F5C;&amp;#x4E3A;&amp;#x5168;&amp;#x5C40;&amp;#x53D8;&amp;#x91CF;&amp;#x7684;&amp;#x66FF;&amp;#x4EE3;&amp;#x54C1;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&quot;&gt;&lt;a href=&quot;#&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&quot;&gt;&lt;/a&gt;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x5408;&amp;#x7406;&amp;#x4F7F;&amp;#x7528;&amp;#x9ED8;&amp;#x8BA4;&amp;#x503C;&amp;#xFF1A;&lt;/strong&gt; &amp;#x5728;&amp;#x83B7;&amp;#x53D6;&lt;code&gt;ThreadLocal&lt;/code&gt;&amp;#x503C;&amp;#x65F6;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x901A;&amp;#x8FC7;&amp;#x63D0;&amp;#x4F9B;&amp;#x9ED8;&amp;#x8BA4;&amp;#x503C;&amp;#x6765;&amp;#x907F;&amp;#x514D;&amp;#x8FD4;&amp;#x56DE;&lt;code&gt;null&lt;/code&gt;&amp;#xFF0C;&amp;#x786E;&amp;#x4FDD;&amp;#x4EE3;&amp;#x7801;&amp;#x7684;&amp;#x5065;&amp;#x58EE;&amp;#x6027;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;getThreadName&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt;&lt;/span&gt;: String {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; threadLocal.&lt;span class=&quot;keyword&quot;&gt;get&lt;/span&gt;() ?: &lt;span class=&quot;string&quot;&gt;&amp;quot;DefaultThreadName&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x61D2;&amp;#x52A0;&amp;#x8F7D;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#xFF1A;&lt;/strong&gt; &amp;#x907F;&amp;#x514D;&amp;#x5728;&amp;#x58F0;&amp;#x660E;&lt;code&gt;ThreadLocal&lt;/code&gt;&amp;#x65F6;&amp;#x5C31;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;initialValue&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x8FDB;&amp;#x884C;&amp;#x61D2;&amp;#x52A0;&amp;#x8F7D;&amp;#xFF0C;&amp;#x63D0;&amp;#x9AD8;&amp;#x6027;&amp;#x80FD;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; threadLocal = &lt;span class=&quot;keyword&quot;&gt;object&lt;/span&gt; : ThreadLocal&amp;lt;String&amp;gt;() {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;initialValue&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt;&lt;/span&gt;: String {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;&amp;quot;DefaultValue&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x5C3D;&amp;#x91CF;&amp;#x907F;&amp;#x514D;&amp;#x5728;&lt;code&gt;ThreadLocal&lt;/code&gt;&amp;#x4E2D;&amp;#x4FDD;&amp;#x5B58;&amp;#x5927;&amp;#x5BF9;&amp;#x8C61;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;&amp;#x7ED3;&amp;#x8BBA;&quot;&gt;&lt;a href=&quot;#&amp;#x7ED3;&amp;#x8BBA;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x7ED3;&amp;#x8BBA;&quot;&gt;&lt;/a&gt;&amp;#x7ED3;&amp;#x8BBA;&lt;/h2&gt;&lt;p&gt;&amp;#x5728;&amp;#x672C;&amp;#x6587;&amp;#x4E2D;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x4ECB;&amp;#x7ECD;&amp;#x4E86;&lt;code&gt;ThreadLocal&lt;/code&gt;&amp;#x7684;&amp;#x539F;&amp;#x7406;&amp;#x548C;&amp;#x4F7F;&amp;#x7528;&amp;#x6280;&amp;#x5DE7;&amp;#xFF0C;&amp;#x5E0C;&amp;#x671B;&amp;#x8FD9;&amp;#x4E9B;&amp;#x77E5;&amp;#x8BC6;&amp;#x80FD;&amp;#x591F;&amp;#x5E2E;&amp;#x52A9;&amp;#x4F60;&amp;#x66F4;&amp;#x597D;&amp;#x5730;&amp;#x7406;&amp;#x89E3;&amp;#x548C;&amp;#x4F7F;&amp;#x7528;&amp;#x5B83;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;a href=&quot;#&amp;#x63A8;&amp;#x8350;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;/a&gt;&amp;#x63A8;&amp;#x8350;&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-startup&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android_startup&lt;/a&gt;: &amp;#x63D0;&amp;#x4F9B;&amp;#x4E00;&amp;#x79CD;&amp;#x5728;&amp;#x5E94;&amp;#x7528;&amp;#x542F;&amp;#x52A8;&amp;#x65F6;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x52A0;&amp;#x7B80;&amp;#x5355;&amp;#x3001;&amp;#x9AD8;&amp;#x6548;&amp;#x7684;&amp;#x65B9;&amp;#x5F0F;&amp;#x6765;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x7EC4;&amp;#x4EF6;&amp;#xFF0C;&amp;#x4F18;&amp;#x5316;&amp;#x542F;&amp;#x52A8;&amp;#x901F;&amp;#x5EA6;&amp;#x3002;&amp;#x4E0D;&amp;#x4EC5;&amp;#x652F;&amp;#x6301;Jetpack App Startup&amp;#x7684;&amp;#x5168;&amp;#x90E8;&amp;#x529F;&amp;#x80FD;&amp;#xFF0C;&amp;#x8FD8;&amp;#x63D0;&amp;#x4F9B;&amp;#x989D;&amp;#x5916;&amp;#x7684;&amp;#x540C;&amp;#x6B65;&amp;#x4E0E;&amp;#x5F02;&amp;#x6B65;&amp;#x7B49;&amp;#x5F85;&amp;#x3001;&amp;#x7EBF;&amp;#x7A0B;&amp;#x63A7;&amp;#x5236;&amp;#x4E0E;&amp;#x591A;&amp;#x8FDB;&amp;#x7A0B;&amp;#x652F;&amp;#x6301;&amp;#x7B49;&amp;#x529F;&amp;#x80FD;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/AwesomeGithub&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AwesomeGithub&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Github&amp;#x7684;&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x7EAF;&amp;#x7EC3;&amp;#x4E60;&amp;#x9879;&amp;#x76EE;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x7EC4;&amp;#x4EF6;&amp;#x5316;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x8D26;&amp;#x6237;&amp;#x5BC6;&amp;#x7801;&amp;#x4E0E;&amp;#x8BA4;&amp;#x8BC1;&amp;#x767B;&amp;#x9646;&amp;#x3002;&amp;#x4F7F;&amp;#x7528;Kotlin&amp;#x8BED;&amp;#x8A00;&amp;#x8FDB;&amp;#x884C;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x9879;&amp;#x76EE;&amp;#x67B6;&amp;#x6784;&amp;#x662F;&amp;#x57FA;&amp;#x4E8E;JetPack\&amp;amp;DataBinding&amp;#x7684;MVVM&amp;#xFF1B;&amp;#x9879;&amp;#x76EE;&amp;#x4E2D;&amp;#x4F7F;&amp;#x7528;&amp;#x4E86;Arouter&amp;#x3001;Retrofit&amp;#x3001;Coroutine&amp;#x3001;Glide&amp;#x3001;Dagger&amp;#x4E0E;Hilt&amp;#x7B49;&amp;#x6D41;&amp;#x884C;&amp;#x5F00;&amp;#x6E90;&amp;#x6280;&amp;#x672F;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/flutter_github&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;flutter_github&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Flutter&amp;#x7684;&amp;#x8DE8;&amp;#x5E73;&amp;#x53F0;&amp;#x7248;&amp;#x672C;Github&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x4E0E;AwesomeGithub&amp;#x76F8;&amp;#x5BF9;&amp;#x5E94;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-api-analysis&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android-api-analysis&lt;/a&gt;: &amp;#x7ED3;&amp;#x5408;&amp;#x8BE6;&amp;#x7EC6;&amp;#x7684;Demo&amp;#x6765;&amp;#x5168;&amp;#x9762;&amp;#x89E3;&amp;#x6790;Android&amp;#x76F8;&amp;#x5173;&amp;#x7684;&amp;#x77E5;&amp;#x8BC6;&amp;#x70B9;, &amp;#x5E2E;&amp;#x52A9;&amp;#x8BFB;&amp;#x8005;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x5FEB;&amp;#x7684;&amp;#x638C;&amp;#x63E1;&amp;#x4E0E;&amp;#x7406;&amp;#x89E3;&amp;#x6240;&amp;#x9610;&amp;#x8FF0;&amp;#x7684;&amp;#x8981;&amp;#x70B9;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/daily_algorithm&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;daily_algorithm&lt;/a&gt;: &amp;#x6BCF;&amp;#x65E5;&amp;#x4E00;&amp;#x7B97;&amp;#x6CD5;&amp;#xFF0C;&amp;#x7531;&amp;#x6D45;&amp;#x5165;&amp;#x6DF1;&amp;#xFF0C;&amp;#x6B22;&amp;#x8FCE;&amp;#x52A0;&amp;#x5165;&amp;#x4E00;&amp;#x8D77;&amp;#x5171;&amp;#x52C9;&amp;#x3002;&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;h2 id=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;a href=&quot;#&amp;#x5F15;&amp;#x8A00;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;/a&gt;&amp;#x5F15;&amp;#x8A00;&lt;/h2&gt;&lt;p&gt;&amp;#x5728;&lt;code&gt;
    
    </summary>
    
      <category term="android" scheme="https://www.rousetime.com/categories/android/"/>
    
    
      <category term="android" scheme="https://www.rousetime.com/tags/android/"/>
    
  </entry>
  
  <entry>
    <title>你不知道的CoroutineContext：协程上下文大揭秘！</title>
    <link href="https://www.rousetime.com/2024/01/06/%E4%BD%A0%E4%B8%8D%E7%9F%A5%E9%81%93%E7%9A%84CoroutineContext%EF%BC%9A%E5%8D%8F%E7%A8%8B%E4%B8%8A%E4%B8%8B%E6%96%87%E5%A4%A7%E6%8F%AD%E7%A7%98%EF%BC%81/"/>
    <id>https://www.rousetime.com/2024/01/06/你不知道的CoroutineContext：协程上下文大揭秘！/</id>
    <published>2024-01-06T09:46:37.000Z</published>
    <updated>2024-01-06T09:47:07.777Z</updated>
    
    <content type="html">&lt;h2 id=&quot;&amp;#x524D;&amp;#x8A00;&quot;&gt;&lt;a href=&quot;#&amp;#x524D;&amp;#x8A00;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x524D;&amp;#x8A00;&quot;&gt;&lt;/a&gt;&amp;#x524D;&amp;#x8A00;&lt;/h2&gt;&lt;p&gt;&amp;#x534F;&amp;#x7A0B;&amp;#xFF08;Coroutine&amp;#xFF09;&amp;#x662F;&amp;#x4E00;&amp;#x79CD;&amp;#x5E76;&amp;#x53D1;&amp;#x7F16;&amp;#x7A0B;&amp;#x6280;&amp;#x672F;&amp;#xFF0C;&amp;#x5B83;&amp;#x5141;&amp;#x8BB8;&amp;#x6211;&amp;#x4EEC;&amp;#x5728;&amp;#x4E00;&amp;#x4E2A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x4E2D;&amp;#x6267;&amp;#x884C;&amp;#x591A;&amp;#x4E2A;&amp;#x4EFB;&amp;#x52A1;&amp;#xFF0C;&amp;#x800C;&amp;#x4E0D;&amp;#x9700;&amp;#x8981;&amp;#x521B;&amp;#x5EFA;&amp;#x591A;&amp;#x4E2A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x3002;&amp;#x534F;&amp;#x7A0B;&amp;#x4E0E;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7684;&amp;#x533A;&amp;#x522B;&amp;#x5728;&amp;#x4E8E;&amp;#xFF0C;&amp;#x7EBF;&amp;#x7A0B;&amp;#x662F;&amp;#x64CD;&amp;#x4F5C;&amp;#x7CFB;&amp;#x7EDF;&amp;#x7684;&amp;#x6982;&amp;#x5FF5;&amp;#xFF0C;&amp;#x800C;&amp;#x534F;&amp;#x7A0B;&amp;#x662F;&amp;#x7F16;&amp;#x7A0B;&amp;#x8BED;&amp;#x8A00;&amp;#x7684;&amp;#x6982;&amp;#x5FF5;&amp;#x3002;&amp;#x534F;&amp;#x7A0B;&amp;#x53EF;&amp;#x4EE5;&amp;#x6682;&amp;#x505C;&amp;#x548C;&amp;#x6062;&amp;#x590D;&amp;#x6267;&amp;#x884C;&amp;#xFF0C;&amp;#x800C;&amp;#x7EBF;&amp;#x7A0B;&amp;#x53EA;&amp;#x80FD;&amp;#x88AB;&amp;#x7EC8;&amp;#x6B62;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x5728; Android &amp;#x4E2D;&amp;#xFF0C;&amp;#x534F;&amp;#x7A0B;&amp;#x7531; Kotlin &amp;#x8BED;&amp;#x8A00;&amp;#x652F;&amp;#x6301;&amp;#x3002;Kotlin &amp;#x534F;&amp;#x7A0B;&amp;#x5E93;&amp;#x63D0;&amp;#x4F9B;&amp;#x4E86;&amp;#x4E30;&amp;#x5BCC;&amp;#x7684; API&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x5E2E;&amp;#x52A9;&amp;#x6211;&amp;#x4EEC;&amp;#x8F7B;&amp;#x677E;&amp;#x5730;&amp;#x7F16;&amp;#x5199;&amp;#x5E76;&amp;#x53D1;&amp;#x4EE3;&amp;#x7801;&amp;#x3002;&amp;#x5176;&amp;#x4E2D;&amp;#xFF0C;&lt;code&gt;CoroutineContext&lt;/code&gt;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x975E;&amp;#x5E38;&amp;#x91CD;&amp;#x8981;&amp;#x7684;&amp;#x6982;&amp;#x5FF5;&amp;#xFF0C;&amp;#x5B83;&amp;#x5B9A;&amp;#x4E49;&amp;#x4E86;&amp;#x534F;&amp;#x7A0B;&amp;#x7684;&amp;#x6267;&amp;#x884C;&amp;#x73AF;&amp;#x5883;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x5728;&amp;#x672C;&amp;#x7BC7;&amp;#x6587;&amp;#x7AE0;&amp;#x4E2D;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x5C06;&amp;#x4ECE;&amp;#x4EE5;&amp;#x4E0B;&amp;#x51E0;&amp;#x4E2A;&amp;#x65B9;&amp;#x9762;&amp;#x6765;&amp;#x4ECB;&amp;#x7ECD;&lt;code&gt;CoroutineContext&lt;/code&gt;&amp;#x7684;&amp;#x5DE5;&amp;#x4F5C;&amp;#x539F;&amp;#x7406;&amp;#xFF1A;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;CoroutineContext&lt;/code&gt;&amp;#x7684;&amp;#x6982;&amp;#x5FF5;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CoroutineContext&lt;/code&gt;&amp;#x7684;&amp;#x7EC4;&amp;#x6210;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CoroutineContext&lt;/code&gt;&amp;#x7684;&amp;#x7EE7;&amp;#x627F;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CoroutineContext&lt;/code&gt;&amp;#x7684;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;CoroutineContext&amp;#x7684;&amp;#x6982;&amp;#x5FF5;&quot;&gt;&lt;a href=&quot;#CoroutineContext&amp;#x7684;&amp;#x6982;&amp;#x5FF5;&quot; class=&quot;headerlink&quot; title=&quot;CoroutineContext&amp;#x7684;&amp;#x6982;&amp;#x5FF5;&quot;&gt;&lt;/a&gt;CoroutineContext&amp;#x7684;&amp;#x6982;&amp;#x5FF5;&lt;/h2&gt;&lt;p&gt;CoroutineContext&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x5BB9;&amp;#x5668;&amp;#xFF0C;&amp;#x5B83;&amp;#x5305;&amp;#x542B;&amp;#x4E86;&amp;#x534F;&amp;#x7A0B;&amp;#x7684;&amp;#x6240;&amp;#x6709;&amp;#x4E0A;&amp;#x4E0B;&amp;#x6587;&amp;#x4FE1;&amp;#x606F;&amp;#x3002;&amp;#x8FD9;&amp;#x4E9B;&amp;#x4E0A;&amp;#x4E0B;&amp;#x6587;&amp;#x4FE1;&amp;#x606F;&amp;#x5305;&amp;#x62EC;&amp;#xFF1A;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x534F;&amp;#x7A0B;&amp;#x7684;&amp;#x72B6;&amp;#x6001;&lt;/strong&gt;&amp;#xFF1A;&amp;#x534F;&amp;#x7A0B;&amp;#x7684;&amp;#x72B6;&amp;#x6001;&amp;#x8868;&amp;#x793A;&amp;#x534F;&amp;#x7A0B;&amp;#x7684;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x3002;&amp;#x534F;&amp;#x7A0B;&amp;#x53EF;&amp;#x4EE5;&amp;#x5904;&amp;#x4E8E; &lt;strong&gt;Active&lt;/strong&gt;&amp;#x3001;&lt;strong&gt;Completed&lt;/strong&gt;&amp;#x3001;&lt;strong&gt;Canceled&lt;/strong&gt; &amp;#x7B49;&amp;#x72B6;&amp;#x6001;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x534F;&amp;#x7A0B;&amp;#x7684;&amp;#x8C03;&amp;#x5EA6;&amp;#x7B56;&amp;#x7565;&lt;/strong&gt;&amp;#xFF1A;&amp;#x534F;&amp;#x7A0B;&amp;#x7684;&amp;#x8C03;&amp;#x5EA6;&amp;#x7B56;&amp;#x7565;&amp;#x51B3;&amp;#x5B9A;&amp;#x4E86;&amp;#x534F;&amp;#x7A0B;&amp;#x5728;&amp;#x54EA;&amp;#x91CC;&amp;#x6267;&amp;#x884C;&amp;#x3002;&amp;#x534F;&amp;#x7A0B;&amp;#x53EF;&amp;#x4EE5;&amp;#x6267;&amp;#x884C;&amp;#x5728;&amp;#x4E3B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x3001;&amp;#x540E;&amp;#x53F0;&amp;#x7EBF;&amp;#x7A0B;&amp;#x3001;&amp;#x6216;&amp;#x5176;&amp;#x4ED6;&amp;#x534F;&amp;#x7A0B;&amp;#x6C60;&amp;#x4E2D;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x534F;&amp;#x7A0B;&amp;#x7684;&amp;#x6807;&amp;#x7B7E;&lt;/strong&gt;&amp;#xFF1A;&amp;#x534F;&amp;#x7A0B;&amp;#x7684;&amp;#x6807;&amp;#x7B7E;&amp;#x7528;&amp;#x4E8E;&amp;#x6807;&amp;#x8BC6;&amp;#x534F;&amp;#x7A0B;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x534F;&amp;#x7A0B;&amp;#x7684;&amp;#x62E6;&amp;#x622A;&amp;#x5668;&lt;/strong&gt;&amp;#xFF1A;&amp;#x534F;&amp;#x7A0B;&amp;#x7684;&amp;#x62E6;&amp;#x622A;&amp;#x5668;&amp;#x7528;&amp;#x4E8E;&amp;#x62E6;&amp;#x622A;&amp;#x534F;&amp;#x7A0B;&amp;#x7684;&amp;#x6267;&amp;#x884C;&amp;#x6D41;&amp;#x7A0B;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x534F;&amp;#x7A0B;&amp;#x7684;&amp;#x5F02;&amp;#x5E38;&amp;#x6355;&amp;#x83B7;&lt;/strong&gt;&amp;#xFF1A;&amp;#x7528;&amp;#x4E8E;&amp;#x5904;&amp;#x7406;&amp;#x534F;&amp;#x7A0B;&amp;#x5185;&amp;#x90E8;&amp;#x53D1;&amp;#x751F;&amp;#x7684;&amp;#x672A;&amp;#x6355;&amp;#x83B7;&amp;#x5F02;&amp;#x5E38;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;CoroutineContext&amp;#x53EF;&amp;#x4EE5;&amp;#x901A;&amp;#x8FC7; &lt;code&gt;coroutineContext&lt;/code&gt;&amp;#x83B7;&amp;#x53D6;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt;&lt;/span&gt; = runBlocking {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; context = coroutineContext&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    println(context)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x8F93;&amp;#x51FA;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;[CoroutineId(2), &amp;quot;coroutine#2&amp;quot;:BlockingCoroutine{Active}@769c9116, BlockingEventLoop@6aceb1a5]&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h2 id=&quot;CoroutineContext&amp;#x7684;&amp;#x7EC4;&amp;#x6210;&quot;&gt;&lt;a href=&quot;#CoroutineContext&amp;#x7684;&amp;#x7EC4;&amp;#x6210;&quot; class=&quot;headerlink&quot; title=&quot;CoroutineContext&amp;#x7684;&amp;#x7EC4;&amp;#x6210;&quot;&gt;&lt;/a&gt;CoroutineContext&amp;#x7684;&amp;#x7EC4;&amp;#x6210;&lt;/h2&gt;&lt;p&gt;CoroutineContext&amp;#x7531;&amp;#x591A;&amp;#x4E2A;&amp;#x7EC4;&amp;#x4EF6;&amp;#x7EC4;&amp;#x6210;&amp;#xFF0C;&amp;#x8FD9;&amp;#x4E9B;&amp;#x7EC4;&amp;#x4EF6;&amp;#x53EF;&amp;#x4EE5;&amp;#x901A;&amp;#x8FC7; &lt;code&gt;context.get&amp;lt;T&amp;gt;()&lt;/code&gt; &amp;#x51FD;&amp;#x6570;&amp;#x6765;&amp;#x83B7;&amp;#x53D6;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;public operator fun &amp;lt;E : Element&amp;gt; get(key: Key&amp;lt;E&amp;gt;): E?&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x7531;&amp;#x4E8E;&amp;#x91CD;&amp;#x65B0;&amp;#x5B9A;&amp;#x4E49;&amp;#x4E86;&lt;code&gt;get&lt;/code&gt;&amp;#x64CD;&amp;#x4F5C;&amp;#x7B26;&amp;#xFF0C;&amp;#x6240;&amp;#x4EE5;&amp;#x53EF;&amp;#x4EE5;&amp;#x76F4;&amp;#x63A5;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;context[key]&lt;/code&gt;&amp;#x6765;&amp;#x83B7;&amp;#x53D6;&amp;#x5BF9;&amp;#x5E94;&amp;#x7684;&amp;#x4E0A;&amp;#x4E0B;&amp;#x6587;&amp;#x7EC4;&amp;#x4EF6;&amp;#x5143;&amp;#x7D20;&amp;#x3002;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Dispatcher&lt;/strong&gt;&amp;#xFF1A;&amp;#x534F;&amp;#x7A0B;&amp;#x7684;&amp;#x8C03;&amp;#x5EA6;&amp;#x7B56;&amp;#x7565;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt;&lt;/span&gt; = runBlocking {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; context = coroutineContext + Dispatchers.Main&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; dispatcher = context[CoroutineDispatcher]&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    println(dispatcher)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x8F93;&amp;#x51FA;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;Dispatchers.Main[missing]&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Job&lt;/strong&gt;&amp;#xFF1A;&amp;#x534F;&amp;#x7A0B;&amp;#x7684;&amp;#x72B6;&amp;#x6001;&amp;#x3002;Job &amp;#x8868;&amp;#x793A;&amp;#x534F;&amp;#x7A0B;&amp;#x7684;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt;&lt;/span&gt; = runBlocking {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; context = coroutineContext + SupervisorJob()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; job = context[Job]&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    println(job)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x8F93;&amp;#x51FA;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;SupervisorJobImpl{Active}@50675690&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x83B7;&amp;#x53D6;&amp;#x534F;&amp;#x7A0B;&amp;#x7684;&amp;#x72B6;&amp;#x6001;&lt;/strong&gt;&amp;#xFF1A;&amp;#x534F;&amp;#x7A0B;&amp;#x7684;&amp;#x72B6;&amp;#x6001;&amp;#x8868;&amp;#x793A;&amp;#x534F;&amp;#x7A0B;&amp;#x7684;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x3002;&amp;#x534F;&amp;#x7A0B;&amp;#x53EF;&amp;#x4EE5;&amp;#x5904;&amp;#x4E8E; &lt;strong&gt;Active&lt;/strong&gt;&amp;#x3001;&lt;strong&gt;Completed&lt;/strong&gt;&amp;#x3001;&lt;strong&gt;Canceled&lt;/strong&gt; &amp;#x7B49;&amp;#x72B6;&amp;#x6001;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt;&lt;/span&gt; = runBlocking {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; context = coroutineContext + SupervisorJob()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x83B7;&amp;#x53D6;&amp;#x534F;&amp;#x7A0B;&amp;#x7684;&amp;#x72B6;&amp;#x6001;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; job = context[Job]&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x5224;&amp;#x65AD;&amp;#x534F;&amp;#x7A0B;&amp;#x662F;&amp;#x5426;&amp;#x5904;&amp;#x4E8E; Active &amp;#x72B6;&amp;#x6001;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt; (job?.isActive == &lt;span class=&quot;literal&quot;&gt;true&lt;/span&gt;) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        println(&lt;span class=&quot;string&quot;&gt;&amp;quot;&amp;#x534F;&amp;#x7A0B;&amp;#x5904;&amp;#x4E8E; Active &amp;#x72B6;&amp;#x6001;&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x8F93;&amp;#x51FA;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&amp;#x534F;&amp;#x7A0B;&amp;#x5904;&amp;#x4E8E; Active &amp;#x72B6;&amp;#x6001;&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CoroutineName&lt;/strong&gt;&amp;#xFF1A;&amp;#x534F;&amp;#x7A0B;&amp;#x7684;&amp;#x6807;&amp;#x7B7E;&amp;#x3002;CoroutineName &amp;#x7528;&amp;#x4E8E;&amp;#x6807;&amp;#x8BC6;&amp;#x534F;&amp;#x7A0B;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt;&lt;/span&gt; = runBlocking {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; context = coroutineContext + CoroutineName(&lt;span class=&quot;string&quot;&gt;&amp;quot;&amp;#x5F20;&amp;#x4E09;&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; coroutineName = context[CoroutineName]&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    println(coroutineName)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x8F93;&amp;#x51FA;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;CoroutineName(&amp;#x5F20;&amp;#x4E09;)&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x6DFB;&amp;#x52A0;&amp;#x62E6;&amp;#x622A;&amp;#x5668;&lt;/strong&gt;&amp;#xFF1A;&amp;#x62E6;&amp;#x622A;&amp;#x5668;&amp;#x53EF;&amp;#x4EE5;&amp;#x62E6;&amp;#x622A;&amp;#x534F;&amp;#x7A0B;&amp;#x7684;&amp;#x6267;&amp;#x884C;&amp;#x6D41;&amp;#x7A0B;&amp;#xFF0C;&amp;#x4F8B;&amp;#x5982;&amp;#xFF1A;&lt;/li&gt;
&lt;/ul&gt;
&lt;ol&gt;
&lt;li&gt;&amp;#x5728;&amp;#x534F;&amp;#x7A0B;&amp;#x5F00;&amp;#x59CB;&amp;#x6267;&amp;#x884C;&amp;#x4E4B;&amp;#x524D;&amp;#x8FDB;&amp;#x884C;&amp;#x4E00;&amp;#x4E9B;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x64CD;&amp;#x4F5C;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x5728;&amp;#x534F;&amp;#x7A0B;&amp;#x6267;&amp;#x884C;&amp;#x671F;&amp;#x95F4;&amp;#x8FDB;&amp;#x884C;&amp;#x4E00;&amp;#x4E9B;&amp;#x76D1;&amp;#x63A7;&amp;#x64CD;&amp;#x4F5C;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x5728;&amp;#x534F;&amp;#x7A0B;&amp;#x6267;&amp;#x884C;&amp;#x5B8C;&amp;#x6210;&amp;#x4E4B;&amp;#x540E;&amp;#x8FDB;&amp;#x884C;&amp;#x4E00;&amp;#x4E9B;&amp;#x6E05;&amp;#x7406;&amp;#x64CD;&amp;#x4F5C;&amp;#x3002;&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;MyContinuationInterceptor&lt;/span&gt; : &lt;span class=&quot;type&quot;&gt;ContinuationInterceptor {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;interceptContinuation&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(continuation: &lt;span class=&quot;type&quot;&gt;Continuation&lt;/span&gt;&amp;lt;&lt;span class=&quot;type&quot;&gt;Unit&lt;/span&gt;&amp;gt;)&lt;/span&gt;&lt;/span&gt;: Continuation&amp;lt;&lt;span class=&quot;built_in&quot;&gt;Unit&lt;/span&gt;&amp;gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x5728;&amp;#x534F;&amp;#x7A0B;&amp;#x5F00;&amp;#x59CB;&amp;#x6267;&amp;#x884C;&amp;#x4E4B;&amp;#x524D;&amp;#x8FDB;&amp;#x884C;&amp;#x4E00;&amp;#x4E9B;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x64CD;&amp;#x4F5C;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        println(&lt;span class=&quot;string&quot;&gt;&amp;quot;MyContinuationInterceptor: &amp;#x534F;&amp;#x7A0B;&amp;#x5F00;&amp;#x59CB;&amp;#x6267;&amp;#x884C;&amp;#x4E4B;&amp;#x524D;&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x8FD4;&amp;#x56DE;&amp;#x539F;&amp;#x59CB;&amp;#x7684; continuation&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; continuation&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;key&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt;&lt;/span&gt;: CoroutineContext.Key&amp;lt;ContinuationInterceptor&amp;gt; = ContinuationInterceptor.Key&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x542F;&amp;#x52A8;&amp;#x4E00;&amp;#x4E2A;&amp;#x534F;&amp;#x7A0B;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    launch(Dispatchers.IO + MyContinuationInterceptor()) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x6267;&amp;#x884C;&amp;#x4E00;&amp;#x4E9B;&amp;#x8017;&amp;#x65F6;&amp;#x64CD;&amp;#x4F5C;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        delay(&lt;span class=&quot;number&quot;&gt;1000&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x5728;&amp;#x8FD9;&amp;#x4E2A;&amp;#x793A;&amp;#x4F8B;&amp;#x4E2D;&amp;#xFF0C;&amp;#x534F;&amp;#x7A0B;&amp;#x5728;&amp;#x5F00;&amp;#x59CB;&amp;#x6267;&amp;#x884C;&amp;#x4E4B;&amp;#x524D;&amp;#x4F1A;&amp;#x6253;&amp;#x5370;&amp;#x4E00;&amp;#x6761;&amp;#x6D88;&amp;#x606F;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;MyContinuationInterceptor: &amp;#x534F;&amp;#x7A0B;&amp;#x5F00;&amp;#x59CB;&amp;#x6267;&amp;#x884C;&amp;#x4E4B;&amp;#x524D;&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CoroutineExceptionHandler&lt;/strong&gt;&amp;#xFF1A;&amp;#x5904;&amp;#x7406;&amp;#x534F;&amp;#x7A0B;&amp;#x5185;&amp;#x90E8;&amp;#x53D1;&amp;#x751F;&amp;#x7684;&amp;#x672A;&amp;#x6355;&amp;#x83B7;&amp;#x5F02;&amp;#x5E38;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;22&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;23&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;24&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;25&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;import kotlinx.coroutines.*&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;fun main() {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    // &amp;#x521B;&amp;#x5EFA;CoroutineExceptionHandler&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    val exceptionHandler = CoroutineExceptionHandler { _, exception -&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        println(&amp;quot;Caught an exception: $exception&amp;quot;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    // &amp;#x542F;&amp;#x52A8;&amp;#x4E00;&amp;#x4E2A;&amp;#x534F;&amp;#x7A0B;&amp;#xFF0C;&amp;#x5E76;&amp;#x6307;&amp;#x5B9A;CoroutineExceptionHandler&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    runBlocking {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    	val context = coroutineContext + exceptionHandler&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        val job = GlobalScope.launch(context) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            // &amp;#x6A21;&amp;#x62DF;&amp;#x4E00;&amp;#x4E2A;&amp;#x53EF;&amp;#x80FD;&amp;#x629B;&amp;#x51FA;&amp;#x5F02;&amp;#x5E38;&amp;#x7684;&amp;#x64CD;&amp;#x4F5C;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            println(&amp;quot;Coroutine is doing some work&amp;quot;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            delay(1000)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            throw CustomException(&amp;quot;Something went wrong!&amp;quot;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        // &amp;#x7B49;&amp;#x5F85;&amp;#x534F;&amp;#x7A0B;&amp;#x6267;&amp;#x884C;&amp;#x7ED3;&amp;#x675F;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        job.join()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;// &amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x5F02;&amp;#x5E38;&amp;#x7C7B;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;class CustomException(message: String) : Exception(message)&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x5728;&amp;#x8FD9;&amp;#x4E2A;&amp;#x793A;&amp;#x4F8B;&amp;#x4E2D;&amp;#xFF0C;&amp;#x4E3A;&amp;#x539F;&amp;#x6709;&amp;#x7684;&lt;code&gt;coroutineContext&lt;/code&gt;&amp;#x589E;&amp;#x52A0;&amp;#x4E86;&amp;#x6355;&amp;#x83B7;&amp;#x5F02;&amp;#x5E38;&amp;#x7684;&lt;code&gt;exceptionHandler&lt;/code&gt;&amp;#xFF0C;&amp;#x4EE5;&amp;#x81F3;&amp;#x4E8E;&amp;#x534F;&amp;#x7A0B;&amp;#x5185;&amp;#x5BB9;&amp;#x629B;&amp;#x51FA;&amp;#x5F02;&amp;#x5E38;&amp;#x65F6;&amp;#xFF0C;&amp;#x4F1A;&amp;#x88AB;&lt;code&gt;CoroutineExceptionHandler&lt;/code&gt;&amp;#x6240;&amp;#x6355;&amp;#x83B7;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;CoroutineExceptionHandler&lt;/code&gt;&amp;#x7684;&amp;#x597D;&amp;#x5904;&amp;#x5728;&amp;#x4E8E;&amp;#xFF0C;&amp;#x4F60;&amp;#x53EF;&amp;#x4EE5;&amp;#x96C6;&amp;#x4E2D;&amp;#x5904;&amp;#x7406;&amp;#x534F;&amp;#x7A0B;&amp;#x5185;&amp;#x90E8;&amp;#x7684;&amp;#x6240;&amp;#x6709;&amp;#x5F02;&amp;#x5E38;&amp;#xFF0C;&amp;#x800C;&amp;#x4E0D;&amp;#x5FC5;&amp;#x5728;&amp;#x6BCF;&amp;#x4E2A;&amp;#x534F;&amp;#x7A0B;&amp;#x4F53;&amp;#x4E2D;&amp;#x90FD;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;try-catch&lt;/code&gt;&amp;#x5757;&amp;#x6765;&amp;#x6355;&amp;#x83B7;&amp;#x5F02;&amp;#x5E38;&amp;#x3002;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;EmptyCoroutineContext&lt;/strong&gt;&amp;#xFF1A;&amp;#x4E00;&amp;#x4E2A;&amp;#x7A7A;&amp;#x7684; CoroutineContext&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;CoroutineContext&amp;#x7684;&amp;#x7EE7;&amp;#x627F;&quot;&gt;&lt;a href=&quot;#CoroutineContext&amp;#x7684;&amp;#x7EE7;&amp;#x627F;&quot; class=&quot;headerlink&quot; title=&quot;CoroutineContext&amp;#x7684;&amp;#x7EE7;&amp;#x627F;&quot;&gt;&lt;/a&gt;CoroutineContext&amp;#x7684;&amp;#x7EE7;&amp;#x627F;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;CoroutineContext&lt;/code&gt;&amp;#x652F;&amp;#x6301;&amp;#x7EE7;&amp;#x627F;&amp;#x3002;&amp;#x5B50;&lt;code&gt;CoroutineContext&lt;/code&gt;&amp;#x53EF;&amp;#x4EE5;&amp;#x7EE7;&amp;#x627F;&amp;#x7236;&lt;code&gt;CoroutineContext&lt;/code&gt;&amp;#x7684;&amp;#x6240;&amp;#x6709;&amp;#x7EC4;&amp;#x4EF6;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt;&lt;/span&gt; = runBlocking {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; parentContext = coroutineContext + Dispatchers.Main + SupervisorJob() + CoroutineName(&lt;span class=&quot;string&quot;&gt;&amp;quot;&amp;#x5F20;&amp;#x4E09;&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; childContext = parentContext + Dispatchers.IO&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    println(childContext)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x8F93;&amp;#x51FA;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;[CoroutineId(2), SupervisorJobImpl{Active}@1b40d5f0, CoroutineName(&amp;#x5F20;&amp;#x4E09;), Dispatchers.IO]&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x5728;&amp;#x8FD9;&amp;#x4E2A;&amp;#x4F8B;&amp;#x5B50;&amp;#x4E2D;&amp;#xFF0C;&lt;code&gt;parentContext&lt;/code&gt; &amp;#x5305;&amp;#x542B; &lt;code&gt;Dispatchers.Main&lt;/code&gt;&amp;#x3001;&lt;code&gt;Job()&lt;/code&gt;&amp;#x548C;&lt;code&gt;CoroutineName(&amp;quot;&amp;#x5F20;&amp;#x4E09;&amp;quot;)&lt;/code&gt;&amp;#xFF0C;&lt;code&gt;childContext&lt;/code&gt; &amp;#x7EE7;&amp;#x627F;&amp;#x4E86; &lt;code&gt;parentContext&lt;/code&gt; &amp;#x7684;&amp;#x6240;&amp;#x6709;&amp;#x7EC4;&amp;#x4EF6;&amp;#xFF0C;&amp;#x5E76;&amp;#x6DFB;&amp;#x52A0;&amp;#x4E86; &lt;code&gt;Dispatchers.IO&lt;/code&gt;&amp;#xFF0C;&amp;#x7531;&amp;#x4E8E;&amp;#x4E0E;&lt;code&gt;Dispatchers.Main&lt;/code&gt;&amp;#x540C;&amp;#x4E3A;&amp;#x8C03;&amp;#x5EA6;&amp;#x5668;&amp;#xFF0C;&amp;#x6240;&amp;#x4EE5;&amp;#x6700;&amp;#x7EC8;&amp;#x4FDD;&amp;#x7559;&amp;#x7684;&amp;#x662F;&amp;#x6700;&amp;#x540E;&amp;#x7684;&lt;code&gt;Dispatchers.IO&lt;/code&gt;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;CoroutineContext&amp;#x7684;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&quot;&gt;&lt;a href=&quot;#CoroutineContext&amp;#x7684;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&quot; class=&quot;headerlink&quot; title=&quot;CoroutineContext&amp;#x7684;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&quot;&gt;&lt;/a&gt;CoroutineContext&amp;#x7684;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&lt;/h2&gt;&lt;p&gt;&amp;#x5728;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;CoroutineContext&lt;/code&gt;&amp;#x65F6;&amp;#xFF0C;&amp;#x9700;&amp;#x8981;&amp;#x6CE8;&amp;#x610F;&amp;#x4EE5;&amp;#x4E0B;&amp;#x51E0;&amp;#x70B9;&amp;#xFF1A;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x5408;&amp;#x7406;&amp;#x9009;&amp;#x62E9;&amp;#x8C03;&amp;#x5EA6;&amp;#x5668;&amp;#xFF1A;&lt;/strong&gt;&amp;#x6839;&amp;#x636E;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x6027;&amp;#x8D28;&amp;#x9009;&amp;#x62E9;&amp;#x5408;&amp;#x9002;&amp;#x7684;&amp;#x8C03;&amp;#x5EA6;&amp;#x5668;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x5728;IO&amp;#x5BC6;&amp;#x96C6;&amp;#x578B;&amp;#x4EFB;&amp;#x52A1;&amp;#x4E2D;&amp;#x4F7F;&amp;#x7528;CPU&amp;#x5BC6;&amp;#x96C6;&amp;#x578B;&amp;#x7684;&amp;#x8C03;&amp;#x5EA6;&amp;#x5668;&amp;#xFF0C;&amp;#x4EE5;&amp;#x53CA;&amp;#x53CD;&amp;#x4E4B;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x7EC6;&amp;#x81F4;&amp;#x7BA1;&amp;#x7406;CoroutineContext&amp;#xFF1A;&lt;/strong&gt;&amp;#x5408;&amp;#x7406;&amp;#x7BA1;&amp;#x7406;CoroutineContext&amp;#x7684;&amp;#x5143;&amp;#x7D20;&amp;#xFF0C;&amp;#x4E0D;&amp;#x8981;&amp;#x8FC7;&amp;#x5EA6;&amp;#x6DFB;&amp;#x52A0;&amp;#x4E0D;&amp;#x5FC5;&amp;#x8981;&amp;#x7684;&amp;#x5143;&amp;#x7D20;&amp;#xFF0C;&amp;#x4EE5;&amp;#x514D;&amp;#x5F15;&amp;#x8D77;&amp;#x4E0D;&amp;#x5FC5;&amp;#x8981;&amp;#x7684;&amp;#x6027;&amp;#x80FD;&amp;#x5F00;&amp;#x9500;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x5F02;&amp;#x5E38;&amp;#x5904;&amp;#x7406;&amp;#xFF1A;&lt;/strong&gt;&amp;#x53CA;&amp;#x65F6;&amp;#x5904;&amp;#x7406;&amp;#x534F;&amp;#x7A0B;&amp;#x4E2D;&amp;#x7684;&amp;#x5F02;&amp;#x5E38;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x901A;&amp;#x8FC7;&amp;#x5728;CoroutineContext&amp;#x4E2D;&amp;#x6DFB;&amp;#x52A0;CoroutineExceptionHandler&amp;#x5143;&amp;#x7D20;&amp;#x6765;&amp;#x5B9E;&amp;#x73B0;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;&amp;#x603B;&amp;#x7ED3;&quot;&gt;&lt;a href=&quot;#&amp;#x603B;&amp;#x7ED3;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x603B;&amp;#x7ED3;&quot;&gt;&lt;/a&gt;&amp;#x603B;&amp;#x7ED3;&lt;/h2&gt;&lt;p&gt;&amp;#x603B;&amp;#x800C;&amp;#x8A00;&amp;#x4E4B;&amp;#xFF0C;&lt;code&gt;CoroutineContext&lt;/code&gt;&amp;#x662F;&amp;#x534F;&amp;#x7A0B;&amp;#x7684;&amp;#x4E00;&amp;#x4E2A;&amp;#x91CD;&amp;#x8981;&amp;#x6982;&amp;#x5FF5;&amp;#x3002;&amp;#x5145;&amp;#x5206;&amp;#x7406;&amp;#x89E3;&lt;code&gt;CoroutineContext&lt;/code&gt;&amp;#x7684;&amp;#x5DE5;&amp;#x4F5C;&amp;#x539F;&amp;#x7406;&amp;#x548C;&amp;#x4F7F;&amp;#x7528;&amp;#x65B9;&amp;#x6CD5;&amp;#xFF0C;&amp;#x8FD9;&amp;#x6837;&amp;#x624D;&amp;#x80FD;&amp;#x66F4;&amp;#x597D;&amp;#x5730;&amp;#x5229;&amp;#x7528;&lt;code&gt;CoroutineContext&lt;/code&gt;&amp;#x6765;&amp;#x63A7;&amp;#x5236;&amp;#x534F;&amp;#x7A0B;&amp;#x7684;&amp;#x6267;&amp;#x884C;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;a href=&quot;#&amp;#x63A8;&amp;#x8350;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;/a&gt;&amp;#x63A8;&amp;#x8350;&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-startup&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android_startup&lt;/a&gt;: &amp;#x63D0;&amp;#x4F9B;&amp;#x4E00;&amp;#x79CD;&amp;#x5728;&amp;#x5E94;&amp;#x7528;&amp;#x542F;&amp;#x52A8;&amp;#x65F6;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x52A0;&amp;#x7B80;&amp;#x5355;&amp;#x3001;&amp;#x9AD8;&amp;#x6548;&amp;#x7684;&amp;#x65B9;&amp;#x5F0F;&amp;#x6765;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x7EC4;&amp;#x4EF6;&amp;#xFF0C;&amp;#x4F18;&amp;#x5316;&amp;#x542F;&amp;#x52A8;&amp;#x901F;&amp;#x5EA6;&amp;#x3002;&amp;#x4E0D;&amp;#x4EC5;&amp;#x652F;&amp;#x6301;Jetpack App Startup&amp;#x7684;&amp;#x5168;&amp;#x90E8;&amp;#x529F;&amp;#x80FD;&amp;#xFF0C;&amp;#x8FD8;&amp;#x63D0;&amp;#x4F9B;&amp;#x989D;&amp;#x5916;&amp;#x7684;&amp;#x540C;&amp;#x6B65;&amp;#x4E0E;&amp;#x5F02;&amp;#x6B65;&amp;#x7B49;&amp;#x5F85;&amp;#x3001;&amp;#x7EBF;&amp;#x7A0B;&amp;#x63A7;&amp;#x5236;&amp;#x4E0E;&amp;#x591A;&amp;#x8FDB;&amp;#x7A0B;&amp;#x652F;&amp;#x6301;&amp;#x7B49;&amp;#x529F;&amp;#x80FD;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/AwesomeGithub&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AwesomeGithub&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Github&amp;#x7684;&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x7EAF;&amp;#x7EC3;&amp;#x4E60;&amp;#x9879;&amp;#x76EE;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x7EC4;&amp;#x4EF6;&amp;#x5316;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x8D26;&amp;#x6237;&amp;#x5BC6;&amp;#x7801;&amp;#x4E0E;&amp;#x8BA4;&amp;#x8BC1;&amp;#x767B;&amp;#x9646;&amp;#x3002;&amp;#x4F7F;&amp;#x7528;Kotlin&amp;#x8BED;&amp;#x8A00;&amp;#x8FDB;&amp;#x884C;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x9879;&amp;#x76EE;&amp;#x67B6;&amp;#x6784;&amp;#x662F;&amp;#x57FA;&amp;#x4E8E;JetPack\&amp;amp;DataBinding&amp;#x7684;MVVM&amp;#xFF1B;&amp;#x9879;&amp;#x76EE;&amp;#x4E2D;&amp;#x4F7F;&amp;#x7528;&amp;#x4E86;Arouter&amp;#x3001;Retrofit&amp;#x3001;Coroutine&amp;#x3001;Glide&amp;#x3001;Dagger&amp;#x4E0E;Hilt&amp;#x7B49;&amp;#x6D41;&amp;#x884C;&amp;#x5F00;&amp;#x6E90;&amp;#x6280;&amp;#x672F;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/flutter_github&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;flutter_github&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Flutter&amp;#x7684;&amp;#x8DE8;&amp;#x5E73;&amp;#x53F0;&amp;#x7248;&amp;#x672C;Github&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x4E0E;AwesomeGithub&amp;#x76F8;&amp;#x5BF9;&amp;#x5E94;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-api-analysis&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android-api-analysis&lt;/a&gt;: &amp;#x7ED3;&amp;#x5408;&amp;#x8BE6;&amp;#x7EC6;&amp;#x7684;Demo&amp;#x6765;&amp;#x5168;&amp;#x9762;&amp;#x89E3;&amp;#x6790;Android&amp;#x76F8;&amp;#x5173;&amp;#x7684;&amp;#x77E5;&amp;#x8BC6;&amp;#x70B9;, &amp;#x5E2E;&amp;#x52A9;&amp;#x8BFB;&amp;#x8005;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x5FEB;&amp;#x7684;&amp;#x638C;&amp;#x63E1;&amp;#x4E0E;&amp;#x7406;&amp;#x89E3;&amp;#x6240;&amp;#x9610;&amp;#x8FF0;&amp;#x7684;&amp;#x8981;&amp;#x70B9;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/daily_algorithm&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;daily_algorithm&lt;/a&gt;: &amp;#x6BCF;&amp;#x65E5;&amp;#x4E00;&amp;#x7B97;&amp;#x6CD5;&amp;#xFF0C;&amp;#x7531;&amp;#x6D45;&amp;#x5165;&amp;#x6DF1;&amp;#xFF0C;&amp;#x6B22;&amp;#x8FCE;&amp;#x52A0;&amp;#x5165;&amp;#x4E00;&amp;#x8D77;&amp;#x5171;&amp;#x52C9;&amp;#x3002;&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;h2 id=&quot;&amp;#x524D;&amp;#x8A00;&quot;&gt;&lt;a href=&quot;#&amp;#x524D;&amp;#x8A00;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x524D;&amp;#x8A00;&quot;&gt;&lt;/a&gt;&amp;#x524D;&amp;#x8A00;&lt;/h2&gt;&lt;p&gt;&amp;#x534F;&amp;#x7A0
    
    </summary>
    
      <category term="android" scheme="https://www.rousetime.com/categories/android/"/>
    
    
      <category term="android" scheme="https://www.rousetime.com/tags/android/"/>
    
  </entry>
  
  <entry>
    <title>SharedFlow vs StateFlow，一篇看懂选择和使用技巧</title>
    <link href="https://www.rousetime.com/2023/12/31/SharedFlow-vs-StateFlow%EF%BC%8C%E4%B8%80%E7%AF%87%E7%9C%8B%E6%87%82%E9%80%89%E6%8B%A9%E5%92%8C%E4%BD%BF%E7%94%A8%E6%8A%80%E5%B7%A7/"/>
    <id>https://www.rousetime.com/2023/12/31/SharedFlow-vs-StateFlow，一篇看懂选择和使用技巧/</id>
    <published>2023-12-31T05:56:15.000Z</published>
    <updated>2023-12-31T05:56:42.879Z</updated>
    
    <content type="html">&lt;h2 id=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;a href=&quot;#&amp;#x5F15;&amp;#x8A00;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;/a&gt;&amp;#x5F15;&amp;#x8A00;&lt;/h2&gt;&lt;p&gt;&amp;#x5728;Android&amp;#x5E94;&amp;#x7528;&amp;#x5F00;&amp;#x53D1;&amp;#x4E2D;&amp;#xFF0C;&amp;#x6570;&amp;#x636E;&amp;#x6D41;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x81F3;&amp;#x5173;&amp;#x91CD;&amp;#x8981;&amp;#x7684;&amp;#x6982;&amp;#x5FF5;&amp;#x3002;&amp;#x800C;&amp;#x5728;Jetpack&amp;#x5E93;&amp;#x4E2D;&amp;#xFF0C;&lt;code&gt;SharedFlow&lt;/code&gt; &amp;#x548C; &lt;code&gt;StateFlow&lt;/code&gt; &amp;#x662F;&amp;#x4E24;&amp;#x4E2A;&amp;#x5904;&amp;#x7406;&amp;#x6570;&amp;#x636E;&amp;#x6D41;&amp;#x7684;&amp;#x5229;&amp;#x5668;&amp;#xFF0C;&amp;#x5B83;&amp;#x4EEC;&amp;#x57FA;&amp;#x4E8E;&amp;#x534F;&amp;#x7A0B;&amp;#xFF0C;&amp;#x63D0;&amp;#x4F9B;&amp;#x4E86;&amp;#x4E00;&amp;#x79CD;&amp;#x54CD;&amp;#x5E94;&amp;#x5F0F;&amp;#x7684;&amp;#x7F16;&amp;#x7A0B;&amp;#x65B9;&amp;#x5F0F;&amp;#x3002;&amp;#x672C;&amp;#x6587;&amp;#x5C06;&amp;#x6DF1;&amp;#x5165;&amp;#x63A2;&amp;#x8BA8;&amp;#x8FD9;&amp;#x4E24;&amp;#x4E2A;&amp;#x7C7B;&amp;#x7684;&amp;#x539F;&amp;#x7406;&amp;#xFF0C;&amp;#x4EE5;&amp;#x53CA;&amp;#x5728;&amp;#x5B9E;&amp;#x9645;&amp;#x5F00;&amp;#x53D1;&amp;#x4E2D;&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&amp;#x6280;&amp;#x5DE7;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x539F;&amp;#x7406;&amp;#x5206;&amp;#x6790;&quot;&gt;&lt;a href=&quot;#&amp;#x539F;&amp;#x7406;&amp;#x5206;&amp;#x6790;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x539F;&amp;#x7406;&amp;#x5206;&amp;#x6790;&quot;&gt;&lt;/a&gt;&amp;#x539F;&amp;#x7406;&amp;#x5206;&amp;#x6790;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;SharedFlow&lt;/code&gt; &amp;#x548C; &lt;code&gt;StateFlow&lt;/code&gt; &amp;#x57FA;&amp;#x4E8E;&amp;#x534F;&amp;#x7A0B;&amp;#x6784;&amp;#x5EFA;&amp;#xFF0C;&amp;#x5B83;&amp;#x4EEC;&amp;#x5229;&amp;#x7528;&amp;#x534F;&amp;#x7A0B;&amp;#x7684;&amp;#x8F7B;&amp;#x91CF;&amp;#x7EA7;&amp;#x7279;&amp;#x6027;&amp;#xFF0C;&amp;#x5728;&amp;#x5F02;&amp;#x6B65;&amp;#x64CD;&amp;#x4F5C;&amp;#x4E2D;&amp;#x66F4;&amp;#x52A0;&amp;#x9AD8;&amp;#x6548;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;SharedFlow&lt;/code&gt; &amp;#x4F7F;&amp;#x7528;&amp;#x4E86;&amp;#x4E00;&amp;#x79CD;&amp;#x57FA;&amp;#x4E8E;&amp;#x4E8B;&amp;#x4EF6;&amp;#x6EAF;&amp;#x6E90;&amp;#x7684;&amp;#x673A;&amp;#x5236;&amp;#xFF0C;&amp;#x5F53;&amp;#x6709;&amp;#x65B0;&amp;#x7684;&amp;#x4E8B;&amp;#x4EF6;&amp;#x4EA7;&amp;#x751F;&amp;#x65F6;&amp;#xFF0C;&amp;#x5C06;&amp;#x4E8B;&amp;#x4EF6;&amp;#x6DFB;&amp;#x52A0;&amp;#x5230;&amp;#x5171;&amp;#x4EAB;&amp;#x7684;&amp;#x4E8B;&amp;#x4EF6;&amp;#x5E8F;&amp;#x5217;&amp;#x4E2D;&amp;#xFF0C;&amp;#x7136;&amp;#x540E;&amp;#x901A;&amp;#x77E5;&amp;#x6240;&amp;#x6709;&amp;#x8BA2;&amp;#x9605;&amp;#x8005;&amp;#x3002;&amp;#x800C; &lt;code&gt;StateFlow&lt;/code&gt; &amp;#x5219;&amp;#x7EF4;&amp;#x62A4;&amp;#x4E86;&amp;#x4E00;&amp;#x4E2A;&amp;#x53EF;&amp;#x53D8;&amp;#x7684;&amp;#x72B6;&amp;#x6001;&amp;#xFF0C;&amp;#x5E76;&amp;#x5728;&amp;#x72B6;&amp;#x6001;&amp;#x53D1;&amp;#x751F;&amp;#x53D8;&amp;#x5316;&amp;#x65F6;&amp;#x901A;&amp;#x77E5;&amp;#x6240;&amp;#x6709;&amp;#x89C2;&amp;#x5BDF;&amp;#x8005;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x70ED;&amp;#x6D41;&amp;#x4E0E;&amp;#x51B7;&amp;#x6D41;&quot;&gt;&lt;a href=&quot;#&amp;#x70ED;&amp;#x6D41;&amp;#x4E0E;&amp;#x51B7;&amp;#x6D41;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x70ED;&amp;#x6D41;&amp;#x4E0E;&amp;#x51B7;&amp;#x6D41;&quot;&gt;&lt;/a&gt;&amp;#x70ED;&amp;#x6D41;&amp;#x4E0E;&amp;#x51B7;&amp;#x6D41;&lt;/h2&gt;&lt;p&gt;&amp;#x70ED;&amp;#x6D41;&amp;#x548C;&amp;#x51B7;&amp;#x6D41;&amp;#x662F;&amp;#x5173;&amp;#x4E8E;&amp;#x6570;&amp;#x636E;&amp;#x6D41;&amp;#x7684;&amp;#x4E24;&amp;#x4E2A;&amp;#x57FA;&amp;#x672C;&amp;#x6982;&amp;#x5FF5;&amp;#xFF0C;&amp;#x5B83;&amp;#x4EEC;&amp;#x63CF;&amp;#x8FF0;&amp;#x4E86;&amp;#x6570;&amp;#x636E;&amp;#x6D41;&amp;#x4F55;&amp;#x65F6;&amp;#x5F00;&amp;#x59CB;&amp;#x4EE5;&amp;#x53CA;&amp;#x5982;&amp;#x4F55;&amp;#x4F20;&amp;#x9012;&amp;#x4E8B;&amp;#x4EF6;&amp;#x7684;&amp;#x65B9;&amp;#x5F0F;&amp;#x3002;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&amp;#x70ED;&amp;#x6D41;&amp;#x662F;&amp;#x4E00;&amp;#x79CD;&amp;#x4E3B;&amp;#x52A8;&amp;#x7684;&amp;#x6570;&amp;#x636E;&amp;#x6D41;&amp;#x3002;&amp;#x5B83;&amp;#x5728;&amp;#x521B;&amp;#x5EFA;&amp;#x65F6;&amp;#x5C31;&amp;#x5F00;&amp;#x59CB;&amp;#x53D1;&amp;#x5C04;&amp;#x4E8B;&amp;#x4EF6;&amp;#xFF0C;&amp;#x65E0;&amp;#x8BBA;&amp;#x662F;&amp;#x5426;&amp;#x6709;&amp;#x89C2;&amp;#x5BDF;&amp;#x8005;&amp;#x8BA2;&amp;#x9605;&amp;#x3002;&amp;#x5373;&amp;#x4F7F;&amp;#x6CA1;&amp;#x6709;&amp;#x89C2;&amp;#x5BDF;&amp;#x8005;&amp;#xFF0C;&amp;#x70ED;&amp;#x6D41;&amp;#x4E5F;&amp;#x4F1A;&amp;#x6301;&amp;#x7EED;&amp;#x4EA7;&amp;#x751F;&amp;#x4E8B;&amp;#x4EF6;&amp;#x3002;&amp;#x5F53;&amp;#x89C2;&amp;#x5BDF;&amp;#x8005;&amp;#x8BA2;&amp;#x9605;&amp;#x65F6;&amp;#xFF0C;&amp;#x5B83;&amp;#x53EA;&amp;#x662F;&amp;#x52A0;&amp;#x5165;&amp;#x4E86;&amp;#x5DF2;&amp;#x7ECF;&amp;#x8FD0;&amp;#x884C;&amp;#x7684;&amp;#x6570;&amp;#x636E;&amp;#x6D41;&amp;#xFF0C;&amp;#x5F00;&amp;#x59CB;&amp;#x63A5;&amp;#x6536;&amp;#x5F53;&amp;#x524D;&amp;#x5DF2;&amp;#x7ECF;&amp;#x4EA7;&amp;#x751F;&amp;#x7684;&amp;#x4E8B;&amp;#x4EF6;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x51B7;&amp;#x6D41;&amp;#x662F;&amp;#x4E00;&amp;#x79CD;&amp;#x88AB;&amp;#x52A8;&amp;#x7684;&amp;#x6570;&amp;#x636E;&amp;#x6D41;&amp;#x3002;&amp;#x5B83;&amp;#x5728;&amp;#x6709;&amp;#x89C2;&amp;#x5BDF;&amp;#x8005;&amp;#x8BA2;&amp;#x9605;&amp;#x65F6;&amp;#x624D;&amp;#x5F00;&amp;#x59CB;&amp;#x53D1;&amp;#x5C04;&amp;#x4E8B;&amp;#x4EF6;&amp;#x3002;&amp;#x6BCF;&amp;#x4E2A;&amp;#x89C2;&amp;#x5BDF;&amp;#x8005;&amp;#x90FD;&amp;#x4F1A;&amp;#x83B7;&amp;#x5F97;&amp;#x76F8;&amp;#x540C;&amp;#x7684;&amp;#x4E8B;&amp;#x4EF6;&amp;#x5E8F;&amp;#x5217;&amp;#xFF0C;&amp;#x800C;&amp;#x4E0D;&amp;#x4F1A;&amp;#x53D7;&amp;#x5230;&amp;#x5176;&amp;#x4ED6;&amp;#x89C2;&amp;#x5BDF;&amp;#x8005;&amp;#x7684;&amp;#x5F71;&amp;#x54CD;&amp;#x3002;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;code&gt;SharedFlow&lt;/code&gt; &amp;#x548C; &lt;code&gt;StateFlow&lt;/code&gt;&amp;#x90FD;&amp;#x662F;&amp;#x70ED;&amp;#x6D41;&amp;#x3002;&amp;#x5373;&amp;#x6CA1;&amp;#x6709;&amp;#x89C2;&amp;#x5BDF;&amp;#x8005;&amp;#xFF0C;&amp;#x6570;&amp;#x636E;&amp;#x4F1A;&amp;#x6301;&amp;#x7EED;&amp;#x66F4;&amp;#x65B0;&amp;#xFF0C;&amp;#x4E0E;&lt;code&gt;LiveData&lt;/code&gt;&amp;#x7C7B;&amp;#x4F3C;&amp;#x3002;&lt;br&gt;&amp;#x5176;&amp;#x4E2D;&lt;code&gt;MutableSharedFlow&lt;/code&gt;&amp;#x4E0E;&lt;code&gt;MutableStateFlow&lt;/code&gt;&amp;#x662F;&amp;#x5B83;&amp;#x4EEC;&amp;#x7684;&amp;#x53EF;&amp;#x53D8;&amp;#x7C7B;&amp;#x578B;&amp;#x3002;&lt;/p&gt;
&lt;h3 id=&quot;&amp;#x70ED;&amp;#x6D41;&amp;#x7684;&amp;#x793A;&amp;#x4F8B;&quot;&gt;&lt;a href=&quot;#&amp;#x70ED;&amp;#x6D41;&amp;#x7684;&amp;#x793A;&amp;#x4F8B;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x70ED;&amp;#x6D41;&amp;#x7684;&amp;#x793A;&amp;#x4F8B;&quot;&gt;&lt;/a&gt;&amp;#x70ED;&amp;#x6D41;&amp;#x7684;&amp;#x793A;&amp;#x4F8B;&lt;/h3&gt;&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;22&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;23&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;24&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;25&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;26&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;import&lt;/span&gt; kotlinx.coroutines.*&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;import&lt;/span&gt; kotlinx.coroutines.flow.*&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt;&lt;/span&gt; = runBlocking {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; hotFlow = MutableSharedFlow&amp;lt;&lt;span class=&quot;built_in&quot;&gt;Int&lt;/span&gt;&amp;gt;()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    launch {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        repeat(&lt;span class=&quot;number&quot;&gt;5&lt;/span&gt;) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            delay(&lt;span class=&quot;number&quot;&gt;1000&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            hotFlow.emit(it)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x89C2;&amp;#x5BDF;&amp;#x8005;1&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    hotFlow.collect {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        println(&lt;span class=&quot;string&quot;&gt;&amp;quot;Observer 1: &lt;span class=&quot;variable&quot;&gt;$it&lt;/span&gt;&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x89C2;&amp;#x5BDF;&amp;#x8005;2&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    delay(&lt;span class=&quot;number&quot;&gt;3000&lt;/span&gt;) &lt;span class=&quot;comment&quot;&gt;// &amp;#x89C2;&amp;#x5BDF;&amp;#x8005;2&amp;#x5EF6;&amp;#x8FDF;3&amp;#x79D2;&amp;#x540E;&amp;#x8BA2;&amp;#x9605;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    hotFlow.collect {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        println(&lt;span class=&quot;string&quot;&gt;&amp;quot;Observer 2: &lt;span class=&quot;variable&quot;&gt;$it&lt;/span&gt;&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    delay(&lt;span class=&quot;number&quot;&gt;5000&lt;/span&gt;) &lt;span class=&quot;comment&quot;&gt;// &amp;#x4E3A;&amp;#x4E86;&amp;#x4FDD;&amp;#x6301;&amp;#x4E3B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x8FD0;&amp;#x884C;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x5728;&amp;#x8FD9;&amp;#x4E2A;&amp;#x4F8B;&amp;#x5B50;&amp;#x4E2D;&amp;#xFF0C;&lt;code&gt;hotFlow&lt;/code&gt;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x70ED;&amp;#x6D41;&amp;#xFF0C;&amp;#x5B83;&amp;#x5728;&amp;#x542F;&amp;#x52A8;&amp;#x540E;&amp;#x6BCF;&amp;#x9694;&amp;#x4E00;&amp;#x79D2;&amp;#x4EA7;&amp;#x751F;&amp;#x4E00;&amp;#x4E2A;&amp;#x4E8B;&amp;#x4EF6;&amp;#x3002;&amp;#x89C2;&amp;#x5BDF;&amp;#x8005;1&amp;#x4ECE;&amp;#x4E00;&amp;#x5F00;&amp;#x59CB;&amp;#x5C31;&amp;#x8BA2;&amp;#x9605;&amp;#xFF0C;&amp;#x800C;&amp;#x89C2;&amp;#x5BDF;&amp;#x8005;2&amp;#x5728;3&amp;#x79D2;&amp;#x540E;&amp;#x8BA2;&amp;#x9605;&amp;#xFF0C;&amp;#x89C2;&amp;#x5BDF;&amp;#x8005;2&amp;#x4E0D;&amp;#x4F1A;&amp;#x63A5;&amp;#x6536;&amp;#x5230;&amp;#x89C2;&amp;#x5BDF;&amp;#x8005;1&amp;#x5728;&amp;#x8BA2;&amp;#x9605;&amp;#x4E4B;&amp;#x524D;&amp;#x5DF2;&amp;#x7ECF;&amp;#x63A5;&amp;#x6536;&amp;#x7684;&amp;#x4E8B;&amp;#x4EF6;&amp;#x3002;&lt;/p&gt;
&lt;h3 id=&quot;&amp;#x51B7;&amp;#x6D41;&amp;#x7684;&amp;#x793A;&amp;#x4F8B;&quot;&gt;&lt;a href=&quot;#&amp;#x51B7;&amp;#x6D41;&amp;#x7684;&amp;#x793A;&amp;#x4F8B;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x51B7;&amp;#x6D41;&amp;#x7684;&amp;#x793A;&amp;#x4F8B;&quot;&gt;&lt;/a&gt;&amp;#x51B7;&amp;#x6D41;&amp;#x7684;&amp;#x793A;&amp;#x4F8B;&lt;/h3&gt;&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;22&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;23&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;24&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;25&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;import&lt;/span&gt; kotlinx.coroutines.*&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;import&lt;/span&gt; kotlinx.coroutines.flow.*&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt;&lt;/span&gt; = runBlocking {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; coldFlow = flow {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        emit(&lt;span class=&quot;string&quot;&gt;&amp;quot;Line 1&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        delay(&lt;span class=&quot;number&quot;&gt;1000&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        emit(&lt;span class=&quot;string&quot;&gt;&amp;quot;Line 2&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        delay(&lt;span class=&quot;number&quot;&gt;1000&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        emit(&lt;span class=&quot;string&quot;&gt;&amp;quot;Line 3&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x89C2;&amp;#x5BDF;&amp;#x8005;1&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    coldFlow.collect {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        println(&lt;span class=&quot;string&quot;&gt;&amp;quot;Observer 1: &lt;span class=&quot;variable&quot;&gt;$it&lt;/span&gt;&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x89C2;&amp;#x5BDF;&amp;#x8005;2&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    delay(&lt;span class=&quot;number&quot;&gt;2000&lt;/span&gt;) &lt;span class=&quot;comment&quot;&gt;// &amp;#x89C2;&amp;#x5BDF;&amp;#x8005;2&amp;#x5EF6;&amp;#x8FDF;2&amp;#x79D2;&amp;#x540E;&amp;#x8BA2;&amp;#x9605;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    coldFlow.collect {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        println(&lt;span class=&quot;string&quot;&gt;&amp;quot;Observer 2: &lt;span class=&quot;variable&quot;&gt;$it&lt;/span&gt;&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    delay(&lt;span class=&quot;number&quot;&gt;5000&lt;/span&gt;) &lt;span class=&quot;comment&quot;&gt;// &amp;#x4E3A;&amp;#x4E86;&amp;#x4FDD;&amp;#x6301;&amp;#x4E3B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x8FD0;&amp;#x884C;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x5728;&amp;#x8FD9;&amp;#x4E2A;&amp;#x4F8B;&amp;#x5B50;&amp;#x4E2D;&amp;#xFF0C;&lt;code&gt;coldFlow&lt;/code&gt;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x51B7;&amp;#x6D41;&amp;#xFF0C;&amp;#x5B83;&amp;#x5728;&amp;#x6709;&amp;#x89C2;&amp;#x5BDF;&amp;#x8005;&amp;#x8BA2;&amp;#x9605;&amp;#x65F6;&amp;#x624D;&amp;#x5F00;&amp;#x59CB;&amp;#x53D1;&amp;#x5C04;&amp;#x4E8B;&amp;#x4EF6;&amp;#x3002;&amp;#x89C2;&amp;#x5BDF;&amp;#x8005;1&amp;#x4ECE;&amp;#x4E00;&amp;#x5F00;&amp;#x59CB;&amp;#x5C31;&amp;#x8BA2;&amp;#x9605;&amp;#xFF0C;&amp;#x800C;&amp;#x89C2;&amp;#x5BDF;&amp;#x8005;2&amp;#x5728;2&amp;#x79D2;&amp;#x540E;&amp;#x8BA2;&amp;#x9605;&amp;#xFF0C;&amp;#x4F46;&amp;#x5B83;&amp;#x80FD;&amp;#x591F;&amp;#x63A5;&amp;#x6536;&amp;#x5230;&amp;#x4ECE;&amp;#x5F00;&amp;#x59CB;&amp;#x8FD0;&amp;#x884C;&amp;#x7684;&amp;#x4E8B;&amp;#x4EF6;&amp;#x5E8F;&amp;#x5217;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;MutableSharedFlow&quot;&gt;&lt;a href=&quot;#MutableSharedFlow&quot; class=&quot;headerlink&quot; title=&quot;MutableSharedFlow&quot;&gt;&lt;/a&gt;MutableSharedFlow&lt;/h2&gt;&lt;p&gt;&lt;code&gt;MutableSharedFlow&lt;/code&gt;&amp;#x662F;&amp;#x4E00;&amp;#x79CD;&amp;#x53EF;&amp;#x53D8;&amp;#x7684;&amp;#x3001;&amp;#x7528;&amp;#x4E8E;&amp;#x521B;&amp;#x5EFA;&amp;#x5171;&amp;#x4EAB;&amp;#x6D41;&amp;#x7684;&amp;#x7C7B;&amp;#x3002;&amp;#x4E0B;&amp;#x9762;&amp;#x662F;&lt;code&gt;MutableSharedFlow&lt;/code&gt;&amp;#x7684;&amp;#x4E00;&amp;#x4E9B;&amp;#x4E3B;&amp;#x8981;&amp;#x6784;&amp;#x9020;&amp;#x51FD;&amp;#x6570;&amp;#x53C2;&amp;#x6570;&amp;#x53CA;&amp;#x5176;&amp;#x9ED8;&amp;#x8BA4;&amp;#x503C;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;type&quot;&gt;&amp;lt;T&amp;gt;&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;MutableSharedFlow&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;params&quot;&gt;    replay: &lt;span class=&quot;type&quot;&gt;Int&lt;/span&gt; = &lt;span class=&quot;number&quot;&gt;0&lt;/span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;params&quot;&gt;    extraBufferCapacity: &lt;span class=&quot;type&quot;&gt;Int&lt;/span&gt; = &lt;span class=&quot;number&quot;&gt;0&lt;/span&gt;,&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;params&quot;&gt;    onBufferOverflow: &lt;span class=&quot;type&quot;&gt;BufferOverflow&lt;/span&gt; = BufferOverflow.SUSPEND&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;params&quot;&gt;)&lt;/span&gt;&lt;/span&gt; : MutableSharedFlow&amp;lt;T&amp;gt; { &lt;span class=&quot;comment&quot;&gt;/*...*/&lt;/span&gt; }&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;replay&lt;/code&gt;&amp;#xFF1A;&lt;/strong&gt; &amp;#x8868;&amp;#x793A;&amp;#x5728;&amp;#x8BA2;&amp;#x9605;&amp;#x65F6;&amp;#x4ECE;&amp;#x6D41;&amp;#x4E2D;&amp;#x56DE;&amp;#x653E;&amp;#x7684;&amp;#x5143;&amp;#x7D20;&amp;#x6570;&amp;#x91CF;&amp;#x3002;&amp;#x9ED8;&amp;#x8BA4;&amp;#x503C;&amp;#x4E3A; &lt;code&gt;0&lt;/code&gt;&amp;#xFF0C;&amp;#x8868;&amp;#x793A;&amp;#x4E0D;&amp;#x56DE;&amp;#x653E;&amp;#x4EFB;&amp;#x4F55;&amp;#x5143;&amp;#x7D20;&amp;#x3002;&amp;#x5982;&amp;#x679C;&amp;#x8BBE;&amp;#x7F6E;&amp;#x4E3A;&amp;#x6B63;&amp;#x6574;&amp;#x6570; &lt;code&gt;n&lt;/code&gt;&amp;#xFF0C;&amp;#x5219;&amp;#x5728;&amp;#x8BA2;&amp;#x9605;&amp;#x65F6;&amp;#x5C06;&amp;#x5411;&amp;#x65B0;&amp;#x8BA2;&amp;#x9605;&amp;#x8005;&amp;#x56DE;&amp;#x653E;&amp;#x6700;&amp;#x8FD1;&amp;#x7684; &lt;code&gt;n&lt;/code&gt; &amp;#x4E2A;&amp;#x5143;&amp;#x7D20;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;extraBufferCapacity&lt;/code&gt;&amp;#xFF1A;&lt;/strong&gt; &amp;#x8868;&amp;#x793A;&amp;#x989D;&amp;#x5916;&amp;#x7684;&amp;#x7F13;&amp;#x51B2;&amp;#x5BB9;&amp;#x91CF;&amp;#xFF0C;&amp;#x7528;&amp;#x4E8E;&amp;#x5B58;&amp;#x50A8;&amp;#x8BA2;&amp;#x9605;&amp;#x8005;&amp;#x5C1A;&amp;#x672A;&amp;#x6D88;&amp;#x8017;&amp;#x7684;&amp;#x5143;&amp;#x7D20;&amp;#x3002;&amp;#x9ED8;&amp;#x8BA4;&amp;#x503C;&amp;#x4E3A; &lt;code&gt;0&lt;/code&gt;&amp;#xFF0C;&amp;#x8868;&amp;#x793A;&amp;#x4E0D;&amp;#x4F7F;&amp;#x7528;&amp;#x989D;&amp;#x5916;&amp;#x7684;&amp;#x7F13;&amp;#x51B2;&amp;#x5BB9;&amp;#x91CF;&amp;#x3002;&amp;#x8BBE;&amp;#x7F6E;&amp;#x4E3A;&amp;#x6B63;&amp;#x6574;&amp;#x6570; &lt;code&gt;m&lt;/code&gt; &amp;#x65F6;&amp;#xFF0C;&amp;#x4F1A;&amp;#x5728;&amp;#x5185;&amp;#x90E8;&amp;#x4F7F;&amp;#x7528;&amp;#x4E00;&amp;#x4E2A;&amp;#x5E26;&amp;#x6709;&amp;#x989D;&amp;#x5916; &lt;code&gt;m&lt;/code&gt; &amp;#x5BB9;&amp;#x91CF;&amp;#x7684;&amp;#x7F13;&amp;#x51B2;&amp;#x533A;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&lt;code&gt;onBufferOverflow&lt;/code&gt;&amp;#xFF1A;&lt;/strong&gt; &amp;#x8868;&amp;#x793A;&amp;#x5728;&amp;#x7F13;&amp;#x51B2;&amp;#x533A;&amp;#x6EA2;&amp;#x51FA;&amp;#x65F6;&amp;#x7684;&amp;#x5904;&amp;#x7406;&amp;#x7B56;&amp;#x7565;&amp;#x3002;&amp;#x9ED8;&amp;#x8BA4;&amp;#x503C;&amp;#x4E3A; &lt;code&gt;BufferOverflow.SUSPEND&lt;/code&gt;&amp;#xFF0C;&amp;#x8868;&amp;#x793A;&amp;#x5F53;&amp;#x7F13;&amp;#x51B2;&amp;#x533A;&amp;#x6EA2;&amp;#x51FA;&amp;#x65F6;&amp;#x6682;&amp;#x505C;&amp;#x53D1;&amp;#x5C04;&amp;#xFF0C;&amp;#x7B49;&amp;#x5F85;&amp;#x8BA2;&amp;#x9605;&amp;#x8005;&amp;#x6D88;&amp;#x8D39;&amp;#x3002;&amp;#x5176;&amp;#x4ED6;&amp;#x9009;&amp;#x9879;&amp;#x8FD8;&amp;#x5305;&amp;#x62EC; &lt;code&gt;BufferOverflow.DROP_OLDEST&lt;/code&gt; &amp;#x548C; &lt;code&gt;BufferOverflow.DROP_LATEST&lt;/code&gt;&amp;#xFF0C;&amp;#x5B83;&amp;#x4EEC;&amp;#x5206;&amp;#x522B;&amp;#x8868;&amp;#x793A;&amp;#x5728;&amp;#x7F13;&amp;#x51B2;&amp;#x533A;&amp;#x6EA2;&amp;#x51FA;&amp;#x65F6;&amp;#x4E22;&amp;#x5F03;&amp;#x6700;&amp;#x8001;&amp;#x7684;&amp;#x5143;&amp;#x7D20;&amp;#x6216;&amp;#x6700;&amp;#x65B0;&amp;#x7684;&amp;#x5143;&amp;#x7D20;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;#x4F7F;&amp;#x7528;&amp;#x793A;&amp;#x4F8B;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; sharedFlow = MutableSharedFlow&amp;lt;&lt;span class=&quot;built_in&quot;&gt;Int&lt;/span&gt;&amp;gt;(replay = &lt;span class=&quot;number&quot;&gt;10&lt;/span&gt;, extraBufferCapacity = &lt;span class=&quot;number&quot;&gt;5&lt;/span&gt;, onBufferOverflow = BufferOverflow.DROP_OLDEST)&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x5728;&amp;#x8FD9;&amp;#x4E2A;&amp;#x793A;&amp;#x4F8B;&amp;#x4E2D;&amp;#xFF0C;&amp;#x521B;&amp;#x5EFA;&amp;#x4E86;&amp;#x4E00;&amp;#x4E2A;&amp;#x5E26;&amp;#x6709;&amp;#x56DE;&amp;#x653E;&amp;#x6570;&amp;#x91CF;&amp;#x4E3A;10&amp;#x3001;&amp;#x989D;&amp;#x5916;&amp;#x7F13;&amp;#x51B2;&amp;#x5BB9;&amp;#x91CF;&amp;#x4E3A;5&amp;#x3001;&amp;#x7F13;&amp;#x51B2;&amp;#x6EA2;&amp;#x51FA;&amp;#x5904;&amp;#x7406;&amp;#x7B56;&amp;#x7565;&amp;#x4E3A;&amp;#x4E22;&amp;#x5F03;&amp;#x6700;&amp;#x8001;&amp;#x5143;&amp;#x7D20;&amp;#x7684;&lt;code&gt;MutableSharedFlow&lt;/code&gt;&amp;#x3002;&amp;#x8FD9;&amp;#x91CC;&amp;#x7684;&amp;#x53C2;&amp;#x6570;&amp;#x503C;&amp;#x662F;&amp;#x53EF;&amp;#x6839;&amp;#x636E;&amp;#x5177;&amp;#x4F53;&amp;#x9700;&amp;#x6C42;&amp;#x8FDB;&amp;#x884C;&amp;#x8C03;&amp;#x6574;&amp;#x7684;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;MutableStateFlow&quot;&gt;&lt;a href=&quot;#MutableStateFlow&quot; class=&quot;headerlink&quot; title=&quot;MutableStateFlow&quot;&gt;&lt;/a&gt;MutableStateFlow&lt;/h2&gt;&lt;p&gt;&lt;code&gt;MutableStateFlow&lt;/code&gt; &amp;#x7684;&amp;#x6784;&amp;#x9020;&amp;#x51FD;&amp;#x6570;&amp;#x6709;&amp;#x4E00;&amp;#x4E2A;&amp;#x9ED8;&amp;#x8BA4;&amp;#x53C2;&amp;#x6570;&amp;#xFF0C;&amp;#x5373;&amp;#x521D;&amp;#x59CB;&amp;#x72B6;&amp;#x6001;&amp;#x503C;&amp;#x3002;&amp;#x4EE5;&amp;#x4E0B;&amp;#x662F; &lt;code&gt;MutableStateFlow&lt;/code&gt; &amp;#x6784;&amp;#x9020;&amp;#x51FD;&amp;#x6570;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;type&quot;&gt;&amp;lt;T&amp;gt;&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;MutableStateFlow&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(value: &lt;span class=&quot;type&quot;&gt;T&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;: MutableStateFlow&amp;lt;T&amp;gt; = StateFlowImpl(value ?: NULL)&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x6784;&amp;#x9020;&amp;#x51FD;&amp;#x6570;&amp;#x4E2D;&amp;#x7684; &lt;code&gt;value&lt;/code&gt; &amp;#x53C2;&amp;#x6570;&amp;#x8868;&amp;#x793A; &lt;code&gt;MutableStateFlow&lt;/code&gt; &amp;#x7684;&amp;#x521D;&amp;#x59CB;&amp;#x72B6;&amp;#x6001;&amp;#x503C;&amp;#x3002;&amp;#x5728;&amp;#x521B;&amp;#x5EFA; &lt;code&gt;MutableStateFlow&lt;/code&gt; &amp;#x65F6;&amp;#xFF0C;&amp;#x9700;&amp;#x8981;&amp;#x63D0;&amp;#x4F9B;&amp;#x8FD9;&amp;#x4E2A;&amp;#x521D;&amp;#x59CB;&amp;#x72B6;&amp;#x6001;&amp;#x503C;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x4EE5;&amp;#x4E0B;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x793A;&amp;#x4F8B;&amp;#xFF0C;&amp;#x6F14;&amp;#x793A;&amp;#x5982;&amp;#x4F55;&amp;#x521B;&amp;#x5EFA;&amp;#x4E00;&amp;#x4E2A;&amp;#x5E26;&amp;#x6709;&amp;#x521D;&amp;#x59CB;&amp;#x72B6;&amp;#x6001;&amp;#x503C;&amp;#x7684; &lt;code&gt;MutableStateFlow&lt;/code&gt;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;import&lt;/span&gt; kotlinx.coroutines.flow.MutableStateFlow&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;import&lt;/span&gt; kotlinx.coroutines.flow.collect&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;import&lt;/span&gt; kotlinx.coroutines.runBlocking&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt;&lt;/span&gt; = runBlocking {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; initialState = &lt;span class=&quot;string&quot;&gt;&amp;quot;Initial State&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; stateFlow = MutableStateFlow(initialState)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x89C2;&amp;#x5BDF;&amp;#x8005;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; job = launch {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        stateFlow.collect { value -&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            println(&lt;span class=&quot;string&quot;&gt;&amp;quot;Received: &lt;span class=&quot;variable&quot;&gt;$value&lt;/span&gt;&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x4FEE;&amp;#x6539;&amp;#x72B6;&amp;#x6001;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    stateFlow.value = &lt;span class=&quot;string&quot;&gt;&amp;quot;New State&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x7B49;&amp;#x5F85;&amp;#x89C2;&amp;#x5BDF;&amp;#x8005;&amp;#x6267;&amp;#x884C;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    job.join()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x5728;&amp;#x8FD9;&amp;#x4E2A;&amp;#x4F8B;&amp;#x5B50;&amp;#x4E2D;&amp;#xFF0C;&lt;code&gt;initialState&lt;/code&gt; &amp;#x662F; &lt;code&gt;MutableStateFlow&lt;/code&gt; &amp;#x7684;&amp;#x521D;&amp;#x59CB;&amp;#x72B6;&amp;#x6001;&amp;#x503C;&amp;#xFF0C;&amp;#x901A;&amp;#x8FC7;&amp;#x6784;&amp;#x9020;&amp;#x51FD;&amp;#x6570;&amp;#x4F20;&amp;#x9012;&amp;#x7ED9; &lt;code&gt;MutableStateFlow&lt;/code&gt;&amp;#x3002;&amp;#x7136;&amp;#x540E;&amp;#xFF0C;&amp;#x901A;&amp;#x8FC7;&amp;#x4FEE;&amp;#x6539; &lt;code&gt;stateFlow.value&lt;/code&gt;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x66F4;&amp;#x65B0; &lt;code&gt;MutableStateFlow&lt;/code&gt; &amp;#x7684;&amp;#x72B6;&amp;#x6001;&amp;#x503C;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;SharedFlow&amp;#x3001;StateFlow&amp;#x4E0E;LiveData&amp;#x7684;&amp;#x533A;&amp;#x522B;&quot;&gt;&lt;a href=&quot;#SharedFlow&amp;#x3001;StateFlow&amp;#x4E0E;LiveData&amp;#x7684;&amp;#x533A;&amp;#x522B;&quot; class=&quot;headerlink&quot; title=&quot;SharedFlow&amp;#x3001;StateFlow&amp;#x4E0E;LiveData&amp;#x7684;&amp;#x533A;&amp;#x522B;&quot;&gt;&lt;/a&gt;SharedFlow&amp;#x3001;StateFlow&amp;#x4E0E;LiveData&amp;#x7684;&amp;#x533A;&amp;#x522B;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;StateFlow&lt;/code&gt;&amp;#x5C31;&amp;#x662F;&lt;code&gt;SharedFlow&lt;/code&gt;&amp;#x7684;&amp;#x4E00;&amp;#x79CD;&amp;#x7279;&amp;#x6B8A;&amp;#x7C7B;&amp;#x578B;&amp;#xFF0C;&amp;#x7279;&amp;#x70B9;&amp;#x6709;&amp;#x4E09;&amp;#xFF1A;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&amp;#x5B83;&amp;#x7684;replay&amp;#x5BB9;&amp;#x91CF;&amp;#x4E3A; 1&amp;#xFF1B;&amp;#x5373;&amp;#x53EF;&amp;#x7F13;&amp;#x5B58;&amp;#x6700;&amp;#x8FD1;&amp;#x7684;&amp;#x4E00;&amp;#x6B21;&amp;#x7C98;&amp;#x6027;&amp;#x4E8B;&amp;#x4EF6;&amp;#xFF0C;&amp;#x5982;&amp;#x679C;&amp;#x60F3;&amp;#x907F;&amp;#x514D;&amp;#x7C98;&amp;#x6027;&amp;#x4E8B;&amp;#x4EF6;&amp;#x95EE;&amp;#x9898;&amp;#xFF0C;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;SharedFlow&lt;/code&gt;&amp;#xFF0C;replay&amp;#x9ED8;&amp;#x8BA4;&amp;#x503C;0&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x65F6;&amp;#x5FC5;&amp;#x987B;&amp;#x7ED9;&amp;#x5B83;&amp;#x8BBE;&amp;#x7F6E;&amp;#x4E00;&amp;#x4E2A;&amp;#x521D;&amp;#x59CB;&amp;#x503C;&lt;/li&gt;
&lt;li&gt;&amp;#x6BCF;&amp;#x6B21;&amp;#x53D1;&amp;#x9001;&amp;#x6570;&amp;#x636E;&amp;#x90FD;&amp;#x4F1A;&amp;#x4E0E;&amp;#x4E0A;&amp;#x6B21;&amp;#x7F13;&amp;#x5B58;&amp;#x7684;&amp;#x6570;&amp;#x636E;&amp;#x4F5C;&amp;#x6BD4;&amp;#x8F83;&amp;#xFF0C;&amp;#x53EA;&amp;#x6709;&amp;#x4E0D;&amp;#x4E00;&amp;#x6837;&amp;#x624D;&amp;#x4F1A;&amp;#x53D1;&amp;#x9001;&amp;#x3002; &amp;#x5B83;&amp;#x8FD8;&amp;#x53EF;&amp;#x76F4;&amp;#x63A5;&amp;#x8BBF;&amp;#x95EE;&amp;#x5B83;&amp;#x81EA;&amp;#x5DF1;&amp;#x7684;value&amp;#x53C2;&amp;#x6570;&amp;#x83B7;&amp;#x53D6;&amp;#x5F53;&amp;#x524D;&amp;#x7ED3;&amp;#x679C;&amp;#x503C;&amp;#xFF0C;&amp;#x5728;&amp;#x4F7F;&amp;#x7528;&amp;#x4E0A;&amp;#x4E0E;&lt;code&gt;LiveData&lt;/code&gt;&amp;#x76F8;&amp;#x4F3C;&amp;#x3002;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;#x4E0E;&lt;code&gt;LiveData&lt;/code&gt;&amp;#x7684;&amp;#x4E0D;&amp;#x540C;&amp;#x70B9;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;code&gt;StateFlow&lt;/code&gt;&amp;#x5FC5;&amp;#x987B;&amp;#x5728;&amp;#x6784;&amp;#x5EFA;&amp;#x7684;&amp;#x65F6;&amp;#x5019;&amp;#x4F20;&amp;#x5165;&amp;#x521D;&amp;#x59CB;&amp;#x503C;&amp;#xFF0C;&lt;code&gt;LiveData&lt;/code&gt;&amp;#x4E0D;&amp;#x9700;&amp;#x8981;&amp;#xFF1B;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;StateFlow&lt;/code&gt;&amp;#x9ED8;&amp;#x8BA4;&amp;#x662F;&amp;#x9632;&amp;#x6296;&amp;#x7684;&amp;#xFF0C;&amp;#x5373;&amp;#x76F8;&amp;#x540C;&amp;#x503C;&amp;#x4E0D;&amp;#x66F4;&amp;#x65B0;&amp;#xFF0C;&lt;code&gt;LiveData&lt;/code&gt;&amp;#x9ED8;&amp;#x8BA4;&amp;#x4E0D;&amp;#x9632;&amp;#x6296;&amp;#xFF1B;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;StateFlow&lt;/code&gt;&amp;#x9ED8;&amp;#x8BA4;&amp;#x6CA1;&amp;#x6709;&amp;#x548C;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x7ED1;&amp;#x5B9A;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;&amp;#x7B80;&amp;#x5355;&amp;#x793A;&amp;#x4F8B;&quot;&gt;&lt;a href=&quot;#&amp;#x7B80;&amp;#x5355;&amp;#x793A;&amp;#x4F8B;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x7B80;&amp;#x5355;&amp;#x793A;&amp;#x4F8B;&quot;&gt;&lt;/a&gt;&amp;#x7B80;&amp;#x5355;&amp;#x793A;&amp;#x4F8B;&lt;/h2&gt;&lt;p&gt;&amp;#x4E3A;&amp;#x4E86;&amp;#x5E2E;&amp;#x52A9;&amp;#x5927;&amp;#x5BB6;&amp;#x66F4;&amp;#x597D;&amp;#x5730;&amp;#x7406;&amp;#x89E3;&amp;#xFF0C;&amp;#x4EE5;&amp;#x4E0B;&amp;#x662F;&amp;#x4F7F;&amp;#x7528; &lt;code&gt;SharedFlow&lt;/code&gt; &amp;#x548C; &lt;code&gt;StateFlow&lt;/code&gt; &amp;#x7684;&amp;#x7B80;&amp;#x5355;&amp;#x793A;&amp;#x4F8B;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// SharedFlow &amp;#x793A;&amp;#x4F8B;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; sharedFlow = MutableSharedFlow&amp;lt;String&amp;gt;()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x8BA2;&amp;#x9605;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;sharedFlow.collect { value -&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    println(&lt;span class=&quot;string&quot;&gt;&amp;quot;Received: &lt;span class=&quot;variable&quot;&gt;$value&lt;/span&gt;&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x53D1;&amp;#x9001;&amp;#x6570;&amp;#x636E;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;sharedFlow.emit(&lt;span class=&quot;string&quot;&gt;&amp;quot;Hello, SharedFlow!&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// StateFlow &amp;#x793A;&amp;#x4F8B;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; stateFlow = MutableStateFlow(&lt;span class=&quot;string&quot;&gt;&amp;quot;Initial State&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x8BA2;&amp;#x9605;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;stateFlow.collect { value -&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    println(&lt;span class=&quot;string&quot;&gt;&amp;quot;Current State: &lt;span class=&quot;variable&quot;&gt;$value&lt;/span&gt;&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x66F4;&amp;#x65B0;&amp;#x72B6;&amp;#x6001;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;stateFlow.value = &lt;span class=&quot;string&quot;&gt;&amp;quot;New State&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h2 id=&quot;&amp;#x9AD8;&amp;#x7EA7;&amp;#x4F7F;&amp;#x7528;&amp;#x6280;&amp;#x5DE7;&quot;&gt;&lt;a href=&quot;#&amp;#x9AD8;&amp;#x7EA7;&amp;#x4F7F;&amp;#x7528;&amp;#x6280;&amp;#x5DE7;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x9AD8;&amp;#x7EA7;&amp;#x4F7F;&amp;#x7528;&amp;#x6280;&amp;#x5DE7;&quot;&gt;&lt;/a&gt;&amp;#x9AD8;&amp;#x7EA7;&amp;#x4F7F;&amp;#x7528;&amp;#x6280;&amp;#x5DE7;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x9519;&amp;#x8BEF;&amp;#x5904;&amp;#x7406;&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;#x5728;&amp;#x8BA2;&amp;#x9605;&amp;#x6D41;&amp;#x65F6;&amp;#xFF0C;&amp;#x8003;&amp;#x8651;&amp;#x6DFB;&amp;#x52A0;&amp;#x9519;&amp;#x8BEF;&amp;#x5904;&amp;#x7406;&amp;#x673A;&amp;#x5236;&amp;#xFF0C;&amp;#x4EE5;&amp;#x786E;&amp;#x4FDD;&amp;#x5728;&amp;#x6D41;&amp;#x4E2D;&amp;#x51FA;&amp;#x73B0;&amp;#x9519;&amp;#x8BEF;&amp;#x65F6;&amp;#x80FD;&amp;#x591F;&amp;#x5F97;&amp;#x5230;&amp;#x9002;&amp;#x5F53;&amp;#x7684;&amp;#x5904;&amp;#x7406;&amp;#xFF0C;&amp;#x9632;&amp;#x6B62;&amp;#x9519;&amp;#x8BEF;&amp;#x4F20;&amp;#x64AD;&amp;#x5BFC;&amp;#x81F4;&amp;#x5E94;&amp;#x7528;&amp;#x5D29;&amp;#x6E83;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;sharedFlow.&lt;span class=&quot;keyword&quot;&gt;catch&lt;/span&gt; { exception -&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x5904;&amp;#x7406;&amp;#x9519;&amp;#x8BEF;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}.collect { value -&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x5904;&amp;#x7406;&amp;#x6B63;&amp;#x5E38;&amp;#x6570;&amp;#x636E;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x6D41;&amp;#x7684;&amp;#x5B8C;&amp;#x6210;&amp;#x5904;&amp;#x7406;&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;onCompletion&lt;/code&gt;&amp;#x6765;&amp;#x5904;&amp;#x7406;&amp;#x6D41;&amp;#x7684;&amp;#x5B8C;&amp;#x6210;&amp;#x4E8B;&amp;#x4EF6;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x5728;&amp;#x6D41;&amp;#x5B8C;&amp;#x6210;&amp;#x65F6;&amp;#x6267;&amp;#x884C;&amp;#x4E00;&amp;#x4E9B;&amp;#x6E05;&amp;#x7406;&amp;#x5DE5;&amp;#x4F5C;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;sharedFlow.onCompletion { cause -&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt; (cause != &lt;span class=&quot;literal&quot;&gt;null&lt;/span&gt;) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x5904;&amp;#x7406;&amp;#x6D41;&amp;#x5F02;&amp;#x5E38;&amp;#x5B8C;&amp;#x6210;&amp;#x7684;&amp;#x60C5;&amp;#x51B5;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    } &lt;span class=&quot;keyword&quot;&gt;else&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x5904;&amp;#x7406;&amp;#x6B63;&amp;#x5E38;&amp;#x5B8C;&amp;#x6210;&amp;#x7684;&amp;#x60C5;&amp;#x51B5;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}.collect { value -&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x5904;&amp;#x7406;&amp;#x6B63;&amp;#x5E38;&amp;#x6570;&amp;#x636E;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x5171;&amp;#x4EAB;&amp;#x7684;&amp;#x51B7;&amp;#x6D41;&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;SharingStarted.WhileSubscribed&lt;/code&gt;&amp;#x6765;&amp;#x521B;&amp;#x5EFA;&amp;#x5171;&amp;#x4EAB;&amp;#x7684;&amp;#x51B7;&amp;#x6D41;&amp;#xFF0C;&amp;#x786E;&amp;#x4FDD;&amp;#x53EA;&amp;#x6709;&amp;#x81F3;&amp;#x5C11;&amp;#x4E00;&amp;#x4E2A;&amp;#x8BA2;&amp;#x9605;&amp;#x8005;&amp;#x65F6;&amp;#xFF0C;&amp;#x5171;&amp;#x4EAB;&amp;#x6D41;&amp;#x624D;&amp;#x4F1A;&amp;#x6FC0;&amp;#x6D3B;&amp;#x3002;&amp;#x8FD9;&amp;#x5728;&amp;#x4E8B;&amp;#x4EF6;&amp;#x901A;&amp;#x77E5;&amp;#x7684;&amp;#x573A;&amp;#x666F;&amp;#x4E2D;&amp;#x975E;&amp;#x5E38;&amp;#x6709;&amp;#x7528;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; sharedFlow = flowOf(&lt;span class=&quot;number&quot;&gt;1&lt;/span&gt;, &lt;span class=&quot;number&quot;&gt;2&lt;/span&gt;, &lt;span class=&quot;number&quot;&gt;3&lt;/span&gt;).shareIn(viewModelScope, SharingStarted.WhileSubscribed())&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;ol start=&quot;4&quot;&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x80CC;&amp;#x538B;&amp;#x7B56;&amp;#x7565;&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;#x5728;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;buffer&lt;/code&gt;&amp;#x6216;&lt;code&gt;conflate&lt;/code&gt;&amp;#x7B49;&amp;#x80CC;&amp;#x538B;&amp;#x7B56;&amp;#x7565;&amp;#x65F6;&amp;#xFF0C;&amp;#x6CE8;&amp;#x610F;&amp;#x6839;&amp;#x636E;&amp;#x5B9E;&amp;#x9645;&amp;#x573A;&amp;#x666F;&amp;#x9009;&amp;#x62E9;&amp;#x5408;&amp;#x9002;&amp;#x7684;&amp;#x7B56;&amp;#x7565;&amp;#xFF0C;&amp;#x4EE5;&amp;#x5E73;&amp;#x8861;&amp;#x6027;&amp;#x80FD;&amp;#x548C;&amp;#x5185;&amp;#x5B58;&amp;#x7684;&amp;#x6D88;&amp;#x8017;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;sharedFlow&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    .buffer(Channel.CONFLATED) &lt;span class=&quot;comment&quot;&gt;// &amp;#x6216;&amp;#x8005; buffer(size = n)&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    .collect { value -&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x5904;&amp;#x7406;&amp;#x6570;&amp;#x636E;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;ol start=&quot;5&quot;&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x8FC7;&amp;#x6EE4;&amp;#x91CD;&amp;#x590D;&amp;#x7684;&amp;#x72B6;&amp;#x6001;&lt;/strong&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;distinctUntilChanged&lt;/code&gt;&amp;#x6765;&amp;#x8FC7;&amp;#x6EE4;&amp;#x6389;&amp;#x91CD;&amp;#x590D;&amp;#x7684;&amp;#x72B6;&amp;#x6001;&amp;#xFF0C;&amp;#x786E;&amp;#x4FDD;&amp;#x53EA;&amp;#x5728;&amp;#x72B6;&amp;#x6001;&amp;#x53D1;&amp;#x751F;&amp;#x53D8;&amp;#x5316;&amp;#x65F6;&amp;#x901A;&amp;#x77E5;&amp;#x8BA2;&amp;#x9605;&amp;#x8005;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;stateFlow&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    .distinctUntilChanged()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    .collect { state -&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x5904;&amp;#x7406;&amp;#x72B6;&amp;#x6001;&amp;#x53D8;&amp;#x5316;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h2 id=&quot;&amp;#x5B9E;&amp;#x8DF5;&amp;#x8FD0;&amp;#x7528;&quot;&gt;&lt;a href=&quot;#&amp;#x5B9E;&amp;#x8DF5;&amp;#x8FD0;&amp;#x7528;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5B9E;&amp;#x8DF5;&amp;#x8FD0;&amp;#x7528;&quot;&gt;&lt;/a&gt;&amp;#x5B9E;&amp;#x8DF5;&amp;#x8FD0;&amp;#x7528;&lt;/h2&gt;&lt;h3 id=&quot;&amp;#x5168;&amp;#x5C40;&amp;#x4E3B;&amp;#x9898;&amp;#x6A21;&amp;#x5F0F;&amp;#x7BA1;&amp;#x7406;&quot;&gt;&lt;a href=&quot;#&amp;#x5168;&amp;#x5C40;&amp;#x4E3B;&amp;#x9898;&amp;#x6A21;&amp;#x5F0F;&amp;#x7BA1;&amp;#x7406;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5168;&amp;#x5C40;&amp;#x4E3B;&amp;#x9898;&amp;#x6A21;&amp;#x5F0F;&amp;#x7BA1;&amp;#x7406;&quot;&gt;&lt;/a&gt;&amp;#x5168;&amp;#x5C40;&amp;#x4E3B;&amp;#x9898;&amp;#x6A21;&amp;#x5F0F;&amp;#x7BA1;&amp;#x7406;&lt;/h3&gt;&lt;p&gt;&amp;#x5047;&amp;#x8BBE;&amp;#x6211;&amp;#x4EEC;&amp;#x9700;&amp;#x8981;&amp;#x5728;&amp;#x5E94;&amp;#x7528;&amp;#x4E2D;&amp;#x7BA1;&amp;#x7406;&amp;#x5168;&amp;#x5C40;&amp;#x7684;&amp;#x4E3B;&amp;#x9898;&amp;#x6A21;&amp;#x5F0F;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x53EF;&amp;#x4EE5;&amp;#x4F7F;&amp;#x7528; StateFlow&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;object&lt;/span&gt; ThemeManager {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; _themeStateFlow = MutableStateFlow(Theme.Light)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; themeStateFlow: StateFlow&amp;lt;Theme&amp;gt; &lt;span class=&quot;keyword&quot;&gt;get&lt;/span&gt;() = _themeStateFlow&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;setTheme&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(theme: &lt;span class=&quot;type&quot;&gt;Theme&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        viewModelScope.launch {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            _themeStateFlow.value = theme&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x5728;&amp;#x4E0A;&amp;#x8FF0;&amp;#x793A;&amp;#x4F8B;&amp;#x4E2D;&amp;#xFF0C;&lt;code&gt;ThemeManager&lt;/code&gt; &amp;#x4F7F;&amp;#x7528; &lt;code&gt;MutableStateFlow&lt;/code&gt; &amp;#x6765;&amp;#x521B;&amp;#x5EFA;&amp;#x4E00;&amp;#x4E2A;&amp;#x7BA1;&amp;#x7406;&amp;#x4E3B;&amp;#x9898;&amp;#x6A21;&amp;#x5F0F;&amp;#x7684; StateFlow&amp;#x3002;&amp;#x5F53;&amp;#x4E3B;&amp;#x9898;&amp;#x6A21;&amp;#x5F0F;&amp;#x53D1;&amp;#x751F;&amp;#x53D8;&amp;#x5316;&amp;#x65F6;&amp;#xFF0C;&amp;#x901A;&amp;#x8FC7; &lt;code&gt;setTheme&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x6765;&amp;#x66F4;&amp;#x65B0; StateFlow&amp;#xFF0C;&amp;#x6240;&amp;#x6709;&amp;#x8BA2;&amp;#x9605;&amp;#x8005;&amp;#x90FD;&amp;#x4F1A;&amp;#x6536;&amp;#x5230;&amp;#x6700;&amp;#x65B0;&amp;#x7684;&amp;#x4E3B;&amp;#x9898;&amp;#x6A21;&amp;#x5F0F;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x5728;&amp;#x9700;&amp;#x8981;&amp;#x8BA2;&amp;#x9605;&amp;#x4E3B;&amp;#x9898;&amp;#x6A21;&amp;#x5F0F;&amp;#x7684;&amp;#x5730;&amp;#x65B9;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x8FD9;&amp;#x6837;&amp;#x4F7F;&amp;#x7528;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;ThemedFragment&lt;/span&gt; : &lt;span class=&quot;type&quot;&gt;Fragment&lt;/span&gt;&lt;/span&gt;() {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;onViewCreated&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(view: &lt;span class=&quot;type&quot;&gt;View&lt;/span&gt;, savedInstanceState: &lt;span class=&quot;type&quot;&gt;Bundle&lt;/span&gt;?)&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;super&lt;/span&gt;.onViewCreated(view, savedInstanceState)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        viewModelScope.launch {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            ThemeManager.themeStateFlow.collect { theme -&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;comment&quot;&gt;// &amp;#x6839;&amp;#x636E;&amp;#x4E3B;&amp;#x9898;&amp;#x6A21;&amp;#x5F0F;&amp;#x66F4;&amp;#x65B0; UI&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h3 id=&quot;&amp;#x5373;&amp;#x65F6;&amp;#x804A;&amp;#x5929;&amp;#x5E94;&amp;#x7528;&quot;&gt;&lt;a href=&quot;#&amp;#x5373;&amp;#x65F6;&amp;#x804A;&amp;#x5929;&amp;#x5E94;&amp;#x7528;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5373;&amp;#x65F6;&amp;#x804A;&amp;#x5929;&amp;#x5E94;&amp;#x7528;&quot;&gt;&lt;/a&gt;&amp;#x5373;&amp;#x65F6;&amp;#x804A;&amp;#x5929;&amp;#x5E94;&amp;#x7528;&lt;/h3&gt;&lt;p&gt;&amp;#x5F53;&amp;#x6D89;&amp;#x53CA;&amp;#x5230;&amp;#x5171;&amp;#x4EAB;&amp;#x6570;&amp;#x636E;&amp;#x72B6;&amp;#x6001;&amp;#x7684;&amp;#x573A;&amp;#x666F;&amp;#x65F6;&amp;#xFF0C;&lt;code&gt;SharedFlow&lt;/code&gt; &amp;#x901A;&amp;#x5E38;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x5408;&amp;#x7406;&amp;#x7684;&amp;#x9009;&amp;#x62E9;&amp;#x3002;&lt;br&gt;&amp;#x5047;&amp;#x8BBE;&amp;#x6211;&amp;#x4EEC;&amp;#x8981;&amp;#x5B9E;&amp;#x73B0;&amp;#x4E00;&amp;#x4E2A;&amp;#x5373;&amp;#x65F6;&amp;#x804A;&amp;#x5929;&amp;#x5E94;&amp;#x7528;&amp;#xFF0C;&amp;#x591A;&amp;#x4E2A;&amp;#x9875;&amp;#x9762;&amp;#x6216;&amp;#x7EC4;&amp;#x4EF6;&amp;#x9700;&amp;#x8981;&amp;#x83B7;&amp;#x53D6;&amp;#x6700;&amp;#x8FD1;&amp;#x7684;&amp;#x804A;&amp;#x5929;&amp;#x6D88;&amp;#x606F;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;object&lt;/span&gt; ChatManager {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; _chatMessagesFlow = MutableSharedFlow&amp;lt;ChatMessage&amp;gt;(replay = &lt;span class=&quot;number&quot;&gt;5&lt;/span&gt;, extraBufferCapacity = &lt;span class=&quot;number&quot;&gt;1&lt;/span&gt;, onBufferOverflow = BufferOverflow.DROP_LATEST)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; chatMessagesFlow: SharedFlow&amp;lt;ChatMessage&amp;gt; &lt;span class=&quot;keyword&quot;&gt;get&lt;/span&gt;() = _chatMessagesFlow&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;sendChatMessage&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(message: &lt;span class=&quot;type&quot;&gt;String&lt;/span&gt;, sender: &lt;span class=&quot;type&quot;&gt;String&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; chatMessage = ChatMessage(message, sender, System.currentTimeMillis())&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        viewModelScope.launch {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            _chatMessagesFlow.emit(chatMessage)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x5728;&amp;#x8FD9;&amp;#x4E2A;&amp;#x793A;&amp;#x4F8B;&amp;#x4E2D;&amp;#xFF0C;&lt;code&gt;ChatManager&lt;/code&gt; &amp;#x4F7F;&amp;#x7528; &lt;code&gt;MutableSharedFlow&lt;/code&gt; &amp;#x6765;&amp;#x521B;&amp;#x5EFA;&amp;#x4E00;&amp;#x4E2A;&amp;#x5B9E;&amp;#x65F6;&amp;#x901A;&amp;#x77E5;&amp;#x804A;&amp;#x5929;&amp;#x6D88;&amp;#x606F;&amp;#x53D8;&amp;#x5316;&amp;#x7684; &lt;code&gt;SharedFlow&lt;/code&gt;&amp;#x3002;&amp;#x5F53;&amp;#x6709;&amp;#x65B0;&amp;#x7684;&amp;#x804A;&amp;#x5929;&amp;#x6D88;&amp;#x606F;&amp;#x65F6;&amp;#xFF0C;&amp;#x901A;&amp;#x8FC7; &lt;code&gt;sendChatMessage&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x66F4;&amp;#x65B0; &lt;code&gt;SharedFlow&lt;/code&gt;&amp;#xFF0C;&amp;#x6240;&amp;#x6709;&amp;#x8BA2;&amp;#x9605;&amp;#x8005;&amp;#x90FD;&amp;#x80FD;&amp;#x83B7;&amp;#x53D6;&amp;#x5230;&amp;#x6700;&amp;#x8FD1;&amp;#x7684;&amp;#x6570;&amp;#x636E;&amp;#x5E8F;&amp;#x5217;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x5728;&amp;#x9700;&amp;#x8981;&amp;#x8BA2;&amp;#x9605;&amp;#x804A;&amp;#x5929;&amp;#x6D88;&amp;#x606F;&amp;#x7684;&amp;#x5730;&amp;#x65B9;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x8FD9;&amp;#x6837;&amp;#x4F7F;&amp;#x7528;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;ChatFragment&lt;/span&gt; : &lt;span class=&quot;type&quot;&gt;Fragment&lt;/span&gt;&lt;/span&gt;() {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;onViewCreated&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(view: &lt;span class=&quot;type&quot;&gt;View&lt;/span&gt;, savedInstanceState: &lt;span class=&quot;type&quot;&gt;Bundle&lt;/span&gt;?)&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;super&lt;/span&gt;.onViewCreated(view, savedInstanceState)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        viewModelScope.launch {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            ChatManager.chatMessagesFlow.collect { chatMessage -&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                &lt;span class=&quot;comment&quot;&gt;// &amp;#x5904;&amp;#x7406;&amp;#x6536;&amp;#x5230;&amp;#x7684;&amp;#x804A;&amp;#x5929;&amp;#x6D88;&amp;#x606F;&amp;#xFF0C;&amp;#x66F4;&amp;#x65B0; UI&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h2 id=&quot;&amp;#x7ED3;&amp;#x8BED;&quot;&gt;&lt;a href=&quot;#&amp;#x7ED3;&amp;#x8BED;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x7ED3;&amp;#x8BED;&quot;&gt;&lt;/a&gt;&amp;#x7ED3;&amp;#x8BED;&lt;/h2&gt;&lt;p&gt;&amp;#x901A;&amp;#x8FC7;&amp;#x672C;&amp;#x6587;&amp;#x7684;&amp;#x4ECB;&amp;#x7ECD;&amp;#xFF0C;&amp;#x76F8;&amp;#x4FE1;&amp;#x8BFB;&amp;#x8005;&amp;#x5DF2;&amp;#x7ECF;&amp;#x5BF9;&lt;code&gt;SharedFlow&lt;/code&gt;&amp;#x548C;&lt;code&gt;StateFlow&lt;/code&gt;&amp;#x6709;&amp;#x4E86;&amp;#x66F4;&amp;#x6DF1;&amp;#x5165;&amp;#x7684;&amp;#x4E86;&amp;#x89E3;&amp;#x3002;&amp;#x5728;&amp;#x5B9E;&amp;#x9645;&amp;#x5E94;&amp;#x7528;&amp;#x4E2D;&amp;#xFF0C;&amp;#x63D0;&amp;#x9AD8;Android&amp;#x5E94;&amp;#x7528;&amp;#x7684;&amp;#x5F00;&amp;#x53D1;&amp;#x6548;&amp;#x7387;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;a href=&quot;#&amp;#x63A8;&amp;#x8350;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;/a&gt;&amp;#x63A8;&amp;#x8350;&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-startup&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android_startup&lt;/a&gt;: &amp;#x63D0;&amp;#x4F9B;&amp;#x4E00;&amp;#x79CD;&amp;#x5728;&amp;#x5E94;&amp;#x7528;&amp;#x542F;&amp;#x52A8;&amp;#x65F6;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x52A0;&amp;#x7B80;&amp;#x5355;&amp;#x3001;&amp;#x9AD8;&amp;#x6548;&amp;#x7684;&amp;#x65B9;&amp;#x5F0F;&amp;#x6765;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x7EC4;&amp;#x4EF6;&amp;#xFF0C;&amp;#x4F18;&amp;#x5316;&amp;#x542F;&amp;#x52A8;&amp;#x901F;&amp;#x5EA6;&amp;#x3002;&amp;#x4E0D;&amp;#x4EC5;&amp;#x652F;&amp;#x6301;Jetpack App Startup&amp;#x7684;&amp;#x5168;&amp;#x90E8;&amp;#x529F;&amp;#x80FD;&amp;#xFF0C;&amp;#x8FD8;&amp;#x63D0;&amp;#x4F9B;&amp;#x989D;&amp;#x5916;&amp;#x7684;&amp;#x540C;&amp;#x6B65;&amp;#x4E0E;&amp;#x5F02;&amp;#x6B65;&amp;#x7B49;&amp;#x5F85;&amp;#x3001;&amp;#x7EBF;&amp;#x7A0B;&amp;#x63A7;&amp;#x5236;&amp;#x4E0E;&amp;#x591A;&amp;#x8FDB;&amp;#x7A0B;&amp;#x652F;&amp;#x6301;&amp;#x7B49;&amp;#x529F;&amp;#x80FD;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/AwesomeGithub&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AwesomeGithub&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Github&amp;#x7684;&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x7EAF;&amp;#x7EC3;&amp;#x4E60;&amp;#x9879;&amp;#x76EE;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x7EC4;&amp;#x4EF6;&amp;#x5316;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x8D26;&amp;#x6237;&amp;#x5BC6;&amp;#x7801;&amp;#x4E0E;&amp;#x8BA4;&amp;#x8BC1;&amp;#x767B;&amp;#x9646;&amp;#x3002;&amp;#x4F7F;&amp;#x7528;Kotlin&amp;#x8BED;&amp;#x8A00;&amp;#x8FDB;&amp;#x884C;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x9879;&amp;#x76EE;&amp;#x67B6;&amp;#x6784;&amp;#x662F;&amp;#x57FA;&amp;#x4E8E;JetPack\&amp;amp;DataBinding&amp;#x7684;MVVM&amp;#xFF1B;&amp;#x9879;&amp;#x76EE;&amp;#x4E2D;&amp;#x4F7F;&amp;#x7528;&amp;#x4E86;Arouter&amp;#x3001;Retrofit&amp;#x3001;Coroutine&amp;#x3001;Glide&amp;#x3001;Dagger&amp;#x4E0E;Hilt&amp;#x7B49;&amp;#x6D41;&amp;#x884C;&amp;#x5F00;&amp;#x6E90;&amp;#x6280;&amp;#x672F;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/flutter_github&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;flutter_github&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Flutter&amp;#x7684;&amp;#x8DE8;&amp;#x5E73;&amp;#x53F0;&amp;#x7248;&amp;#x672C;Github&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x4E0E;AwesomeGithub&amp;#x76F8;&amp;#x5BF9;&amp;#x5E94;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-api-analysis&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android-api-analysis&lt;/a&gt;: &amp;#x7ED3;&amp;#x5408;&amp;#x8BE6;&amp;#x7EC6;&amp;#x7684;Demo&amp;#x6765;&amp;#x5168;&amp;#x9762;&amp;#x89E3;&amp;#x6790;Android&amp;#x76F8;&amp;#x5173;&amp;#x7684;&amp;#x77E5;&amp;#x8BC6;&amp;#x70B9;, &amp;#x5E2E;&amp;#x52A9;&amp;#x8BFB;&amp;#x8005;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x5FEB;&amp;#x7684;&amp;#x638C;&amp;#x63E1;&amp;#x4E0E;&amp;#x7406;&amp;#x89E3;&amp;#x6240;&amp;#x9610;&amp;#x8FF0;&amp;#x7684;&amp;#x8981;&amp;#x70B9;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/daily_algorithm&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;daily_algorithm&lt;/a&gt;: &amp;#x6BCF;&amp;#x65E5;&amp;#x4E00;&amp;#x7B97;&amp;#x6CD5;&amp;#xFF0C;&amp;#x7531;&amp;#x6D45;&amp;#x5165;&amp;#x6DF1;&amp;#xFF0C;&amp;#x6B22;&amp;#x8FCE;&amp;#x52A0;&amp;#x5165;&amp;#x4E00;&amp;#x8D77;&amp;#x5171;&amp;#x52C9;&amp;#x3002;&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;h2 id=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;a href=&quot;#&amp;#x5F15;&amp;#x8A00;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;/a&gt;&amp;#x5F15;&amp;#x8A00;&lt;/h2&gt;&lt;p&gt;&amp;#x5728;Androi
    
    </summary>
    
      <category term="android" scheme="https://www.rousetime.com/categories/android/"/>
    
    
      <category term="android" scheme="https://www.rousetime.com/tags/android/"/>
    
  </entry>
  
  <entry>
    <title>协程与互斥锁: Kotlin Mutex的终极指南</title>
    <link href="https://www.rousetime.com/2023/12/30/%E5%8D%8F%E7%A8%8B%E4%B8%8E%E4%BA%92%E6%96%A5%E9%94%81-Kotlin-Mutex%E7%9A%84%E7%BB%88%E6%9E%81%E6%8C%87%E5%8D%97/"/>
    <id>https://www.rousetime.com/2023/12/30/协程与互斥锁-Kotlin-Mutex的终极指南/</id>
    <published>2023-12-30T02:09:15.000Z</published>
    <updated>2023-12-30T02:10:11.963Z</updated>
    
    <content type="html">&lt;h2 id=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;a href=&quot;#&amp;#x5F15;&amp;#x8A00;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;/a&gt;&amp;#x5F15;&amp;#x8A00;&lt;/h2&gt;&lt;p&gt;&amp;#x4ECA;&amp;#x5929;&amp;#x6211;&amp;#x4EEC;&amp;#x5C06;&amp;#x6DF1;&amp;#x5165;&amp;#x7814;&amp;#x7A76;Kotlin&amp;#x4E2D;&amp;#x7684;Mutex&amp;#xFF08;&amp;#x4E92;&amp;#x65A5;&amp;#x9501;&amp;#xFF09;&amp;#x539F;&amp;#x7406;&amp;#x4EE5;&amp;#x53CA;&amp;#x5728;&amp;#x5B9E;&amp;#x9645;&amp;#x5F00;&amp;#x53D1;&amp;#x4E2D;&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&amp;#x6280;&amp;#x5DE7;&amp;#x3002;Mutex&amp;#x662F;&amp;#x591A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7F16;&amp;#x7A0B;&amp;#x4E2D;&amp;#x7684;&amp;#x5173;&amp;#x952E;&amp;#x5DE5;&amp;#x5177;&amp;#xFF0C;&amp;#x5B83;&amp;#x53EF;&amp;#x4EE5;&amp;#x6709;&amp;#x6548;&amp;#x5730;&amp;#x89E3;&amp;#x51B3;&amp;#x591A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x8BBF;&amp;#x95EE;&amp;#x5171;&amp;#x4EAB;&amp;#x8D44;&amp;#x6E90;&amp;#x65F6;&amp;#x53EF;&amp;#x80FD;&amp;#x53D1;&amp;#x751F;&amp;#x7684;&amp;#x7ADE;&amp;#x6001;&amp;#x6761;&amp;#x4EF6;&amp;#x95EE;&amp;#x9898;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;Mutex&amp;#x7684;&amp;#x57FA;&amp;#x672C;&amp;#x539F;&amp;#x7406;&quot;&gt;&lt;a href=&quot;#Mutex&amp;#x7684;&amp;#x57FA;&amp;#x672C;&amp;#x539F;&amp;#x7406;&quot; class=&quot;headerlink&quot; title=&quot;Mutex&amp;#x7684;&amp;#x57FA;&amp;#x672C;&amp;#x539F;&amp;#x7406;&quot;&gt;&lt;/a&gt;Mutex&amp;#x7684;&amp;#x57FA;&amp;#x672C;&amp;#x539F;&amp;#x7406;&lt;/h2&gt;&lt;p&gt;Mutex&amp;#x662F;&amp;#x4E92;&amp;#x65A5;&amp;#x9501;&amp;#x7684;&amp;#x7F29;&amp;#x5199;&amp;#xFF0C;&amp;#x5B83;&amp;#x662F;&amp;#x4E00;&amp;#x79CD;&amp;#x540C;&amp;#x6B65;&amp;#x5DE5;&amp;#x5177;&amp;#xFF0C;&amp;#x7528;&amp;#x4E8E;&amp;#x4FDD;&amp;#x62A4;&amp;#x5171;&amp;#x4EAB;&amp;#x8D44;&amp;#x6E90;&amp;#xFF0C;&amp;#x786E;&amp;#x4FDD;&amp;#x5728;&amp;#x4EFB;&amp;#x4F55;&amp;#x65F6;&amp;#x523B;&amp;#x53EA;&amp;#x6709;&amp;#x4E00;&amp;#x4E2A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x53EF;&amp;#x4EE5;&amp;#x8BBF;&amp;#x95EE;&amp;#x8BE5;&amp;#x8D44;&amp;#x6E90;&amp;#x3002;&amp;#x5728;Kotlin&amp;#x4E2D;&amp;#xFF0C;Mutex&amp;#x662F;&amp;#x901A;&amp;#x8FC7;&lt;code&gt;kotlinx.coroutines.sync&lt;/code&gt;&amp;#x5305;&amp;#x5B9E;&amp;#x73B0;&amp;#x7684;&amp;#x3002;&lt;/p&gt;
&lt;h3 id=&quot;Mutex&amp;#x7684;&amp;#x5B9E;&amp;#x73B0;&amp;#x539F;&amp;#x7406;&quot;&gt;&lt;a href=&quot;#Mutex&amp;#x7684;&amp;#x5B9E;&amp;#x73B0;&amp;#x539F;&amp;#x7406;&quot; class=&quot;headerlink&quot; title=&quot;Mutex&amp;#x7684;&amp;#x5B9E;&amp;#x73B0;&amp;#x539F;&amp;#x7406;&quot;&gt;&lt;/a&gt;Mutex&amp;#x7684;&amp;#x5B9E;&amp;#x73B0;&amp;#x539F;&amp;#x7406;&lt;/h3&gt;&lt;p&gt;Mutex&amp;#x7684;&amp;#x5B9E;&amp;#x73B0;&amp;#x57FA;&amp;#x4E8E;&amp;#x6302;&amp;#x8D77;&amp;#x51FD;&amp;#x6570;&amp;#x548C;&amp;#x534F;&amp;#x7A0B;&amp;#x7684;&amp;#x6982;&amp;#x5FF5;&amp;#x3002;&amp;#x5F53;&amp;#x4E00;&amp;#x4E2A;&amp;#x534F;&amp;#x7A0B;&amp;#x8BF7;&amp;#x6C42;&amp;#x8FDB;&amp;#x5165;&amp;#x53D7;Mutex&amp;#x4FDD;&amp;#x62A4;&amp;#x7684;&amp;#x4E34;&amp;#x754C;&amp;#x533A;&amp;#x65F6;&amp;#xFF0C;&amp;#x5982;&amp;#x679C;Mutex&amp;#x5DF2;&amp;#x7ECF;&amp;#x88AB;&amp;#x5360;&amp;#x7528;&amp;#xFF0C;&amp;#x8BF7;&amp;#x6C42;&amp;#x7684;&amp;#x534F;&amp;#x7A0B;&amp;#x5C06;&amp;#x88AB;&amp;#x6302;&amp;#x8D77;&amp;#xFF0C;&amp;#x76F4;&amp;#x5230;Mutex&amp;#x53EF;&amp;#x7528;&amp;#x3002;&amp;#x8FD9;&amp;#x6837;&amp;#x53EF;&amp;#x4EE5;&amp;#x907F;&amp;#x514D;&amp;#x591A;&amp;#x4E2A;&amp;#x534F;&amp;#x7A0B;&amp;#x540C;&amp;#x65F6;&amp;#x8BBF;&amp;#x95EE;&amp;#x5171;&amp;#x4EAB;&amp;#x8D44;&amp;#x6E90;&amp;#xFF0C;&amp;#x786E;&amp;#x4FDD;&amp;#x7EBF;&amp;#x7A0B;&amp;#x5B89;&amp;#x5168;&amp;#x3002;&lt;/p&gt;
&lt;h3 id=&quot;&amp;#x72B6;&amp;#x6001;&amp;#x53D8;&amp;#x91CF;&quot;&gt;&lt;a href=&quot;#&amp;#x72B6;&amp;#x6001;&amp;#x53D8;&amp;#x91CF;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x72B6;&amp;#x6001;&amp;#x53D8;&amp;#x91CF;&quot;&gt;&lt;/a&gt;&amp;#x72B6;&amp;#x6001;&amp;#x53D8;&amp;#x91CF;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Mutex&lt;/code&gt; &amp;#x7C7B;&amp;#x7684;&amp;#x72B6;&amp;#x6001;&amp;#x53D8;&amp;#x91CF;&amp;#x5305;&amp;#x62EC;&amp;#x4EE5;&amp;#x4E0B;&amp;#x4E24;&amp;#x4E2A;&amp;#xFF1A;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;owner&lt;/code&gt;: &amp;#x8868;&amp;#x793A;&amp;#x9501;&amp;#x7684;&amp;#x62E5;&amp;#x6709;&amp;#x8005;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;availablePermits&lt;/code&gt;: &amp;#x8868;&amp;#x793A;&amp;#x53EF;&amp;#x7528;&amp;#x7684;&amp;#x8BB8;&amp;#x53EF;&amp;#x8BC1;&amp;#x6570;&amp;#x91CF;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&quot;&gt;&lt;a href=&quot;#&amp;#x521D;&amp;#x59CB;&amp;#x5316;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&quot;&gt;&lt;/a&gt;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Mutex&lt;/code&gt; &amp;#x7C7B;&amp;#x7684;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x4F1A;&amp;#x5C06; &lt;code&gt;owner&lt;/code&gt; &amp;#x53D8;&amp;#x91CF;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x4E3A; &lt;code&gt;NO_OWNER&lt;/code&gt;&amp;#xFF0C;&amp;#x8868;&amp;#x793A;&amp;#x9501;&amp;#x6CA1;&amp;#x6709;&amp;#x88AB;&amp;#x4EFB;&amp;#x4F55;&amp;#x7EBF;&amp;#x7A0B;&amp;#x83B7;&amp;#x53D6;&amp;#x3002;&lt;/p&gt;
&lt;h3 id=&quot;&amp;#x83B7;&amp;#x53D6;&amp;#x9501;&quot;&gt;&lt;a href=&quot;#&amp;#x83B7;&amp;#x53D6;&amp;#x9501;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x83B7;&amp;#x53D6;&amp;#x9501;&quot;&gt;&lt;/a&gt;&amp;#x83B7;&amp;#x53D6;&amp;#x9501;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Mutex&lt;/code&gt; &amp;#x7C7B;&amp;#x7684; &lt;code&gt;lock()&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x4F1A;&amp;#x5C1D;&amp;#x8BD5;&amp;#x83B7;&amp;#x53D6;&amp;#x9501;&amp;#x3002;&amp;#x5982;&amp;#x679C;&amp;#x9501;&amp;#x6CA1;&amp;#x6709;&amp;#x88AB;&amp;#x5176;&amp;#x4ED6;&amp;#x7EBF;&amp;#x7A0B;&amp;#x83B7;&amp;#x53D6;&amp;#xFF0C;&amp;#x5219;&amp;#x8BE5;&amp;#x65B9;&amp;#x6CD5;&amp;#x4F1A;&amp;#x6210;&amp;#x529F;&amp;#x83B7;&amp;#x53D6;&amp;#x9501;&amp;#x3002;&amp;#x5982;&amp;#x679C;&amp;#x9501;&amp;#x5DF2;&amp;#x7ECF;&amp;#x88AB;&amp;#x5176;&amp;#x4ED6;&amp;#x7EBF;&amp;#x7A0B;&amp;#x83B7;&amp;#x53D6;&amp;#xFF0C;&amp;#x5219;&amp;#x8BE5;&amp;#x65B9;&amp;#x6CD5;&amp;#x4F1A;&amp;#x5C06;&amp;#x7EBF;&amp;#x7A0B;&amp;#x653E;&amp;#x5165;&amp;#x5230;&amp;#x7B49;&amp;#x5F85;&amp;#x961F;&amp;#x5217;&amp;#x4E2D;&amp;#xFF0C;&amp;#x5E76;&amp;#x963B;&amp;#x585E;&amp;#x7EBF;&amp;#x7A0B;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;lock()&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x7684;&amp;#x5B9E;&amp;#x73B0;&amp;#x5982;&amp;#x4E0B;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;suspend&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;lock&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(owner: &lt;span class=&quot;type&quot;&gt;Any&lt;/span&gt;?)&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt; (tryLock(owner)) &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    lockSuspend(owner)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;suspend&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;lockSuspend&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(owner: &lt;span class=&quot;type&quot;&gt;Any&lt;/span&gt;?)&lt;/span&gt;&lt;/span&gt; = suspendCancellableCoroutineReusable&amp;lt;&lt;span class=&quot;built_in&quot;&gt;Unit&lt;/span&gt;&amp;gt; { cont -&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; contWithOwner = CancellableContinuationWithOwner(cont, owner)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    acquire(contWithOwner)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&lt;code&gt;lock()&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x9996;&amp;#x5148;&amp;#x4F1A;&amp;#x8C03;&amp;#x7528; &lt;code&gt;tryLock()&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x5C1D;&amp;#x8BD5;&amp;#x83B7;&amp;#x53D6;&amp;#x9501;&amp;#x3002;&amp;#x5982;&amp;#x679C; &lt;code&gt;tryLock()&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x6210;&amp;#x529F;&amp;#xFF0C;&amp;#x5219;&amp;#x8868;&amp;#x793A;&amp;#x9501;&amp;#x6CA1;&amp;#x6709;&amp;#x88AB;&amp;#x5176;&amp;#x4ED6;&amp;#x7EBF;&amp;#x7A0B;&amp;#x83B7;&amp;#x53D6;&amp;#xFF0C;&lt;code&gt;lock()&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x4F1A;&amp;#x76F4;&amp;#x63A5;&amp;#x8FD4;&amp;#x56DE;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x5982;&amp;#x679C; &lt;code&gt;tryLock()&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x5931;&amp;#x8D25;&amp;#xFF0C;&amp;#x5219;&amp;#x8868;&amp;#x793A;&amp;#x9501;&amp;#x5DF2;&amp;#x7ECF;&amp;#x88AB;&amp;#x5176;&amp;#x4ED6;&amp;#x7EBF;&amp;#x7A0B;&amp;#x83B7;&amp;#x53D6;&amp;#x3002;&amp;#x5728;&amp;#x8FD9;&amp;#x79CD;&amp;#x60C5;&amp;#x51B5;&amp;#x4E0B;&amp;#xFF0C;&lt;code&gt;lock()&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x4F1A;&amp;#x8C03;&amp;#x7528; &lt;code&gt;lockSuspend()&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x6765;&amp;#x83B7;&amp;#x53D6;&amp;#x9501;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;lockSuspend()&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x4F1A;&amp;#x521B;&amp;#x5EFA;&amp;#x4E00;&amp;#x4E2A; &lt;code&gt;CancellableContinuationWithOwner&lt;/code&gt; &amp;#x5BF9;&amp;#x8C61;&amp;#xFF0C;&amp;#x5E76;&amp;#x5C06;&amp;#x5176;&amp;#x4F20;&amp;#x9012;&amp;#x7ED9; &lt;code&gt;acquire()&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x3002;&lt;code&gt;acquire()&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x4F1A;&amp;#x5C1D;&amp;#x8BD5;&amp;#x83B7;&amp;#x53D6;&amp;#x9501;&amp;#x3002;&amp;#x5982;&amp;#x679C;&amp;#x6210;&amp;#x529F;&amp;#xFF0C;&amp;#x5219;&amp;#x4F1A;&amp;#x5C06; &lt;code&gt;CancellableContinuationWithOwner&lt;/code&gt; &amp;#x5BF9;&amp;#x8C61;&amp;#x7684; &lt;code&gt;owner&lt;/code&gt; &amp;#x53D8;&amp;#x91CF;&amp;#x8BBE;&amp;#x7F6E;&amp;#x4E3A; &lt;code&gt;owner&lt;/code&gt; &amp;#x53C2;&amp;#x6570;&amp;#x3002;&amp;#x5982;&amp;#x679C;&amp;#x5931;&amp;#x8D25;&amp;#xFF0C;&amp;#x5219;&amp;#x4F1A;&amp;#x5C06; &lt;code&gt;CancellableContinuationWithOwner&lt;/code&gt; &amp;#x5BF9;&amp;#x8C61;&amp;#x653E;&amp;#x5165;&amp;#x5230;&amp;#x7B49;&amp;#x5F85;&amp;#x961F;&amp;#x5217;&amp;#x4E2D;&amp;#x3002;&lt;/p&gt;
&lt;h3 id=&quot;&amp;#x91CA;&amp;#x653E;&amp;#x9501;&quot;&gt;&lt;a href=&quot;#&amp;#x91CA;&amp;#x653E;&amp;#x9501;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x91CA;&amp;#x653E;&amp;#x9501;&quot;&gt;&lt;/a&gt;&amp;#x91CA;&amp;#x653E;&amp;#x9501;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Mutex&lt;/code&gt; &amp;#x7C7B;&amp;#x7684; &lt;code&gt;unlock()&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x4F1A;&amp;#x91CA;&amp;#x653E;&amp;#x9501;&amp;#x3002;&amp;#x5982;&amp;#x679C;&amp;#x9501;&amp;#x7684;&amp;#x62E5;&amp;#x6709;&amp;#x8005;&amp;#x662F;&amp;#x5F53;&amp;#x524D;&amp;#x7EBF;&amp;#x7A0B;&amp;#xFF0C;&amp;#x5219;&amp;#x8BE5;&amp;#x65B9;&amp;#x6CD5;&amp;#x4F1A;&amp;#x6210;&amp;#x529F;&amp;#x91CA;&amp;#x653E;&amp;#x9501;&amp;#x3002;&amp;#x5982;&amp;#x679C;&amp;#x9501;&amp;#x7684;&amp;#x62E5;&amp;#x6709;&amp;#x8005;&amp;#x4E0D;&amp;#x662F;&amp;#x5F53;&amp;#x524D;&amp;#x7EBF;&amp;#x7A0B;&amp;#xFF0C;&amp;#x5219;&amp;#x8BE5;&amp;#x65B9;&amp;#x6CD5;&amp;#x4F1A;&amp;#x629B;&amp;#x51FA;&amp;#x5F02;&amp;#x5E38;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;unlock()&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x7684;&amp;#x5B9E;&amp;#x73B0;&amp;#x5982;&amp;#x4E0B;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;unlock&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(owner: &lt;span class=&quot;type&quot;&gt;Any&lt;/span&gt;?)&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;while&lt;/span&gt; (&lt;span class=&quot;literal&quot;&gt;true&lt;/span&gt;) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// Is this mutex locked?&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        check(isLocked) { &lt;span class=&quot;string&quot;&gt;&amp;quot;This mutex is not locked&amp;quot;&lt;/span&gt; }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// Read the owner, waiting until it is set in a spin-loop if required.&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; curOwner = &lt;span class=&quot;keyword&quot;&gt;this&lt;/span&gt;.owner.value&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt; (curOwner === NO_OWNER) &lt;span class=&quot;keyword&quot;&gt;continue&lt;/span&gt; &lt;span class=&quot;comment&quot;&gt;// &amp;lt;-- ATTENTION, BLOCKING PART HERE&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// Check the owner.&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        check(curOwner === owner || owner == &lt;span class=&quot;literal&quot;&gt;null&lt;/span&gt;) { &lt;span class=&quot;string&quot;&gt;&amp;quot;This mutex is locked by &lt;span class=&quot;variable&quot;&gt;$curOwner&lt;/span&gt;, but &lt;span class=&quot;variable&quot;&gt;$owner&lt;/span&gt; is expected&amp;quot;&lt;/span&gt; }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// Try to clean the owner first. We need to use CAS here to synchronize with concurrent `unlock(..)`-s.&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt; (!&lt;span class=&quot;keyword&quot;&gt;this&lt;/span&gt;.owner.compareAndSet(curOwner, NO_OWNER)) &lt;span class=&quot;keyword&quot;&gt;continue&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// Release the semaphore permit at the end.&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        release()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&lt;code&gt;unlock()&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x9996;&amp;#x5148;&amp;#x4F1A;&amp;#x68C0;&amp;#x67E5;&amp;#x9501;&amp;#x662F;&amp;#x5426;&amp;#x5DF2;&amp;#x7ECF;&amp;#x88AB;&amp;#x83B7;&amp;#x53D6;&amp;#x3002;&amp;#x5982;&amp;#x679C;&amp;#x9501;&amp;#x6CA1;&amp;#x6709;&amp;#x88AB;&amp;#x83B7;&amp;#x53D6;&amp;#xFF0C;&amp;#x5219;&amp;#x4F1A;&amp;#x629B;&amp;#x51FA;&amp;#x5F02;&amp;#x5E38;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x5982;&amp;#x679C;&amp;#x9501;&amp;#x5DF2;&amp;#x7ECF;&amp;#x88AB;&amp;#x83B7;&amp;#x53D6;&amp;#xFF0C;&amp;#x5219;&amp;#x4F1A;&amp;#x83B7;&amp;#x53D6;&amp;#x9501;&amp;#x7684;&amp;#x62E5;&amp;#x6709;&amp;#x8005;&amp;#x3002;&amp;#x7136;&amp;#x540E;&amp;#xFF0C;&amp;#x4F1A;&amp;#x68C0;&amp;#x67E5;&amp;#x9501;&amp;#x7684;&amp;#x62E5;&amp;#x6709;&amp;#x8005;&amp;#x662F;&amp;#x5426;&amp;#x662F;&amp;#x5F53;&amp;#x524D;&amp;#x7EBF;&amp;#x7A0B;&amp;#x3002;&amp;#x5982;&amp;#x679C;&amp;#x662F;&amp;#xFF0C;&amp;#x5219;&amp;#x4F1A;&amp;#x5C06;&amp;#x9501;&amp;#x7684;&amp;#x62E5;&amp;#x6709;&amp;#x8005;&amp;#x8BBE;&amp;#x7F6E;&amp;#x4E3A; &lt;code&gt;NO_OWNER&lt;/code&gt;&amp;#xFF0C;&amp;#x5E76;&amp;#x91CA;&amp;#x653E;&amp;#x4E00;&amp;#x4E2A;&amp;#x8BB8;&amp;#x53EF;&amp;#x8BC1;&amp;#x3002;&lt;/p&gt;
&lt;h3 id=&quot;&amp;#x5176;&amp;#x4ED6;&amp;#x7EC6;&amp;#x8282;&quot;&gt;&lt;a href=&quot;#&amp;#x5176;&amp;#x4ED6;&amp;#x7EC6;&amp;#x8282;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5176;&amp;#x4ED6;&amp;#x7EC6;&amp;#x8282;&quot;&gt;&lt;/a&gt;&amp;#x5176;&amp;#x4ED6;&amp;#x7EC6;&amp;#x8282;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Mutex&lt;/code&gt; &amp;#x7C7B;&amp;#x8FD8;&amp;#x63D0;&amp;#x4F9B;&amp;#x4E86;&amp;#x4EE5;&amp;#x4E0B;&amp;#x4E00;&amp;#x4E9B;&amp;#x5176;&amp;#x4ED6;&amp;#x7EC6;&amp;#x8282;&amp;#xFF1A;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;holdsLock()&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x7528;&amp;#x4E8E;&amp;#x68C0;&amp;#x67E5;&amp;#x5F53;&amp;#x524D;&amp;#x7EBF;&amp;#x7A0B;&amp;#x662F;&amp;#x5426;&amp;#x6301;&amp;#x6709;&amp;#x9501;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;tryLock()&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x7528;&amp;#x4E8E;&amp;#x5C1D;&amp;#x8BD5;&amp;#x83B7;&amp;#x53D6;&amp;#x9501;&amp;#x3002;&amp;#x5982;&amp;#x679C;&amp;#x6210;&amp;#x529F;&amp;#xFF0C;&amp;#x5219;&amp;#x4F1A;&amp;#x7ACB;&amp;#x5373;&amp;#x8FD4;&amp;#x56DE;&amp;#x3002;&amp;#x5982;&amp;#x679C;&amp;#x5931;&amp;#x8D25;&amp;#xFF0C;&amp;#x5219;&amp;#x4F1A;&amp;#x7ACB;&amp;#x5373;&amp;#x8FD4;&amp;#x56DE;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;onLock&lt;/code&gt; &amp;#x5C5E;&amp;#x6027;&amp;#x7528;&amp;#x4E8E;&amp;#x6307;&amp;#x5B9A;&amp;#x534F;&amp;#x7A0B;&amp;#x5728;&amp;#x83B7;&amp;#x53D6;&amp;#x9501;&amp;#x65F6;&amp;#x8981;&amp;#x6267;&amp;#x884C;&amp;#x7684;&amp;#x64CD;&amp;#x4F5C;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;Mutex&lt;/code&gt; &amp;#x7C7B;&amp;#x7684;&amp;#x5B9E;&amp;#x73B0;&amp;#x539F;&amp;#x7406;&amp;#x662F;&amp;#x57FA;&amp;#x4E8E;&amp;#x4FE1;&amp;#x53F7;&amp;#x91CF;&amp;#x7684;&amp;#x3002;&lt;code&gt;Mutex&lt;/code&gt; &amp;#x7C7B;&amp;#x7EF4;&amp;#x62A4;&amp;#x4E86;&amp;#x4E00;&amp;#x4E2A; &lt;code&gt;availablePermits&lt;/code&gt; &amp;#x53D8;&amp;#x91CF;&amp;#xFF0C;&amp;#x8868;&amp;#x793A;&amp;#x53EF;&amp;#x7528;&amp;#x7684;&amp;#x8BB8;&amp;#x53EF;&amp;#x8BC1;&amp;#x6570;&amp;#x91CF;&amp;#x3002;&amp;#x5982;&amp;#x679C; &lt;code&gt;availablePermits&lt;/code&gt; &amp;#x53D8;&amp;#x91CF;&amp;#x7684;&amp;#x503C;&amp;#x4E3A; 0&amp;#xFF0C;&amp;#x5219;&amp;#x8868;&amp;#x793A;&amp;#x9501;&amp;#x5DF2;&amp;#x7ECF;&amp;#x88AB;&amp;#x5176;&amp;#x4ED6;&amp;#x7EBF;&amp;#x7A0B;&amp;#x83B7;&amp;#x53D6;&lt;/p&gt;
&lt;h2 id=&quot;Mutex&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&amp;#x6280;&amp;#x5DE7;&quot;&gt;&lt;a href=&quot;#Mutex&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&amp;#x6280;&amp;#x5DE7;&quot; class=&quot;headerlink&quot; title=&quot;Mutex&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&amp;#x6280;&amp;#x5DE7;&quot;&gt;&lt;/a&gt;Mutex&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&amp;#x6280;&amp;#x5DE7;&lt;/h2&gt;&lt;p&gt;&amp;#x4E0B;&amp;#x9762;&amp;#x6211;&amp;#x4EEC;&amp;#x5C06;&amp;#x4ECB;&amp;#x7ECD;&amp;#x5728;&amp;#x5B9E;&amp;#x9645;&amp;#x5F00;&amp;#x53D1;&amp;#x4E2D;&amp;#x4F7F;&amp;#x7528;Mutex&amp;#x7684;&amp;#x4E00;&amp;#x4E9B;&amp;#x6280;&amp;#x5DE7;&amp;#xFF0C;&amp;#x4EE5;&amp;#x53CA;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&amp;#x548C;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&amp;#x3002;&lt;/p&gt;
&lt;h3 id=&quot;&amp;#x5982;&amp;#x4F55;&amp;#x4F7F;&amp;#x7528;-Mutex-&amp;#x5904;&amp;#x7406;&amp;#x7279;&amp;#x5B9A;&amp;#x95EE;&amp;#x9898;&quot;&gt;&lt;a href=&quot;#&amp;#x5982;&amp;#x4F55;&amp;#x4F7F;&amp;#x7528;-Mutex-&amp;#x5904;&amp;#x7406;&amp;#x7279;&amp;#x5B9A;&amp;#x95EE;&amp;#x9898;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5982;&amp;#x4F55;&amp;#x4F7F;&amp;#x7528; Mutex &amp;#x5904;&amp;#x7406;&amp;#x7279;&amp;#x5B9A;&amp;#x95EE;&amp;#x9898;&quot;&gt;&lt;/a&gt;&amp;#x5982;&amp;#x4F55;&amp;#x4F7F;&amp;#x7528; Mutex &amp;#x5904;&amp;#x7406;&amp;#x7279;&amp;#x5B9A;&amp;#x95EE;&amp;#x9898;&lt;/h3&gt;&lt;p&gt;&amp;#x8003;&amp;#x8651;&amp;#x4E00;&amp;#x4E2A;&amp;#x7B80;&amp;#x5355;&amp;#x7684; Android &amp;#x9879;&amp;#x76EE;&amp;#x573A;&amp;#x666F;&amp;#xFF0C;&amp;#x5176;&amp;#x4E2D;&amp;#x6709;&amp;#x591A;&amp;#x4E2A;&amp;#x534F;&amp;#x7A0B;&amp;#x540C;&amp;#x65F6;&amp;#x8FDB;&amp;#x884C;&amp;#x7F51;&amp;#x7EDC;&amp;#x8BF7;&amp;#x6C42;&amp;#x5E76;&amp;#x66F4;&amp;#x65B0; UI&amp;#x3002;&amp;#x5728;&amp;#x8FD9;&amp;#x4E2A;&amp;#x573A;&amp;#x666F;&amp;#x4E2D;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x5E0C;&amp;#x671B;&amp;#x786E;&amp;#x4FDD;&amp;#x7F51;&amp;#x7EDC;&amp;#x8BF7;&amp;#x6C42;&amp;#x548C; UI &amp;#x66F4;&amp;#x65B0;&amp;#x7684;&amp;#x987A;&amp;#x5E8F;&amp;#x6B63;&amp;#x786E;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x7ADE;&amp;#x6001;&amp;#x6761;&amp;#x4EF6;&amp;#x548C; UI &amp;#x4E0D;&amp;#x4E00;&amp;#x81F4;&amp;#x7684;&amp;#x95EE;&amp;#x9898;&amp;#x3002;&amp;#x4EE5;&amp;#x4E0B;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x4F7F;&amp;#x7528; Mutex &amp;#x7684;&amp;#x793A;&amp;#x4F8B;&amp;#x4EE3;&amp;#x7801;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;22&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;23&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;24&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;25&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;26&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;27&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;28&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;29&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;30&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;31&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;32&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;33&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;34&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;35&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;36&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;37&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;38&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;39&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;import&lt;/span&gt; android.os.Bundle&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;import&lt;/span&gt; androidx.appcompat.app.AppCompatActivity&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;import&lt;/span&gt; kotlinx.android.synthetic.main.activity_main.*&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;import&lt;/span&gt; kotlinx.coroutines.*&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;import&lt;/span&gt; kotlinx.coroutines.sync.Mutex&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;MainActivity&lt;/span&gt; : &lt;span class=&quot;type&quot;&gt;AppCompatActivity&lt;/span&gt;&lt;/span&gt;() {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; mutex = Mutex()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;onCreate&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(savedInstanceState: &lt;span class=&quot;type&quot;&gt;Bundle&lt;/span&gt;?)&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;super&lt;/span&gt;.onCreate(savedInstanceState)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        setContentView(R.layout.activity_main)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x542F;&amp;#x52A8;&amp;#x591A;&amp;#x4E2A;&amp;#x534F;&amp;#x7A0B;&amp;#x8FDB;&amp;#x884C;&amp;#x7F51;&amp;#x7EDC;&amp;#x8BF7;&amp;#x6C42;&amp;#x548C; UI &amp;#x66F4;&amp;#x65B0;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        repeat(&lt;span class=&quot;number&quot;&gt;5&lt;/span&gt;) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            launch {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                performNetworkRequestAndUIUpdate(it)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;suspend&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;performNetworkRequestAndUIUpdate&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(index: &lt;span class=&quot;type&quot;&gt;Int&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x6A21;&amp;#x62DF;&amp;#x7F51;&amp;#x7EDC;&amp;#x8BF7;&amp;#x6C42;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        delay(&lt;span class=&quot;number&quot;&gt;1000&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x4F7F;&amp;#x7528; Mutex &amp;#x4FDD;&amp;#x62A4;&amp;#x5BF9; UI &amp;#x66F4;&amp;#x65B0;&amp;#x7684;&amp;#x4E34;&amp;#x754C;&amp;#x533A;&amp;#x57DF;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        mutex.withLock {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            updateUI(&lt;span class=&quot;string&quot;&gt;&amp;quot;Task &lt;span class=&quot;variable&quot;&gt;$index&lt;/span&gt; completed&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;updateUI&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(message: &lt;span class=&quot;type&quot;&gt;String&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x5728;&amp;#x4E3B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x66F4;&amp;#x65B0; UI&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        runOnUiThread {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            textView.append(&lt;span class=&quot;string&quot;&gt;&amp;quot;&lt;span class=&quot;variable&quot;&gt;$message&lt;/span&gt;\n&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x5728;&amp;#x8FD9;&amp;#x4E2A;&amp;#x793A;&amp;#x4F8B;&amp;#x4E2D;&amp;#xFF0C;&lt;code&gt;performNetworkRequestAndUIUpdate&lt;/code&gt; &amp;#x51FD;&amp;#x6570;&amp;#x6A21;&amp;#x62DF;&amp;#x4E86;&amp;#x7F51;&amp;#x7EDC;&amp;#x8BF7;&amp;#x6C42;&amp;#xFF0C;&amp;#x7136;&amp;#x540E;&amp;#x4F7F;&amp;#x7528; Mutex &amp;#x4FDD;&amp;#x62A4;&amp;#x4E86;&amp;#x5BF9; UI &amp;#x66F4;&amp;#x65B0;&amp;#x7684;&amp;#x4E34;&amp;#x754C;&amp;#x533A;&amp;#x57DF;&amp;#x3002;&amp;#x8FD9;&amp;#x6837;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x786E;&amp;#x4FDD;&amp;#x4E86;&amp;#x7F51;&amp;#x7EDC;&amp;#x8BF7;&amp;#x6C42;&amp;#x548C; UI &amp;#x66F4;&amp;#x65B0;&amp;#x7684;&amp;#x987A;&amp;#x5E8F;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x4E86;&amp;#x53EF;&amp;#x80FD;&amp;#x7684;&amp;#x7ADE;&amp;#x6001;&amp;#x6761;&amp;#x4EF6;&amp;#x3002;&lt;/p&gt;
&lt;h3 id=&quot;Mutex-&amp;#x7684;&amp;#x4F5C;&amp;#x7528;&amp;#x548C;&amp;#x6548;&amp;#x679C;&quot;&gt;&lt;a href=&quot;#Mutex-&amp;#x7684;&amp;#x4F5C;&amp;#x7528;&amp;#x548C;&amp;#x6548;&amp;#x679C;&quot; class=&quot;headerlink&quot; title=&quot;Mutex &amp;#x7684;&amp;#x4F5C;&amp;#x7528;&amp;#x548C;&amp;#x6548;&amp;#x679C;&quot;&gt;&lt;/a&gt;Mutex &amp;#x7684;&amp;#x4F5C;&amp;#x7528;&amp;#x548C;&amp;#x6548;&amp;#x679C;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;&amp;#x4FDD;&amp;#x62A4; UI &amp;#x66F4;&amp;#x65B0;&amp;#x7684;&amp;#x4E34;&amp;#x754C;&amp;#x533A;&amp;#x57DF;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;#x901A;&amp;#x8FC7;&amp;#x5728; &lt;code&gt;performNetworkRequestAndUIUpdate&lt;/code&gt; &amp;#x51FD;&amp;#x6570;&amp;#x4E2D;&amp;#x4F7F;&amp;#x7528; Mutex&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x786E;&amp;#x4FDD;&amp;#x4E86;&amp;#x5BF9; UI &amp;#x66F4;&amp;#x65B0;&amp;#x7684;&amp;#x8BBF;&amp;#x95EE;&amp;#x662F;&amp;#x7EBF;&amp;#x7A0B;&amp;#x5B89;&amp;#x5168;&amp;#x7684;&amp;#x3002;&amp;#x5728;&amp;#x4EFB;&amp;#x4E00;&amp;#x65F6;&amp;#x523B;&amp;#xFF0C;&amp;#x53EA;&amp;#x6709;&amp;#x4E00;&amp;#x4E2A;&amp;#x534F;&amp;#x7A0B;&amp;#x80FD;&amp;#x591F;&amp;#x6267;&amp;#x884C;&amp;#x66F4;&amp;#x65B0;&amp;#x64CD;&amp;#x4F5C;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x4E86;&amp;#x591A;&amp;#x4E2A;&amp;#x534F;&amp;#x7A0B;&amp;#x540C;&amp;#x65F6;&amp;#x4FEE;&amp;#x6539; UI &amp;#x5BFC;&amp;#x81F4;&amp;#x7684;&amp;#x95EE;&amp;#x9898;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;#x907F;&amp;#x514D;&amp;#x7ADE;&amp;#x6001;&amp;#x6761;&amp;#x4EF6;&amp;#x548C;&amp;#x6570;&amp;#x636E;&amp;#x4E0D;&amp;#x4E00;&amp;#x81F4;&amp;#x6027;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;#x5728; Android &amp;#x4E2D;&amp;#xFF0C;&amp;#x7531;&amp;#x4E8E;&amp;#x6D89;&amp;#x53CA; UI &amp;#x64CD;&amp;#x4F5C;&amp;#xFF0C;&amp;#x786E;&amp;#x4FDD;&amp;#x5728;&amp;#x4E3B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x4E0A;&amp;#x6309;&amp;#x6B63;&amp;#x786E;&amp;#x7684;&amp;#x987A;&amp;#x5E8F;&amp;#x66F4;&amp;#x65B0; UI &amp;#x662F;&amp;#x81F3;&amp;#x5173;&amp;#x91CD;&amp;#x8981;&amp;#x7684;&amp;#x3002;Mutex &amp;#x7684;&amp;#x4F5C;&amp;#x7528;&amp;#x5728;&amp;#x4E8E;&amp;#x534F;&amp;#x8C03;&amp;#x591A;&amp;#x4E2A;&amp;#x534F;&amp;#x7A0B;&amp;#x5BF9; UI &amp;#x7684;&amp;#x8BBF;&amp;#x95EE;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x7ADE;&amp;#x6001;&amp;#x6761;&amp;#x4EF6;&amp;#x548C;&amp;#x6570;&amp;#x636E;&amp;#x4E0D;&amp;#x4E00;&amp;#x81F4;&amp;#x6027;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&amp;#x7B80;&amp;#x5316;&amp;#x5F02;&amp;#x6B65;&amp;#x64CD;&amp;#x4F5C;&amp;#x7684;&amp;#x540C;&amp;#x6B65;&amp;#x63A7;&amp;#x5236;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Mutex &amp;#x63D0;&amp;#x4F9B;&amp;#x4E86;&amp;#x4E00;&amp;#x79CD;&amp;#x7B80;&amp;#x5355;&amp;#x800C;&amp;#x6709;&amp;#x6548;&amp;#x7684;&amp;#x65B9;&amp;#x5F0F;&amp;#x6765;&amp;#x540C;&amp;#x6B65;&amp;#x591A;&amp;#x4E2A;&amp;#x534F;&amp;#x7A0B;&amp;#xFF0C;&amp;#x7279;&amp;#x522B;&amp;#x662F;&amp;#x5728;&amp;#x6D89;&amp;#x53CA;&amp;#x5230;&amp;#x5F02;&amp;#x6B65;&amp;#x64CD;&amp;#x4F5C;&amp;#xFF08;&amp;#x5982;&amp;#x7F51;&amp;#x7EDC;&amp;#x8BF7;&amp;#x6C42;&amp;#xFF09;&amp;#x548C; UI &amp;#x66F4;&amp;#x65B0;&amp;#x65F6;&amp;#x3002;&amp;#x901A;&amp;#x8FC7;&amp;#x5728;&amp;#x5173;&amp;#x952E;&amp;#x533A;&amp;#x57DF;&amp;#x4F7F;&amp;#x7528; Mutex&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x53EF;&amp;#x4EE5;&amp;#x786E;&amp;#x4FDD;&amp;#x8FD9;&amp;#x4E9B;&amp;#x64CD;&amp;#x4F5C;&amp;#x6309;&amp;#x7167;&amp;#x6B63;&amp;#x786E;&amp;#x7684;&amp;#x987A;&amp;#x5E8F;&amp;#x6267;&amp;#x884C;&amp;#xFF0C;&amp;#x63D0;&amp;#x9AD8;&amp;#x4E86;&amp;#x4EE3;&amp;#x7801;&amp;#x7684;&amp;#x53EF;&amp;#x7EF4;&amp;#x62A4;&amp;#x6027;&amp;#x548C;&amp;#x7A33;&amp;#x5B9A;&amp;#x6027;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&quot;&gt;&lt;a href=&quot;#&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&quot;&gt;&lt;/a&gt;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x534F;&amp;#x7A0B;&amp;#x95F4;&amp;#x4E92;&amp;#x65A5;&lt;/strong&gt;&amp;#xFF1A;Mutex&amp;#x4E3B;&amp;#x8981;&amp;#x7528;&amp;#x4E8E;&amp;#x534F;&amp;#x7A0B;&amp;#x4E4B;&amp;#x95F4;&amp;#x7684;&amp;#x4E92;&amp;#x65A5;&amp;#xFF0C;&amp;#x786E;&amp;#x4FDD;&amp;#x540C;&amp;#x4E00;&amp;#x65F6;&amp;#x95F4;&amp;#x53EA;&amp;#x6709;&amp;#x4E00;&amp;#x4E2A;&amp;#x534F;&amp;#x7A0B;&amp;#x80FD;&amp;#x591F;&amp;#x8BBF;&amp;#x95EE;&amp;#x5171;&amp;#x4EAB;&amp;#x8D44;&amp;#x6E90;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x7ADE;&amp;#x6001;&amp;#x6761;&amp;#x4EF6;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x907F;&amp;#x514D;&amp;#x6B7B;&amp;#x9501;&lt;/strong&gt;&amp;#xFF1A;&amp;#x5728;&amp;#x4F7F;&amp;#x7528;Mutex&amp;#x65F6;&amp;#xFF0C;&amp;#x8981;&amp;#x6CE8;&amp;#x610F;&amp;#x907F;&amp;#x514D;&amp;#x6B7B;&amp;#x9501;&amp;#x7684;&amp;#x60C5;&amp;#x51B5;&amp;#xFF0C;&amp;#x5373;&amp;#x534F;&amp;#x7A0B;&amp;#x83B7;&amp;#x53D6;Mutex&amp;#x540E;&amp;#x672A;&amp;#x91CA;&amp;#x653E;&amp;#x5C31;&amp;#x88AB;&amp;#x6302;&amp;#x8D77;&amp;#xFF0C;&amp;#x5BFC;&amp;#x81F4;&amp;#x5176;&amp;#x4ED6;&amp;#x534F;&amp;#x7A0B;&amp;#x65E0;&amp;#x6CD5;&amp;#x7EE7;&amp;#x7EED;&amp;#x6267;&amp;#x884C;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x534F;&amp;#x7A0B;&amp;#x53D6;&amp;#x6D88;&lt;/strong&gt;&amp;#xFF1A;&amp;#x5728;&amp;#x4F7F;&amp;#x7528;Mutex&amp;#x65F6;&amp;#xFF0C;&amp;#x8981;&amp;#x6CE8;&amp;#x610F;&amp;#x534F;&amp;#x7A0B;&amp;#x7684;&amp;#x53D6;&amp;#x6D88;&amp;#x60C5;&amp;#x51B5;&amp;#xFF0C;&amp;#x786E;&amp;#x4FDD;&amp;#x5728;&amp;#x534F;&amp;#x7A0B;&amp;#x53D6;&amp;#x6D88;&amp;#x65F6;&amp;#x80FD;&amp;#x591F;&amp;#x6B63;&amp;#x786E;&amp;#x91CA;&amp;#x653E;Mutex&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x8D44;&amp;#x6E90;&amp;#x6CC4;&amp;#x6F0F;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x6027;&amp;#x80FD;&amp;#x5F00;&amp;#x9500;&lt;/strong&gt;&amp;#xFF1A;&amp;#x8FC7;&amp;#x591A;&amp;#x5730;&amp;#x4F7F;&amp;#x7528;Mutex&amp;#x53EF;&amp;#x80FD;&amp;#x4F1A;&amp;#x5BFC;&amp;#x81F4;&amp;#x6027;&amp;#x80FD;&amp;#x5F00;&amp;#x9500;&amp;#xFF0C;&amp;#x9700;&amp;#x8981;&amp;#x8C28;&amp;#x614E;&amp;#x8BBE;&amp;#x8BA1;&amp;#x4EE3;&amp;#x7801;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x9891;&amp;#x7E41;&amp;#x7684;&amp;#x4E92;&amp;#x65A5;&amp;#x64CD;&amp;#x4F5C;&amp;#x3002;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&quot;&gt;&lt;a href=&quot;#&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&quot;&gt;&lt;/a&gt;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x7CBE;&amp;#x7EC6;&amp;#x5316;&amp;#x9501;&amp;#x5B9A;&lt;/strong&gt;&amp;#xFF1A;&amp;#x53EA;&amp;#x5728;&amp;#x9700;&amp;#x8981;&amp;#x4FDD;&amp;#x62A4;&amp;#x7684;&amp;#x4E34;&amp;#x754C;&amp;#x533A;&amp;#x4F7F;&amp;#x7528;Mutex&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x8FC7;&amp;#x591A;&amp;#x5730;&amp;#x4F7F;&amp;#x7528;&amp;#x5168;&amp;#x5C40;&amp;#x7684;Mutex&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x4F7F;&amp;#x7528;tryLock&lt;/strong&gt;&amp;#xFF1A;&amp;#x5728;&amp;#x4E00;&amp;#x4E9B;&amp;#x60C5;&amp;#x51B5;&amp;#x4E0B;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;tryLock&lt;/code&gt;&amp;#x6765;&amp;#x5C1D;&amp;#x8BD5;&amp;#x83B7;&amp;#x53D6;Mutex&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x534F;&amp;#x7A0B;&amp;#x88AB;&amp;#x6302;&amp;#x8D77;&amp;#xFF0C;&amp;#x63D0;&amp;#x9AD8;&amp;#x6267;&amp;#x884C;&amp;#x6548;&amp;#x7387;&amp;#x3002;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;&amp;#x7ED3;&amp;#x8BED;&quot;&gt;&lt;a href=&quot;#&amp;#x7ED3;&amp;#x8BED;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x7ED3;&amp;#x8BED;&quot;&gt;&lt;/a&gt;&amp;#x7ED3;&amp;#x8BED;&lt;/h2&gt;&lt;p&gt;&amp;#x901A;&amp;#x8FC7;&amp;#x672C;&amp;#x6587;&amp;#x7684;&amp;#x4ECB;&amp;#x7ECD;&amp;#xFF0C;&amp;#x76F8;&amp;#x4FE1;&amp;#x5927;&amp;#x5BB6;&amp;#x5BF9;Kotlin&amp;#x4E2D;Mutex&amp;#x7684;&amp;#x539F;&amp;#x7406;&amp;#x548C;&amp;#x4F7F;&amp;#x7528;&amp;#x6709;&amp;#x4E86;&amp;#x66F4;&amp;#x6DF1;&amp;#x5165;&amp;#x7684;&amp;#x4E86;&amp;#x89E3;&amp;#x3002;&amp;#x5728;&amp;#x5B9E;&amp;#x9645;&amp;#x5F00;&amp;#x53D1;&amp;#x4E2D;&amp;#xFF0C;&amp;#x7075;&amp;#x6D3B;&amp;#x4F7F;&amp;#x7528;Mutex&amp;#xFF0C;&amp;#x7ED3;&amp;#x5408;&amp;#x534F;&amp;#x7A0B;&amp;#x7684;&amp;#x4F18;&amp;#x52BF;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x66F4;&amp;#x597D;&amp;#x5730;&amp;#x5904;&amp;#x7406;&amp;#x591A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x573A;&amp;#x666F;&amp;#xFF0C;&amp;#x63D0;&amp;#x9AD8;&amp;#x7A0B;&amp;#x5E8F;&amp;#x7684;&amp;#x5065;&amp;#x58EE;&amp;#x6027;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;a href=&quot;#&amp;#x63A8;&amp;#x8350;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;/a&gt;&amp;#x63A8;&amp;#x8350;&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-startup&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android_startup&lt;/a&gt;: &amp;#x63D0;&amp;#x4F9B;&amp;#x4E00;&amp;#x79CD;&amp;#x5728;&amp;#x5E94;&amp;#x7528;&amp;#x542F;&amp;#x52A8;&amp;#x65F6;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x52A0;&amp;#x7B80;&amp;#x5355;&amp;#x3001;&amp;#x9AD8;&amp;#x6548;&amp;#x7684;&amp;#x65B9;&amp;#x5F0F;&amp;#x6765;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x7EC4;&amp;#x4EF6;&amp;#xFF0C;&amp;#x4F18;&amp;#x5316;&amp;#x542F;&amp;#x52A8;&amp;#x901F;&amp;#x5EA6;&amp;#x3002;&amp;#x4E0D;&amp;#x4EC5;&amp;#x652F;&amp;#x6301;Jetpack App Startup&amp;#x7684;&amp;#x5168;&amp;#x90E8;&amp;#x529F;&amp;#x80FD;&amp;#xFF0C;&amp;#x8FD8;&amp;#x63D0;&amp;#x4F9B;&amp;#x989D;&amp;#x5916;&amp;#x7684;&amp;#x540C;&amp;#x6B65;&amp;#x4E0E;&amp;#x5F02;&amp;#x6B65;&amp;#x7B49;&amp;#x5F85;&amp;#x3001;&amp;#x7EBF;&amp;#x7A0B;&amp;#x63A7;&amp;#x5236;&amp;#x4E0E;&amp;#x591A;&amp;#x8FDB;&amp;#x7A0B;&amp;#x652F;&amp;#x6301;&amp;#x7B49;&amp;#x529F;&amp;#x80FD;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/AwesomeGithub&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AwesomeGithub&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Github&amp;#x7684;&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x7EAF;&amp;#x7EC3;&amp;#x4E60;&amp;#x9879;&amp;#x76EE;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x7EC4;&amp;#x4EF6;&amp;#x5316;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x8D26;&amp;#x6237;&amp;#x5BC6;&amp;#x7801;&amp;#x4E0E;&amp;#x8BA4;&amp;#x8BC1;&amp;#x767B;&amp;#x9646;&amp;#x3002;&amp;#x4F7F;&amp;#x7528;Kotlin&amp;#x8BED;&amp;#x8A00;&amp;#x8FDB;&amp;#x884C;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x9879;&amp;#x76EE;&amp;#x67B6;&amp;#x6784;&amp;#x662F;&amp;#x57FA;&amp;#x4E8E;JetPack\&amp;amp;DataBinding&amp;#x7684;MVVM&amp;#xFF1B;&amp;#x9879;&amp;#x76EE;&amp;#x4E2D;&amp;#x4F7F;&amp;#x7528;&amp;#x4E86;Arouter&amp;#x3001;Retrofit&amp;#x3001;Coroutine&amp;#x3001;Glide&amp;#x3001;Dagger&amp;#x4E0E;Hilt&amp;#x7B49;&amp;#x6D41;&amp;#x884C;&amp;#x5F00;&amp;#x6E90;&amp;#x6280;&amp;#x672F;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/flutter_github&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;flutter_github&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Flutter&amp;#x7684;&amp;#x8DE8;&amp;#x5E73;&amp;#x53F0;&amp;#x7248;&amp;#x672C;Github&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x4E0E;AwesomeGithub&amp;#x76F8;&amp;#x5BF9;&amp;#x5E94;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-api-analysis&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android-api-analysis&lt;/a&gt;: &amp;#x7ED3;&amp;#x5408;&amp;#x8BE6;&amp;#x7EC6;&amp;#x7684;Demo&amp;#x6765;&amp;#x5168;&amp;#x9762;&amp;#x89E3;&amp;#x6790;Android&amp;#x76F8;&amp;#x5173;&amp;#x7684;&amp;#x77E5;&amp;#x8BC6;&amp;#x70B9;, &amp;#x5E2E;&amp;#x52A9;&amp;#x8BFB;&amp;#x8005;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x5FEB;&amp;#x7684;&amp;#x638C;&amp;#x63E1;&amp;#x4E0E;&amp;#x7406;&amp;#x89E3;&amp;#x6240;&amp;#x9610;&amp;#x8FF0;&amp;#x7684;&amp;#x8981;&amp;#x70B9;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/daily_algorithm&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;daily_algorithm&lt;/a&gt;: &amp;#x6BCF;&amp;#x65E5;&amp;#x4E00;&amp;#x7B97;&amp;#x6CD5;&amp;#xFF0C;&amp;#x7531;&amp;#x6D45;&amp;#x5165;&amp;#x6DF1;&amp;#xFF0C;&amp;#x6B22;&amp;#x8FCE;&amp;#x52A0;&amp;#x5165;&amp;#x4E00;&amp;#x8D77;&amp;#x5171;&amp;#x52C9;&amp;#x3002;&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;h2 id=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;a href=&quot;#&amp;#x5F15;&amp;#x8A00;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;/a&gt;&amp;#x5F15;&amp;#x8A00;&lt;/h2&gt;&lt;p&gt;&amp;#x4ECA;&amp;#x592
    
    </summary>
    
      <category term="android" scheme="https://www.rousetime.com/categories/android/"/>
    
    
      <category term="android" scheme="https://www.rousetime.com/tags/android/"/>
    
  </entry>
  
  <entry>
    <title>360度解析Android动画：哪个更引人注目？</title>
    <link href="https://www.rousetime.com/2023/12/28/360%E5%BA%A6%E8%A7%A3%E6%9E%90Android%E5%8A%A8%E7%94%BB%EF%BC%9A%E5%93%AA%E4%B8%AA%E6%9B%B4%E5%BC%95%E4%BA%BA%E6%B3%A8%E7%9B%AE%EF%BC%9F/"/>
    <id>https://www.rousetime.com/2023/12/28/360度解析Android动画：哪个更引人注目？/</id>
    <published>2023-12-28T14:29:44.000Z</published>
    <updated>2023-12-28T14:30:14.986Z</updated>
    
    <content type="html">&lt;h2 id=&quot;&amp;#x4ECB;&amp;#x7ECD;&quot;&gt;&lt;a href=&quot;#&amp;#x4ECB;&amp;#x7ECD;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4ECB;&amp;#x7ECD;&quot;&gt;&lt;/a&gt;&amp;#x4ECB;&amp;#x7ECD;&lt;/h2&gt;&lt;p&gt;&amp;#x52A8;&amp;#x753B;&amp;#x662F;Android&amp;#x5E94;&amp;#x7528;&amp;#x4E2D;&amp;#x4E0D;&amp;#x53EF;&amp;#x6216;&amp;#x7F3A;&amp;#x7684;&amp;#x4E00;&amp;#x90E8;&amp;#x5206;&amp;#xFF0C;&amp;#x5B83;&amp;#x53EF;&amp;#x4EE5;&amp;#x8BA9;&amp;#x5E94;&amp;#x7528;&amp;#x66F4;&amp;#x52A0;&amp;#x751F;&amp;#x52A8;&amp;#x3001;&amp;#x6709;&amp;#x8DA3;&amp;#xFF0C;&amp;#x8FD8;&amp;#x53EF;&amp;#x4EE5;&amp;#x63D0;&amp;#x5347;&amp;#x7528;&amp;#x6237;&amp;#x4F53;&amp;#x9A8C;&amp;#x3002;Android&amp;#x63D0;&amp;#x4F9B;&amp;#x4E86;&amp;#x591A;&amp;#x79CD;&amp;#x52A8;&amp;#x753B;&amp;#x5B9E;&amp;#x73B0;&amp;#x65B9;&amp;#x5F0F;&amp;#xFF0C;&amp;#x5728;&amp;#x672C;&amp;#x6587;&amp;#x4E2D;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x5C06;&amp;#x6DF1;&amp;#x5165;&amp;#x7814;&amp;#x7A76;Android&amp;#x52A8;&amp;#x753B;&amp;#x7684;&amp;#x65B9;&amp;#x65B9;&amp;#x9762;&amp;#x9762;&amp;#x3002;&amp;#x4ECE;&amp;#x57FA;&amp;#x672C;&amp;#x7684;View&amp;#x52A8;&amp;#x753B;&amp;#x548C;&amp;#x5C5E;&amp;#x6027;&amp;#x52A8;&amp;#x753B;&amp;#x5F00;&amp;#x59CB;&amp;#x3002;&amp;#x6211;&amp;#x4EEC;&amp;#x5C06;&amp;#x4ECB;&amp;#x7ECD;&amp;#x9AD8;&amp;#x7EA7;&amp;#x52A8;&amp;#x753B;&amp;#x6280;&amp;#x5DE7;&amp;#xFF0C;&amp;#x5305;&amp;#x62EC;&amp;#x4F7F;&amp;#x7528;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x63D2;&amp;#x503C;&amp;#x5668;&amp;#x3001;&amp;#x5B9E;&amp;#x73B0;&amp;#x590D;&amp;#x6742;&amp;#x6548;&amp;#x679C;&amp;#xFF0C;&amp;#x4EE5;&amp;#x53CA;&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&amp;#x7684;&amp;#x6700;&amp;#x4F73;&amp;#x5B9E;&amp;#x8DF5;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;Android&amp;#x52A8;&amp;#x753B;&amp;#x57FA;&amp;#x7840;&quot;&gt;&lt;a href=&quot;#Android&amp;#x52A8;&amp;#x753B;&amp;#x57FA;&amp;#x7840;&quot; class=&quot;headerlink&quot; title=&quot;Android&amp;#x52A8;&amp;#x753B;&amp;#x57FA;&amp;#x7840;&quot;&gt;&lt;/a&gt;Android&amp;#x52A8;&amp;#x753B;&amp;#x57FA;&amp;#x7840;&lt;/h2&gt;&lt;p&gt;Android&amp;#x52A8;&amp;#x753B;&amp;#x7CFB;&amp;#x7EDF;&amp;#x63D0;&amp;#x4F9B;&amp;#x4E86;&amp;#x4E24;&amp;#x79CD;&amp;#x4E3B;&amp;#x8981;&amp;#x7C7B;&amp;#x578B;&amp;#x7684;&amp;#x52A8;&amp;#x753B;&amp;#xFF1A;View&amp;#x52A8;&amp;#x753B;&amp;#x548C;&amp;#x5C5E;&amp;#x6027;&amp;#x52A8;&amp;#x753B;&amp;#x3002;&amp;#x8FD9;&amp;#x4E24;&amp;#x79CD;&amp;#x52A8;&amp;#x753B;&amp;#x7C7B;&amp;#x578B;&amp;#x5206;&amp;#x522B;&amp;#x9002;&amp;#x7528;&amp;#x4E8E;&amp;#x4E0D;&amp;#x540C;&amp;#x7684;&amp;#x573A;&amp;#x666F;&amp;#xFF0C;&amp;#x4F46;&amp;#x90FD;&amp;#x4E3A;&amp;#x5F00;&amp;#x53D1;&amp;#x8005;&amp;#x63D0;&amp;#x4F9B;&amp;#x4E86;&amp;#x4E30;&amp;#x5BCC;&amp;#x7684;&amp;#x9009;&amp;#x9879;&amp;#x6765;&amp;#x521B;&amp;#x9020;&amp;#x5404;&amp;#x79CD;&amp;#x4EE4;&amp;#x4EBA;&amp;#x5370;&amp;#x8C61;&amp;#x6DF1;&amp;#x523B;&amp;#x7684;&amp;#x7528;&amp;#x6237;&amp;#x754C;&amp;#x9762;&amp;#x6548;&amp;#x679C;&amp;#x3002;&lt;/p&gt;
&lt;h3 id=&quot;View&amp;#x52A8;&amp;#x753B;&quot;&gt;&lt;a href=&quot;#View&amp;#x52A8;&amp;#x753B;&quot; class=&quot;headerlink&quot; title=&quot;View&amp;#x52A8;&amp;#x753B;&quot;&gt;&lt;/a&gt;View&amp;#x52A8;&amp;#x753B;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&amp;#x8865;&amp;#x95F4;&amp;#x52A8;&amp;#x753B;&lt;/p&gt;
&lt;p&gt;&amp;#x8865;&amp;#x95F4;&amp;#x52A8;&amp;#x753B;&amp;#x662F;&amp;#x6307;&amp;#x5728;&amp;#x52A8;&amp;#x753B;&amp;#x5F00;&amp;#x59CB;&amp;#x548C;&amp;#x7ED3;&amp;#x675F;&amp;#x65F6;&amp;#x53EA;&amp;#x5173;&amp;#x5FC3;&amp;#x52A8;&amp;#x753B;&amp;#x7684;&amp;#x8D77;&amp;#x59CB;&amp;#x72B6;&amp;#x6001;&amp;#x548C;&amp;#x7ED3;&amp;#x675F;&amp;#x72B6;&amp;#x6001;&amp;#xFF0C;&amp;#x800C;&amp;#x4E0D;&amp;#x5173;&amp;#x5FC3;&amp;#x4E2D;&amp;#x95F4;&amp;#x7684;&amp;#x8FC7;&amp;#x7A0B;&amp;#x3002;&amp;#x5728;Android&amp;#x4E2D;&amp;#xFF0C;&amp;#x5E38;&amp;#x89C1;&amp;#x7684;&amp;#x8865;&amp;#x95F4;&amp;#x52A8;&amp;#x753B;&amp;#x5305;&amp;#x62EC;&amp;#x5E73;&amp;#x79FB;&amp;#x3001;&amp;#x7F29;&amp;#x653E;&amp;#x3001;&amp;#x65CB;&amp;#x8F6C;&amp;#x548C;&amp;#x900F;&amp;#x660E;&amp;#x5EA6;&amp;#x53D8;&amp;#x5316;&amp;#x3002;&amp;#x4E0B;&amp;#x9762;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x7B80;&amp;#x5355;&amp;#x7684;&amp;#x5E73;&amp;#x79FB;&amp;#x52A8;&amp;#x753B;&amp;#x793A;&amp;#x4F8B;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x521B;&amp;#x5EFA;&amp;#x4E00;&amp;#x4E2A;&amp;#x5E73;&amp;#x79FB;&amp;#x52A8;&amp;#x753B;&amp;#xFF0C;&amp;#x5C06;View&amp;#x4ECE;&amp;#x5F53;&amp;#x524D;&amp;#x4F4D;&amp;#x7F6E;&amp;#x79FB;&amp;#x52A8;&amp;#x5230;x=200&amp;#x7684;&amp;#x4F4D;&amp;#x7F6E;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; translateAnimation = TranslateAnimation(&lt;span class=&quot;number&quot;&gt;0f&lt;/span&gt;, &lt;span class=&quot;number&quot;&gt;200f&lt;/span&gt;, &lt;span class=&quot;number&quot;&gt;0f&lt;/span&gt;, &lt;span class=&quot;number&quot;&gt;0f&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;translateAnimation.duration = &lt;span class=&quot;number&quot;&gt;1000&lt;/span&gt; &lt;span class=&quot;comment&quot;&gt;// &amp;#x52A8;&amp;#x753B;&amp;#x6301;&amp;#x7EED;&amp;#x65F6;&amp;#x95F4;&amp;#x4E3A;1&amp;#x79D2;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x5C06;&amp;#x52A8;&amp;#x753B;&amp;#x5E94;&amp;#x7528;&amp;#x5230;View&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;view.startAnimation(translateAnimation)&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&amp;#x9010;&amp;#x5E27;&amp;#x52A8;&amp;#x753B;&lt;/p&gt;
&lt;p&gt;&amp;#x9010;&amp;#x5E27;&amp;#x52A8;&amp;#x753B;&amp;#x662F;&amp;#x901A;&amp;#x8FC7;&amp;#x4E00;&amp;#x7CFB;&amp;#x5217;&amp;#x9884;&amp;#x5148;&amp;#x5B9A;&amp;#x4E49;&amp;#x597D;&amp;#x7684;&amp;#x56FE;&amp;#x7247;&amp;#xFF08;&amp;#x5E27;&amp;#xFF09;&amp;#x8FDE;&amp;#x7EED;&amp;#x64AD;&amp;#x653E;&amp;#xFF0C;&amp;#x5F62;&amp;#x6210;&amp;#x52A8;&amp;#x753B;&amp;#x6548;&amp;#x679C;&amp;#x3002;&amp;#x5728;Android&amp;#x4E2D;&amp;#xFF0C;&amp;#x901A;&amp;#x5E38;&amp;#x4F7F;&amp;#x7528;XML&amp;#x8D44;&amp;#x6E90;&amp;#x6587;&amp;#x4EF6;&amp;#x5B9A;&amp;#x4E49;&amp;#x9010;&amp;#x5E27;&amp;#x52A8;&amp;#x753B;&amp;#x3002;&amp;#x4EE5;&amp;#x4E0B;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x7B80;&amp;#x5355;&amp;#x7684;&amp;#x9010;&amp;#x5E27;&amp;#x52A8;&amp;#x753B;XML&amp;#x6587;&amp;#x4EF6;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight xml&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;&amp;lt;!-- res/anim/frame_animation.xml --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;span class=&quot;name&quot;&gt;animation-list&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;xmlns:android&lt;/span&gt;=&lt;span class=&quot;string&quot;&gt;&amp;quot;http://schemas.android.com/apk/res/android&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;tag&quot;&gt;    &lt;span class=&quot;attr&quot;&gt;android:oneshot&lt;/span&gt;=&lt;span class=&quot;string&quot;&gt;&amp;quot;false&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;span class=&quot;name&quot;&gt;item&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;android:drawable&lt;/span&gt;=&lt;span class=&quot;string&quot;&gt;&amp;quot;@drawable/frame1&amp;quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;android:duration&lt;/span&gt;=&lt;span class=&quot;string&quot;&gt;&amp;quot;100&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;span class=&quot;name&quot;&gt;item&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;android:drawable&lt;/span&gt;=&lt;span class=&quot;string&quot;&gt;&amp;quot;@drawable/frame2&amp;quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;android:duration&lt;/span&gt;=&lt;span class=&quot;string&quot;&gt;&amp;quot;100&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;tag&quot;&gt;&amp;lt;&lt;span class=&quot;name&quot;&gt;item&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;android:drawable&lt;/span&gt;=&lt;span class=&quot;string&quot;&gt;&amp;quot;@drawable/frame3&amp;quot;&lt;/span&gt; &lt;span class=&quot;attr&quot;&gt;android:duration&lt;/span&gt;=&lt;span class=&quot;string&quot;&gt;&amp;quot;100&amp;quot;&lt;/span&gt; /&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;&amp;lt;!-- &amp;#x6DFB;&amp;#x52A0;&amp;#x66F4;&amp;#x591A;&amp;#x5E27;... --&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;tag&quot;&gt;&amp;lt;/&lt;span class=&quot;name&quot;&gt;animation-list&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x5728;&amp;#x4EE3;&amp;#x7801;&amp;#x4E2D;&amp;#x52A0;&amp;#x8F7D;&amp;#x5E76;&amp;#x5E94;&amp;#x7528;&amp;#x9010;&amp;#x5E27;&amp;#x52A8;&amp;#x753B;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x52A0;&amp;#x8F7D;&amp;#x9010;&amp;#x5E27;&amp;#x52A8;&amp;#x753B;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; frameAnimation = AnimationUtils.loadAnimation(context, R.anim.frame_animation)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x5C06;&amp;#x52A8;&amp;#x753B;&amp;#x5E94;&amp;#x7528;&amp;#x5230;ImageView&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;imageView.startAnimation(frameAnimation)&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;&amp;#x5C5E;&amp;#x6027;&amp;#x52A8;&amp;#x753B;&quot;&gt;&lt;a href=&quot;#&amp;#x5C5E;&amp;#x6027;&amp;#x52A8;&amp;#x753B;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5C5E;&amp;#x6027;&amp;#x52A8;&amp;#x753B;&quot;&gt;&lt;/a&gt;&amp;#x5C5E;&amp;#x6027;&amp;#x52A8;&amp;#x753B;&lt;/h3&gt;&lt;p&gt;&amp;#x5C5E;&amp;#x6027;&amp;#x52A8;&amp;#x753B;&amp;#x5141;&amp;#x8BB8;&amp;#x5BF9;&amp;#x89C6;&amp;#x56FE;&amp;#x7684;&amp;#x4EFB;&amp;#x4F55;&amp;#x5C5E;&amp;#x6027;&amp;#x8FDB;&amp;#x884C;&amp;#x5E73;&amp;#x6ED1;&amp;#x7684;&amp;#x52A8;&amp;#x753B;&amp;#x53D8;&amp;#x6362;&amp;#xFF0C;&amp;#x5305;&amp;#x62EC;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x5C5E;&amp;#x6027;&amp;#x3002;&amp;#x5B83;&amp;#x63D0;&amp;#x4F9B;&amp;#x4E86;&amp;#x66F4;&amp;#x7075;&amp;#x6D3B;&amp;#x7684;&amp;#x65B9;&amp;#x5F0F;&amp;#x6765;&amp;#x5B9E;&amp;#x73B0;&amp;#x590D;&amp;#x6742;&amp;#x7684;&amp;#x52A8;&amp;#x753B;&amp;#x6548;&amp;#x679C;&amp;#xFF0C;&amp;#x5E76;&amp;#x901A;&amp;#x8FC7;&lt;code&gt;ObjectAnimator&lt;/code&gt;&amp;#x7C7B;&amp;#x5B9E;&amp;#x73B0;&amp;#x3002;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&amp;#x503C;&amp;#x52A8;&amp;#x753B;&amp;#xFF08;ValueAnimator&amp;#xFF09;&lt;/p&gt;
&lt;p&gt;&amp;#x503C;&amp;#x52A8;&amp;#x753B;&amp;#x5141;&amp;#x8BB8;&amp;#x6211;&amp;#x4EEC;&amp;#x5728;&amp;#x4E00;&amp;#x5B9A;&amp;#x65F6;&amp;#x95F4;&amp;#x8303;&amp;#x56F4;&amp;#x5185;&amp;#x9010;&amp;#x6E10;&amp;#x6539;&amp;#x53D8;&amp;#x67D0;&amp;#x4E2A;&amp;#x503C;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x7528;&amp;#x4E8E;&amp;#x5B9E;&amp;#x73B0;&amp;#x66F4;&amp;#x590D;&amp;#x6742;&amp;#x7684;&amp;#x52A8;&amp;#x753B;&amp;#x6548;&amp;#x679C;&amp;#x3002;&amp;#x4EE5;&amp;#x4E0B;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x7B80;&amp;#x5355;&amp;#x7684;&amp;#x503C;&amp;#x52A8;&amp;#x753B;&amp;#x793A;&amp;#x4F8B;&amp;#xFF0C;&amp;#x5B9E;&amp;#x73B0;&amp;#x4E00;&amp;#x4E2A;&amp;#x989C;&amp;#x8272;&amp;#x8FC7;&amp;#x6E21;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x521B;&amp;#x5EFA;&amp;#x4E00;&amp;#x4E2A;&amp;#x503C;&amp;#x52A8;&amp;#x753B;&amp;#xFF0C;&amp;#x9010;&amp;#x6E10;&amp;#x6539;&amp;#x53D8;&amp;#x80CC;&amp;#x666F;&amp;#x989C;&amp;#x8272;&amp;#x4ECE;&amp;#x7EA2;&amp;#x8272;&amp;#x5230;&amp;#x84DD;&amp;#x8272;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; colorAnimator = ValueAnimator.ofArgb(Color.RED, Color.BLUE)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;colorAnimator.duration = &lt;span class=&quot;number&quot;&gt;2000&lt;/span&gt; &lt;span class=&quot;comment&quot;&gt;// &amp;#x52A8;&amp;#x753B;&amp;#x6301;&amp;#x7EED;&amp;#x65F6;&amp;#x95F4;&amp;#x4E3A;2&amp;#x79D2;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x6DFB;&amp;#x52A0;&amp;#x503C;&amp;#x52A8;&amp;#x753B;&amp;#x7684;&amp;#x76D1;&amp;#x542C;&amp;#x5668;&amp;#xFF0C;&amp;#x5B9E;&amp;#x65F6;&amp;#x66F4;&amp;#x65B0;&amp;#x80CC;&amp;#x666F;&amp;#x989C;&amp;#x8272;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;colorAnimator.addUpdateListener { animator -&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; color = animator.animatedValue &lt;span class=&quot;keyword&quot;&gt;as&lt;/span&gt; &lt;span class=&quot;built_in&quot;&gt;Int&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    view.setBackgroundColor(color)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x542F;&amp;#x52A8;&amp;#x503C;&amp;#x52A8;&amp;#x753B;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;colorAnimator.start()&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&amp;#x5BF9;&amp;#x8C61;&amp;#x52A8;&amp;#x753B;&amp;#xFF08;ObjectAnimator&amp;#xFF09;&lt;/p&gt;
&lt;p&gt;&amp;#x5BF9;&amp;#x8C61;&amp;#x52A8;&amp;#x753B;&amp;#x662F;&amp;#x503C;&amp;#x52A8;&amp;#x753B;&amp;#x7684;&amp;#x6269;&amp;#x5C55;&amp;#xFF0C;&amp;#x5B83;&amp;#x4E0D;&amp;#x4EC5;&amp;#x53EF;&amp;#x4EE5;&amp;#x6539;&amp;#x53D8;&amp;#x57FA;&amp;#x672C;&amp;#x6570;&amp;#x636E;&amp;#x7C7B;&amp;#x578B;&amp;#x7684;&amp;#x503C;&amp;#xFF0C;&amp;#x8FD8;&amp;#x53EF;&amp;#x4EE5;&amp;#x6539;&amp;#x53D8;&amp;#x5BF9;&amp;#x8C61;&amp;#x7684;&amp;#x5C5E;&amp;#x6027;&amp;#x3002;&amp;#x4EE5;&amp;#x4E0B;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x7B80;&amp;#x5355;&amp;#x7684;&amp;#x5BF9;&amp;#x8C61;&amp;#x52A8;&amp;#x753B;&amp;#x793A;&amp;#x4F8B;&amp;#xFF0C;&amp;#x65CB;&amp;#x8F6C;&amp;#x4E00;&amp;#x4E2A;ImageView&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x521B;&amp;#x5EFA;&amp;#x4E00;&amp;#x4E2A;&amp;#x5BF9;&amp;#x8C61;&amp;#x52A8;&amp;#x753B;&amp;#xFF0C;&amp;#x9010;&amp;#x6E10;&amp;#x65CB;&amp;#x8F6C;ImageView&amp;#x7684;&amp;#x89D2;&amp;#x5EA6;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; rotateAnimator = ObjectAnimator.ofFloat(imageView, &lt;span class=&quot;string&quot;&gt;&amp;quot;rotation&amp;quot;&lt;/span&gt;, &lt;span class=&quot;number&quot;&gt;0f&lt;/span&gt;, &lt;span class=&quot;number&quot;&gt;360f&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;rotateAnimator.duration = &lt;span class=&quot;number&quot;&gt;1000&lt;/span&gt; &lt;span class=&quot;comment&quot;&gt;// &amp;#x52A8;&amp;#x753B;&amp;#x6301;&amp;#x7EED;&amp;#x65F6;&amp;#x95F4;&amp;#x4E3A;1&amp;#x79D2;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x542F;&amp;#x52A8;&amp;#x5BF9;&amp;#x8C61;&amp;#x52A8;&amp;#x753B;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;rotateAnimator.start()&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;&amp;#x5C5E;&amp;#x6027;&amp;#x52A8;&amp;#x753B;&amp;#x539F;&amp;#x7406;&quot;&gt;&lt;a href=&quot;#&amp;#x5C5E;&amp;#x6027;&amp;#x52A8;&amp;#x753B;&amp;#x539F;&amp;#x7406;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5C5E;&amp;#x6027;&amp;#x52A8;&amp;#x753B;&amp;#x539F;&amp;#x7406;&quot;&gt;&lt;/a&gt;&amp;#x5C5E;&amp;#x6027;&amp;#x52A8;&amp;#x753B;&amp;#x539F;&amp;#x7406;&lt;/h2&gt;&lt;p&gt;&amp;#x5C5E;&amp;#x6027;&amp;#x52A8;&amp;#x753B;&amp;#x7684;&amp;#x5B9E;&amp;#x73B0;&amp;#x539F;&amp;#x7406;&amp;#x662F;&amp;#x901A;&amp;#x8FC7;&lt;strong&gt;PropertyValuesHolder&lt;/strong&gt;&amp;#x6765;&amp;#x63CF;&amp;#x8FF0;&amp;#x5C5E;&amp;#x6027;&amp;#x503C;&amp;#x7684;&amp;#x53D8;&amp;#x5316;&amp;#x3002;&lt;strong&gt;PropertyValuesHolder&lt;/strong&gt;&amp;#x53EF;&amp;#x4EE5;&amp;#x63CF;&amp;#x8FF0;&amp;#x4E00;&amp;#x4E2A;&amp;#x6216;&amp;#x591A;&amp;#x4E2A;&amp;#x5C5E;&amp;#x6027;&amp;#x503C;&amp;#x7684;&amp;#x53D8;&amp;#x5316;&amp;#xFF0C;&amp;#x6BCF;&amp;#x4E2A;&amp;#x5C5E;&amp;#x6027;&amp;#x503C;&amp;#x7684;&amp;#x53D8;&amp;#x5316;&amp;#x53EF;&amp;#x4EE5;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x7EBF;&amp;#x6027;&amp;#x53D8;&amp;#x5316;&amp;#x3001;&amp;#x4E00;&amp;#x4E2A;&amp;#x975E;&amp;#x7EBF;&amp;#x6027;&amp;#x53D8;&amp;#x5316;&amp;#x6216;&amp;#x4E00;&amp;#x4E2A;&amp;#x5173;&amp;#x952E;&amp;#x5E27;&amp;#x53D8;&amp;#x5316;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PropertyValuesHolder&lt;/strong&gt;&amp;#x7684;&amp;#x6784;&amp;#x9020;&amp;#x65B9;&amp;#x6CD5;&amp;#x5982;&amp;#x4E0B;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;PropertyValuesHolder&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(propertyName: &lt;span class=&quot;type&quot;&gt;String&lt;/span&gt;, valueToInterpolate: &lt;span class=&quot;type&quot;&gt;Float&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;: PropertyValuesHolder {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; PropertyValuesHolder(propertyName).apply {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        setFloatValues(valueToInterpolate)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x5176;&amp;#x4E2D;&amp;#xFF0C;&lt;code&gt;propertyName&lt;/code&gt;&amp;#x662F;&amp;#x5C5E;&amp;#x6027;&amp;#x540D;&amp;#x79F0;&amp;#xFF0C;&lt;code&gt;valueToInterpolate&lt;/code&gt;&amp;#x662F;&amp;#x5C5E;&amp;#x6027;&amp;#x503C;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PropertyValuesHolder&lt;/strong&gt;&amp;#x53EF;&amp;#x4EE5;&amp;#x901A;&amp;#x8FC7;&lt;code&gt;setFloatValues()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x6765;&amp;#x8BBE;&amp;#x7F6E;&amp;#x591A;&amp;#x4E2A;&amp;#x5C5E;&amp;#x6027;&amp;#x503C;&amp;#xFF0C;&amp;#x4E5F;&amp;#x53EF;&amp;#x4EE5;&amp;#x901A;&amp;#x8FC7;&lt;code&gt;setKeyframe()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x6765;&amp;#x8BBE;&amp;#x7F6E;&amp;#x5173;&amp;#x952E;&amp;#x5E27;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PropertyValuesHolder&lt;/strong&gt;&amp;#x7684;&lt;code&gt;setFloatValues()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&amp;#x793A;&amp;#x4F8B;&amp;#x5982;&amp;#x4E0B;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; alphaHolder = PropertyValuesHolder.ofFloat(&lt;span class=&quot;string&quot;&gt;&amp;quot;alpha&amp;quot;&lt;/span&gt;, &lt;span class=&quot;number&quot;&gt;0.0f&lt;/span&gt;, &lt;span class=&quot;number&quot;&gt;1.0f&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x8BE5;&amp;#x4EE3;&amp;#x7801;&amp;#x521B;&amp;#x5EFA;&amp;#x4E86;&amp;#x4E00;&amp;#x4E2A;&lt;code&gt;alphaHolder&lt;/code&gt;&amp;#x5BF9;&amp;#x8C61;&amp;#xFF0C;&amp;#x5B83;&amp;#x63CF;&amp;#x8FF0;&amp;#x4E86;&amp;#x63A7;&amp;#x4EF6;&amp;#x7684;&lt;code&gt;alpha&lt;/code&gt;&amp;#x5C5E;&amp;#x6027;&amp;#x4ECE;0.0f&amp;#x5230;1.0f&amp;#x7684;&amp;#x7EBF;&amp;#x6027;&amp;#x53D8;&amp;#x5316;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PropertyValuesHolder&lt;/strong&gt;&amp;#x7684;&lt;code&gt;setKeyframe()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&amp;#x793A;&amp;#x4F8B;&amp;#x5982;&amp;#x4E0B;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; alphaHolder = PropertyValuesHolder.ofFloat(&lt;span class=&quot;string&quot;&gt;&amp;quot;alpha&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;alphaHolder.setKeyframe(&lt;span class=&quot;number&quot;&gt;0.0f&lt;/span&gt;, &lt;span class=&quot;number&quot;&gt;0.0f&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;alphaHolder.setKeyframe(&lt;span class=&quot;number&quot;&gt;0.5f&lt;/span&gt;, &lt;span class=&quot;number&quot;&gt;0.5f&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;alphaHolder.setKeyframe(&lt;span class=&quot;number&quot;&gt;1.0f&lt;/span&gt;, &lt;span class=&quot;number&quot;&gt;1.0f&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x8BE5;&amp;#x4EE3;&amp;#x7801;&amp;#x521B;&amp;#x5EFA;&amp;#x4E86;&amp;#x4E00;&amp;#x4E2A;&lt;code&gt;alphaHolder&lt;/code&gt;&amp;#x5BF9;&amp;#x8C61;&amp;#xFF0C;&amp;#x5B83;&amp;#x63CF;&amp;#x8FF0;&amp;#x4E86;&amp;#x63A7;&amp;#x4EF6;&amp;#x7684;&lt;code&gt;alpha&lt;/code&gt;&amp;#x5C5E;&amp;#x6027;&amp;#x4ECE;0.0f&amp;#x5230;1.0f&amp;#x7684;&amp;#x975E;&amp;#x7EBF;&amp;#x6027;&amp;#x53D8;&amp;#x5316;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PropertyValuesHolder&lt;/strong&gt;&amp;#x521B;&amp;#x5EFA;&amp;#x5B8C;&amp;#x6210;&amp;#x540E;&amp;#xFF0C;&amp;#x5C31;&amp;#x53EF;&amp;#x4EE5;&amp;#x5C06;&amp;#x5176;&amp;#x6DFB;&amp;#x52A0;&amp;#x5230;&lt;strong&gt;ObjectAnimator&lt;/strong&gt;&amp;#x5BF9;&amp;#x8C61;&amp;#x4E2D;&amp;#x6765;&amp;#x521B;&amp;#x5EFA;&amp;#x52A8;&amp;#x753B;&amp;#x4E86;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ObjectAnimator&lt;/strong&gt;&amp;#x7684;&amp;#x6784;&amp;#x9020;&amp;#x65B9;&amp;#x6CD5;&amp;#x5982;&amp;#x4E0B;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;ObjectAnimator&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(target: &lt;span class=&quot;type&quot;&gt;Any&lt;/span&gt;, propertyName: &lt;span class=&quot;type&quot;&gt;String&lt;/span&gt;, propertyValuesHolder: &lt;span class=&quot;type&quot;&gt;PropertyValuesHolder&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;: ObjectAnimator {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; ObjectAnimator().apply {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        setTarget(target)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        setProperty(propertyName)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        setPropertyValuesHolder(propertyValuesHolder)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x5176;&amp;#x4E2D;&amp;#xFF0C;&lt;code&gt;target&lt;/code&gt;&amp;#x662F;&amp;#x52A8;&amp;#x753B;&amp;#x7684;&amp;#x76EE;&amp;#x6807;&amp;#x5BF9;&amp;#x8C61;&amp;#xFF0C;&lt;code&gt;propertyName&lt;/code&gt;&amp;#x662F;&amp;#x5C5E;&amp;#x6027;&amp;#x540D;&amp;#x79F0;&amp;#xFF0C;&lt;code&gt;propertyValuesHolder&lt;/code&gt;&amp;#x662F;&amp;#x5C5E;&amp;#x6027;&amp;#x503C;&amp;#x7684;&amp;#x63CF;&amp;#x8FF0;&amp;#x5BF9;&amp;#x8C61;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x63D2;&amp;#x503C;&amp;#x5668;&quot;&gt;&lt;a href=&quot;#&amp;#x63D2;&amp;#x503C;&amp;#x5668;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x63D2;&amp;#x503C;&amp;#x5668;&quot;&gt;&lt;/a&gt;&amp;#x63D2;&amp;#x503C;&amp;#x5668;&lt;/h2&gt;&lt;p&gt;&amp;#x63D2;&amp;#x503C;&amp;#x5668;&amp;#x53EF;&amp;#x4EE5;&amp;#x6539;&amp;#x53D8;&amp;#x52A8;&amp;#x753B;&amp;#x7684;&amp;#x6267;&amp;#x884C;&amp;#x901F;&amp;#x7387;&amp;#xFF0C;&amp;#x8BA9;&amp;#x52A8;&amp;#x753B;&amp;#x6548;&amp;#x679C;&amp;#x66F4;&amp;#x52A0;&amp;#x751F;&amp;#x52A8;&amp;#x3001;&amp;#x6709;&amp;#x8DA3;&amp;#x3002;Android&amp;#x63D0;&amp;#x4F9B;&amp;#x4E86;&amp;#x591A;&amp;#x79CD;&amp;#x63D2;&amp;#x503C;&amp;#x5668;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x6EE1;&amp;#x8DB3;&amp;#x4E0D;&amp;#x540C;&amp;#x7684;&amp;#x9700;&amp;#x6C42;&amp;#x3002;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&amp;#x7CFB;&amp;#x7EDF;&amp;#x5185;&amp;#x7F6E;&amp;#x63D2;&amp;#x503C;&amp;#x5668;&lt;/p&gt;
&lt;p&gt;&amp;#x4EE5;&amp;#x4E0B;&amp;#x662F;&amp;#x4E00;&amp;#x4E9B;&amp;#x5E38;&amp;#x7528;&amp;#x7684;&amp;#x7CFB;&amp;#x7EDF;&amp;#x5185;&amp;#x7F6E;&amp;#x63D2;&amp;#x503C;&amp;#x5668;&amp;#xFF1A;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;AccelerateDecelerateInterpolator&lt;/code&gt;: &amp;#x5148;&amp;#x52A0;&amp;#x901F;&amp;#x540E;&amp;#x51CF;&amp;#x901F;&amp;#x7684;&amp;#x63D2;&amp;#x503C;&amp;#x5668;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;AccelerateInterpolator&lt;/code&gt;: &amp;#x5148;&amp;#x52A0;&amp;#x901F;&amp;#x540E;&amp;#x5300;&amp;#x901F;&amp;#x7684;&amp;#x63D2;&amp;#x503C;&amp;#x5668;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;DecelerateInterpolator&lt;/code&gt;: &amp;#x5148;&amp;#x51CF;&amp;#x901F;&amp;#x540E;&amp;#x5300;&amp;#x901F;&amp;#x7684;&amp;#x63D2;&amp;#x503C;&amp;#x5668;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;LinearInterpolator&lt;/code&gt;: &amp;#x7EBF;&amp;#x6027;&amp;#x5300;&amp;#x901F;&amp;#x7684;&amp;#x63D2;&amp;#x503C;&amp;#x5668;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x4F7F;&amp;#x7528;&amp;#x7CFB;&amp;#x7EDF;&amp;#x5185;&amp;#x7F6E;&amp;#x63D2;&amp;#x503C;&amp;#x5668;&amp;#x7684;&amp;#x4F8B;&amp;#x5B50;&amp;#xFF0C;&amp;#x5B9E;&amp;#x73B0;&amp;#x5148;&amp;#x52A0;&amp;#x901F;&amp;#x540E;&amp;#x51CF;&amp;#x901F;&amp;#x7684;&amp;#x52A8;&amp;#x753B;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; scaleAnimator = ObjectAnimator.ofFloat(view, &lt;span class=&quot;string&quot;&gt;&amp;quot;scaleX&amp;quot;&lt;/span&gt;, &lt;span class=&quot;number&quot;&gt;0.5f&lt;/span&gt;, &lt;span class=&quot;number&quot;&gt;2f&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;scaleAnimator.duration = &lt;span class=&quot;number&quot;&gt;1000&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;scaleAnimator.interpolator = AccelerateDecelerateInterpolator()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;scaleAnimator.start()&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x63D2;&amp;#x503C;&amp;#x5668;&lt;/p&gt;
&lt;p&gt;&amp;#x5BF9;&amp;#x4E8E;&amp;#x7279;&amp;#x5B9A;&amp;#x7684;&amp;#x52A8;&amp;#x753B;&amp;#x6548;&amp;#x679C;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x8FD8;&amp;#x53EF;&amp;#x4EE5;&amp;#x521B;&amp;#x5EFA;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x63D2;&amp;#x503C;&amp;#x5668;&amp;#x3002;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x63D2;&amp;#x503C;&amp;#x5668;&amp;#x9700;&amp;#x8981;&amp;#x5B9E;&amp;#x73B0; &lt;code&gt;Interpolator&lt;/code&gt; &amp;#x63A5;&amp;#x53E3;&amp;#x3002;&amp;#x4EE5;&amp;#x4E0B;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x7B80;&amp;#x5355;&amp;#x7684;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x63D2;&amp;#x503C;&amp;#x5668;&amp;#x7684;&amp;#x793A;&amp;#x4F8B;&amp;#xFF0C;&amp;#x5B9E;&amp;#x73B0;&amp;#x5148;&amp;#x51CF;&amp;#x901F;&amp;#x540E;&amp;#x52A0;&amp;#x901F;&amp;#x7684;&amp;#x6548;&amp;#x679C;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;DecelerateAccelerateInterpolator&lt;/span&gt; : &lt;span class=&quot;type&quot;&gt;Interpolator {&lt;/span&gt;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;getInterpolation&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(input: &lt;span class=&quot;type&quot;&gt;Float&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;: &lt;span class=&quot;built_in&quot;&gt;Float&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x4F7F;&amp;#x7528;&amp;#x6570;&amp;#x5B66;&amp;#x51FD;&amp;#x6570;&amp;#x5B9E;&amp;#x73B0;&amp;#x5148;&amp;#x51CF;&amp;#x901F;&amp;#x540E;&amp;#x52A0;&amp;#x901F;&amp;#x7684;&amp;#x63D2;&amp;#x503C;&amp;#x5668;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; Math.cos((input + &lt;span class=&quot;number&quot;&gt;1&lt;/span&gt;) * Math.PI).toFloat() / &lt;span class=&quot;number&quot;&gt;2.0f&lt;/span&gt; + &lt;span class=&quot;number&quot;&gt;0.5f&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x4F7F;&amp;#x7528;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x63D2;&amp;#x503C;&amp;#x5668;&amp;#x7684;&amp;#x4F8B;&amp;#x5B50;&amp;#xFF0C;&amp;#x5B9E;&amp;#x73B0;&amp;#x5148;&amp;#x51CF;&amp;#x901F;&amp;#x540E;&amp;#x52A0;&amp;#x901F;&amp;#x7684;&amp;#x52A8;&amp;#x753B;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; rotateAnimator = ObjectAnimator.ofFloat(view, &lt;span class=&quot;string&quot;&gt;&amp;quot;rotation&amp;quot;&lt;/span&gt;, &lt;span class=&quot;number&quot;&gt;0f&lt;/span&gt;, &lt;span class=&quot;number&quot;&gt;360f&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;rotateAnimator.duration = &lt;span class=&quot;number&quot;&gt;1000&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;rotateAnimator.interpolator = DecelerateAccelerateInterpolator()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;rotateAnimator.start()&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;&amp;#x4F7F;&amp;#x7528;&amp;#x4F30;&amp;#x503C;&amp;#x5668;&quot;&gt;&lt;a href=&quot;#&amp;#x4F7F;&amp;#x7528;&amp;#x4F30;&amp;#x503C;&amp;#x5668;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4F7F;&amp;#x7528;&amp;#x4F30;&amp;#x503C;&amp;#x5668;&quot;&gt;&lt;/a&gt;&amp;#x4F7F;&amp;#x7528;&amp;#x4F30;&amp;#x503C;&amp;#x5668;&lt;/h2&gt;&lt;p&gt;&amp;#x4F30;&amp;#x503C;&amp;#x5668;&amp;#x53EF;&amp;#x4EE5;&amp;#x8BA9;&amp;#x52A8;&amp;#x753B;&amp;#x66F4;&amp;#x52A0;&amp;#x7CBE;&amp;#x51C6;&amp;#x3001;&amp;#x7075;&amp;#x6D3B;&amp;#x3002;&amp;#x4F30;&amp;#x503C;&amp;#x5668;&amp;#x53EF;&amp;#x4EE5;&amp;#x5C06;&amp;#x5C5E;&amp;#x6027;&amp;#x503C;&amp;#x7684;&amp;#x53D8;&amp;#x5316;&amp;#x4ECE;&amp;#x7EBF;&amp;#x6027;&amp;#x53D8;&amp;#x5316;&amp;#x8F6C;&amp;#x6362;&amp;#x4E3A;&amp;#x975E;&amp;#x7EBF;&amp;#x6027;&amp;#x53D8;&amp;#x5316;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ObjectAnimator&lt;/strong&gt;&amp;#x5BF9;&amp;#x8C61;&amp;#x7684;&lt;code&gt;setEvaluator()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x53EF;&amp;#x4EE5;&amp;#x8BBE;&amp;#x7F6E;&amp;#x4F30;&amp;#x503C;&amp;#x5668;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;setEvaluator()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&amp;#x793A;&amp;#x4F8B;&amp;#x5982;&amp;#x4E0B;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; objectAnimator = ObjectAnimator.ofFloat(button, &lt;span class=&quot;string&quot;&gt;&amp;quot;alpha&amp;quot;&lt;/span&gt;, &lt;span class=&quot;number&quot;&gt;0.0f&lt;/span&gt;, &lt;span class=&quot;number&quot;&gt;1.0f&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;objectAnimator.setEvaluator(ArgbEvaluator()())&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h2 id=&quot;&amp;#x4F7F;&amp;#x7528;&amp;#x5173;&amp;#x952E;&amp;#x5E27;&quot;&gt;&lt;a href=&quot;#&amp;#x4F7F;&amp;#x7528;&amp;#x5173;&amp;#x952E;&amp;#x5E27;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4F7F;&amp;#x7528;&amp;#x5173;&amp;#x952E;&amp;#x5E27;&quot;&gt;&lt;/a&gt;&amp;#x4F7F;&amp;#x7528;&amp;#x5173;&amp;#x952E;&amp;#x5E27;&lt;/h2&gt;&lt;p&gt;&amp;#x5173;&amp;#x952E;&amp;#x5E27;&amp;#x53EF;&amp;#x4EE5;&amp;#x8BA9;&amp;#x52A8;&amp;#x753B;&amp;#x66F4;&amp;#x52A0;&amp;#x590D;&amp;#x6742;&amp;#x3001;&amp;#x591A;&amp;#x6837;&amp;#x3002;&amp;#x5173;&amp;#x952E;&amp;#x5E27;&amp;#x53EF;&amp;#x4EE5;&amp;#x6307;&amp;#x5B9A;&amp;#x52A8;&amp;#x753B;&amp;#x5728;&amp;#x7279;&amp;#x5B9A;&amp;#x65F6;&amp;#x95F4;&amp;#x70B9;&amp;#x7684;&amp;#x5C5E;&amp;#x6027;&amp;#x503C;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PropertyValuesHolder&lt;/strong&gt;&amp;#x5BF9;&amp;#x8C61;&amp;#x7684;&lt;code&gt;setKeyframe()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x53EF;&amp;#x4EE5;&amp;#x8BBE;&amp;#x7F6E;&amp;#x5173;&amp;#x952E;&amp;#x5E27;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;setKeyframe()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&amp;#x793A;&amp;#x4F8B;&amp;#x5982;&amp;#x4E0B;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; alphaHolder = PropertyValuesHolder.ofFloat(&lt;span class=&quot;string&quot;&gt;&amp;quot;alpha&amp;quot;&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;alphaHolder.setKeyframe(&lt;span class=&quot;number&quot;&gt;0.0f&lt;/span&gt;, &lt;span class=&quot;number&quot;&gt;0.0f&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;alphaHolder.setKeyframe(&lt;span class=&quot;number&quot;&gt;0.5f&lt;/span&gt;, &lt;span class=&quot;number&quot;&gt;0.5f&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;alphaHolder.setKeyframe(&lt;span class=&quot;number&quot;&gt;1.0f&lt;/span&gt;, &lt;span class=&quot;number&quot;&gt;1.0f&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x8BE5;&amp;#x4EE3;&amp;#x7801;&amp;#x521B;&amp;#x5EFA;&amp;#x4E86;&amp;#x4E00;&amp;#x4E2A;&lt;code&gt;alphaHolder&lt;/code&gt;&amp;#x5BF9;&amp;#x8C61;&amp;#xFF0C;&amp;#x5B83;&amp;#x63CF;&amp;#x8FF0;&amp;#x4E86;&amp;#x63A7;&amp;#x4EF6;&amp;#x7684;&lt;code&gt;alpha&lt;/code&gt;&amp;#x5C5E;&amp;#x6027;&amp;#x4ECE;0.0f&amp;#x5230;1.0f&amp;#x7684;&amp;#x975E;&amp;#x7EBF;&amp;#x6027;&amp;#x53D8;&amp;#x5316;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x4F7F;&amp;#x7528;&amp;#x52A8;&amp;#x753B;&amp;#x7EC4;&amp;#x5408;&quot;&gt;&lt;a href=&quot;#&amp;#x4F7F;&amp;#x7528;&amp;#x52A8;&amp;#x753B;&amp;#x7EC4;&amp;#x5408;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4F7F;&amp;#x7528;&amp;#x52A8;&amp;#x753B;&amp;#x7EC4;&amp;#x5408;&quot;&gt;&lt;/a&gt;&amp;#x4F7F;&amp;#x7528;&amp;#x52A8;&amp;#x753B;&amp;#x7EC4;&amp;#x5408;&lt;/h2&gt;&lt;p&gt;&amp;#x52A8;&amp;#x753B;&amp;#x7EC4;&amp;#x5408;&amp;#x53EF;&amp;#x4EE5;&amp;#x8BA9;&amp;#x52A8;&amp;#x753B;&amp;#x66F4;&amp;#x52A0;&amp;#x4E30;&amp;#x5BCC;&amp;#x3001;&amp;#x751F;&amp;#x52A8;&amp;#x3002;&amp;#x52A8;&amp;#x753B;&amp;#x7EC4;&amp;#x5408;&amp;#x53EF;&amp;#x4EE5;&amp;#x5C06;&amp;#x591A;&amp;#x4E2A;&amp;#x52A8;&amp;#x753B;&amp;#x7EC4;&amp;#x5408;&amp;#x5728;&amp;#x4E00;&amp;#x8D77;&amp;#xFF0C;&amp;#x5F62;&amp;#x6210;&amp;#x4E00;&amp;#x4E2A;&amp;#x590D;&amp;#x6742;&amp;#x7684;&amp;#x52A8;&amp;#x753B;&amp;#x6548;&amp;#x679C;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AnimatorSet&lt;/strong&gt;&amp;#x7C7B;&amp;#x53EF;&amp;#x4EE5;&amp;#x7528;&amp;#x4E8E;&amp;#x521B;&amp;#x5EFA;&amp;#x52A8;&amp;#x753B;&amp;#x7EC4;&amp;#x5408;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;AnimatorSet&lt;/strong&gt;&amp;#x7684;&amp;#x6784;&amp;#x9020;&amp;#x65B9;&amp;#x6CD5;&amp;#x5982;&amp;#x4E0B;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;AnimatorSet&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt;&lt;/span&gt;: AnimatorSet {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; AnimatorSet()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&lt;strong&gt;AnimatorSet&lt;/strong&gt;&amp;#x5BF9;&amp;#x8C61;&amp;#x53EF;&amp;#x4EE5;&amp;#x901A;&amp;#x8FC7;&lt;code&gt;play()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x6765;&amp;#x6DFB;&amp;#x52A0;&amp;#x52A8;&amp;#x753B;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;play()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&amp;#x793A;&amp;#x4F8B;&amp;#x5982;&amp;#x4E0B;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; objectAnimator1 = ObjectAnimator.ofFloat(button, &lt;span class=&quot;string&quot;&gt;&amp;quot;alpha&amp;quot;&lt;/span&gt;, &lt;span class=&quot;number&quot;&gt;0.0f&lt;/span&gt;, &lt;span class=&quot;number&quot;&gt;1.0f&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; objectAnimator2 = ObjectAnimator.ofFloat(button, &lt;span class=&quot;string&quot;&gt;&amp;quot;translationX&amp;quot;&lt;/span&gt;, &lt;span class=&quot;number&quot;&gt;0f&lt;/span&gt;, &lt;span class=&quot;number&quot;&gt;100f&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; animatorSet = AnimatorSet()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;animatorSet.playTogether(objectAnimator1, objectAnimator2)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;animatorSet.duration = &lt;span class=&quot;number&quot;&gt;2000&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;animatorSet.start()&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x8BE5;&amp;#x4EE3;&amp;#x7801;&amp;#x521B;&amp;#x5EFA;&amp;#x4E86;&amp;#x4E00;&amp;#x4E2A;&amp;#x52A8;&amp;#x753B;&amp;#x7EC4;&amp;#x5408;&amp;#xFF0C;&amp;#x5B83;&amp;#x5C06;&amp;#x6309;&amp;#x94AE;&amp;#x7684;&lt;code&gt;alpha&lt;/code&gt;&amp;#x5C5E;&amp;#x6027;&amp;#x4ECE;0.0f&amp;#x53D8;&amp;#x4E3A;1.0f&amp;#xFF0C;&amp;#x5E76;&amp;#x5C06;&amp;#x6309;&amp;#x94AE;&amp;#x7684;&lt;code&gt;translationX&lt;/code&gt;&amp;#x5C5E;&amp;#x6027;&amp;#x4ECE;0f&amp;#x53D8;&amp;#x4E3A;100f&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x4F7F;&amp;#x7528;&amp;#x52A8;&amp;#x753B;&amp;#x76D1;&amp;#x542C;&amp;#x5668;&quot;&gt;&lt;a href=&quot;#&amp;#x4F7F;&amp;#x7528;&amp;#x52A8;&amp;#x753B;&amp;#x76D1;&amp;#x542C;&amp;#x5668;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4F7F;&amp;#x7528;&amp;#x52A8;&amp;#x753B;&amp;#x76D1;&amp;#x542C;&amp;#x5668;&quot;&gt;&lt;/a&gt;&amp;#x4F7F;&amp;#x7528;&amp;#x52A8;&amp;#x753B;&amp;#x76D1;&amp;#x542C;&amp;#x5668;&lt;/h2&gt;&lt;p&gt;&amp;#x52A8;&amp;#x753B;&amp;#x76D1;&amp;#x542C;&amp;#x5668;&amp;#x53EF;&amp;#x4EE5;&amp;#x8BA9;&amp;#x5F00;&amp;#x53D1;&amp;#x8005;&amp;#x5728;&amp;#x52A8;&amp;#x753B;&amp;#x7684;&amp;#x4E0D;&amp;#x540C;&amp;#x9636;&amp;#x6BB5;&amp;#x8FDB;&amp;#x884C;&amp;#x76D1;&amp;#x542C;&amp;#x548C;&amp;#x64CD;&amp;#x4F5C;&amp;#x3002;&amp;#x52A8;&amp;#x753B;&amp;#x76D1;&amp;#x542C;&amp;#x5668;&amp;#x53EF;&amp;#x4EE5;&amp;#x76D1;&amp;#x542C;&amp;#x52A8;&amp;#x753B;&amp;#x7684;&amp;#x5F00;&amp;#x59CB;&amp;#x3001;&amp;#x7ED3;&amp;#x675F;&amp;#x3001;&amp;#x91CD;&amp;#x590D;&amp;#x3001;&amp;#x53D6;&amp;#x6D88;&amp;#x7B49;&amp;#x4E8B;&amp;#x4EF6;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;ObjectAnimator&lt;/strong&gt;&amp;#x5BF9;&amp;#x8C61;&amp;#x7684;&lt;code&gt;addListener()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x53EF;&amp;#x4EE5;&amp;#x6DFB;&amp;#x52A0;&amp;#x52A8;&amp;#x753B;&amp;#x76D1;&amp;#x542C;&amp;#x5668;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;addListener()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&amp;#x793A;&amp;#x4F8B;&amp;#x5982;&amp;#x4E0B;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; objectAnimator = ObjectAnimator.ofFloat(button, &lt;span class=&quot;string&quot;&gt;&amp;quot;alpha&amp;quot;&lt;/span&gt;, &lt;span class=&quot;number&quot;&gt;0.0f&lt;/span&gt;, &lt;span class=&quot;number&quot;&gt;1.0f&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;objectAnimator.addListener(&lt;span class=&quot;keyword&quot;&gt;object&lt;/span&gt; : Animator.AnimatorListener {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;onAnimationStart&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(animation: &lt;span class=&quot;type&quot;&gt;Animator&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x52A8;&amp;#x753B;&amp;#x5F00;&amp;#x59CB;&amp;#x65F6;&amp;#x6267;&amp;#x884C;&amp;#x7684;&amp;#x64CD;&amp;#x4F5C;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;onAnimationEnd&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(animation: &lt;span class=&quot;type&quot;&gt;Animator&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x52A8;&amp;#x753B;&amp;#x7ED3;&amp;#x675F;&amp;#x65F6;&amp;#x6267;&amp;#x884C;&amp;#x7684;&amp;#x64CD;&amp;#x4F5C;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;onAnimationCancel&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(animation: &lt;span class=&quot;type&quot;&gt;Animator&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x52A8;&amp;#x753B;&amp;#x53D6;&amp;#x6D88;&amp;#x65F6;&amp;#x6267;&amp;#x884C;&amp;#x7684;&amp;#x64CD;&amp;#x4F5C;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;onAnimationRepeat&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(animation: &lt;span class=&quot;type&quot;&gt;Animator&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x52A8;&amp;#x753B;&amp;#x91CD;&amp;#x590D;&amp;#x65F6;&amp;#x6267;&amp;#x884C;&amp;#x7684;&amp;#x64CD;&amp;#x4F5C;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;})&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;objectAnimator.start()&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h2 id=&quot;&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&amp;#x4E0E;&amp;#x6700;&amp;#x4F73;&amp;#x5B9E;&amp;#x8DF5;&quot;&gt;&lt;a href=&quot;#&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&amp;#x4E0E;&amp;#x6700;&amp;#x4F73;&amp;#x5B9E;&amp;#x8DF5;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&amp;#x4E0E;&amp;#x6700;&amp;#x4F73;&amp;#x5B9E;&amp;#x8DF5;&quot;&gt;&lt;/a&gt;&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&amp;#x4E0E;&amp;#x6700;&amp;#x4F73;&amp;#x5B9E;&amp;#x8DF5;&lt;/h2&gt;&lt;h3 id=&quot;&amp;#x5185;&amp;#x5B58;&amp;#x7BA1;&amp;#x7406;&amp;#x4E0E;&amp;#x52A8;&amp;#x753B;&quot;&gt;&lt;a href=&quot;#&amp;#x5185;&amp;#x5B58;&amp;#x7BA1;&amp;#x7406;&amp;#x4E0E;&amp;#x52A8;&amp;#x753B;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5185;&amp;#x5B58;&amp;#x7BA1;&amp;#x7406;&amp;#x4E0E;&amp;#x52A8;&amp;#x753B;&quot;&gt;&lt;/a&gt;&amp;#x5185;&amp;#x5B58;&amp;#x7BA1;&amp;#x7406;&amp;#x4E0E;&amp;#x52A8;&amp;#x753B;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;ViewPropertyAnimator&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;ViewPropertyAnimator&lt;/code&gt; &amp;#x662F;&amp;#x4E00;&amp;#x79CD;&amp;#x8F7B;&amp;#x91CF;&amp;#x7EA7;&amp;#x7684;&amp;#x52A8;&amp;#x753B;&amp;#x7CFB;&amp;#x7EDF;&amp;#xFF0C;&amp;#x5B83;&amp;#x5728;&amp;#x5927;&amp;#x591A;&amp;#x6570;&amp;#x60C5;&amp;#x51B5;&amp;#x4E0B;&amp;#x90FD;&amp;#x6BD4;&amp;#x4F20;&amp;#x7EDF;&amp;#x7684;&amp;#x5C5E;&amp;#x6027;&amp;#x52A8;&amp;#x753B;&amp;#x66F4;&amp;#x9AD8;&amp;#x6548;&amp;#x3002;&amp;#x4F7F;&amp;#x7528; &lt;code&gt;ViewPropertyAnimator&lt;/code&gt; &amp;#x53EF;&amp;#x4EE5;&amp;#x907F;&amp;#x514D;&amp;#x521B;&amp;#x5EFA;&amp;#x5927;&amp;#x91CF;&amp;#x7684;&amp;#x4E34;&amp;#x65F6;&amp;#x5BF9;&amp;#x8C61;&amp;#xFF0C;&amp;#x4ECE;&amp;#x800C;&amp;#x51CF;&amp;#x5C0F;&amp;#x5185;&amp;#x5B58;&amp;#x5360;&amp;#x7528;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x4F7F;&amp;#x7528;ViewPropertyAnimator&amp;#x7684;&amp;#x4F8B;&amp;#x5B50;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;view.animate()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    .translationX(&lt;span class=&quot;number&quot;&gt;200f&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    .setDuration(&lt;span class=&quot;number&quot;&gt;1000&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    .start()&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&amp;#x907F;&amp;#x514D;&amp;#x4F7F;&amp;#x7528;&amp;#x5927;&amp;#x578B;&amp;#x4F4D;&amp;#x56FE;&lt;/p&gt;
&lt;p&gt;&amp;#x5728;&amp;#x52A8;&amp;#x753B;&amp;#x4E2D;&amp;#x4F7F;&amp;#x7528;&amp;#x5927;&amp;#x578B;&amp;#x4F4D;&amp;#x56FE;&amp;#x53EF;&amp;#x80FD;&amp;#x4F1A;&amp;#x5BFC;&amp;#x81F4;&amp;#x5185;&amp;#x5B58;&amp;#x5360;&amp;#x7528;&amp;#x8FC7;&amp;#x9AD8;&amp;#xFF0C;&amp;#x5F15;&amp;#x8D77;&amp;#x6027;&amp;#x80FD;&amp;#x95EE;&amp;#x9898;&amp;#x3002;&amp;#x53EF;&amp;#x4EE5;&amp;#x8003;&amp;#x8651;&amp;#x4F7F;&amp;#x7528;&amp;#x77E2;&amp;#x91CF;&amp;#x56FE;&amp;#x6216;&amp;#x9002;&amp;#x5F53;&amp;#x538B;&amp;#x7F29;&amp;#x548C;&amp;#x7F29;&amp;#x653E;&amp;#x4F4D;&amp;#x56FE;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;GPU&amp;#x8FC7;&amp;#x5EA6;&amp;#x7ED8;&amp;#x5236;&amp;#x7684;&amp;#x5904;&amp;#x7406;&quot;&gt;&lt;a href=&quot;#GPU&amp;#x8FC7;&amp;#x5EA6;&amp;#x7ED8;&amp;#x5236;&amp;#x7684;&amp;#x5904;&amp;#x7406;&quot; class=&quot;headerlink&quot; title=&quot;GPU&amp;#x8FC7;&amp;#x5EA6;&amp;#x7ED8;&amp;#x5236;&amp;#x7684;&amp;#x5904;&amp;#x7406;&quot;&gt;&lt;/a&gt;GPU&amp;#x8FC7;&amp;#x5EA6;&amp;#x7ED8;&amp;#x5236;&amp;#x7684;&amp;#x5904;&amp;#x7406;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;HardwareLayer&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&amp;#x5C06;&amp;#x52A8;&amp;#x753B;&amp;#x76EE;&amp;#x6807;&amp;#x7684;&amp;#x89C6;&amp;#x56FE;&amp;#x6807;&amp;#x8BB0;&amp;#x4E3A;&amp;#x786C;&amp;#x4EF6;&amp;#x5C42;&amp;#x53EF;&amp;#x4EE5;&amp;#x51CF;&amp;#x5C11;&amp;#x8FC7;&amp;#x5EA6;&amp;#x7ED8;&amp;#x5236;&amp;#xFF0C;&amp;#x63D0;&amp;#x9AD8;&amp;#x6027;&amp;#x80FD;&amp;#x3002;&amp;#x5728;&amp;#x52A8;&amp;#x753B;&amp;#x5F00;&amp;#x59CB;&amp;#x524D;&amp;#x5C06;&amp;#x89C6;&amp;#x56FE;&amp;#x8BBE;&amp;#x7F6E;&amp;#x4E3A;&amp;#x786C;&amp;#x4EF6;&amp;#x5C42;&amp;#xFF0C;&amp;#x52A8;&amp;#x753B;&amp;#x7ED3;&amp;#x675F;&amp;#x540E;&amp;#x6E05;&amp;#x9664;&amp;#x786C;&amp;#x4EF6;&amp;#x5C42;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x5C06;View&amp;#x6807;&amp;#x8BB0;&amp;#x4E3A;&amp;#x786C;&amp;#x4EF6;&amp;#x5C42;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;view.setLayerType(View.LAYER_TYPE_HARDWARE, &lt;span class=&quot;literal&quot;&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x5728;&amp;#x52A8;&amp;#x753B;&amp;#x7ED3;&amp;#x675F;&amp;#x540E;&amp;#x6E05;&amp;#x9664;&amp;#x786C;&amp;#x4EF6;&amp;#x5C42;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;translateAnimator.addListener(&lt;span class=&quot;keyword&quot;&gt;object&lt;/span&gt; : AnimatorListenerAdapter() {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;onAnimationEnd&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(animation: &lt;span class=&quot;type&quot;&gt;Animator&lt;/span&gt;?)&lt;/span&gt;&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        view.setLayerType(View.LAYER_TYPE_NONE, &lt;span class=&quot;literal&quot;&gt;null&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;})&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;View.setWillNotDraw(true)&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;&amp;#x5982;&amp;#x679C;&amp;#x89C6;&amp;#x56FE;&amp;#x4E0D;&amp;#x9700;&amp;#x8981;&amp;#x624B;&amp;#x52A8;&amp;#x7ED8;&amp;#x5236;&amp;#x5185;&amp;#x5BB9;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x901A;&amp;#x8FC7; &lt;code&gt;setWillNotDraw(true)&lt;/code&gt; &amp;#x6765;&amp;#x907F;&amp;#x514D;&amp;#x89E6;&amp;#x53D1;&amp;#x4E0D;&amp;#x5FC5;&amp;#x8981;&amp;#x7684;&amp;#x7ED8;&amp;#x5236;&amp;#x64CD;&amp;#x4F5C;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x5728;View&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x65F6;&amp;#x8BBE;&amp;#x7F6E;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;view.setWillNotDraw(&lt;span class=&quot;literal&quot;&gt;true&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3 id=&quot;&amp;#x786C;&amp;#x4EF6;&amp;#x52A0;&amp;#x901F;&amp;#x4E0E;&amp;#x52A8;&amp;#x753B;&amp;#x6027;&amp;#x80FD;&quot;&gt;&lt;a href=&quot;#&amp;#x786C;&amp;#x4EF6;&amp;#x52A0;&amp;#x901F;&amp;#x4E0E;&amp;#x52A8;&amp;#x753B;&amp;#x6027;&amp;#x80FD;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x786C;&amp;#x4EF6;&amp;#x52A0;&amp;#x901F;&amp;#x4E0E;&amp;#x52A8;&amp;#x753B;&amp;#x6027;&amp;#x80FD;&quot;&gt;&lt;/a&gt;&amp;#x786C;&amp;#x4EF6;&amp;#x52A0;&amp;#x901F;&amp;#x4E0E;&amp;#x52A8;&amp;#x753B;&amp;#x6027;&amp;#x80FD;&lt;/h3&gt;&lt;p&gt;&amp;#x542F;&amp;#x7528;&amp;#x786C;&amp;#x4EF6;&amp;#x52A0;&amp;#x901F;&amp;#x53EF;&amp;#x4EE5;&amp;#x63D0;&amp;#x9AD8;&amp;#x52A8;&amp;#x753B;&amp;#x6027;&amp;#x80FD;&amp;#xFF0C;&amp;#x4F46;&amp;#x5728;&amp;#x67D0;&amp;#x4E9B;&amp;#x60C5;&amp;#x51B5;&amp;#x4E0B;&amp;#x53EF;&amp;#x80FD;&amp;#x5BFC;&amp;#x81F4;&amp;#x95EE;&amp;#x9898;&amp;#x3002;&amp;#x786E;&amp;#x4FDD;&amp;#x6D4B;&amp;#x8BD5;&amp;#x786C;&amp;#x4EF6;&amp;#x52A0;&amp;#x901F;&amp;#x5BF9;&amp;#x5E94;&amp;#x7528;&amp;#x6027;&amp;#x80FD;&amp;#x7684;&amp;#x5F71;&amp;#x54CD;&amp;#xFF0C;&amp;#x5E76;&amp;#x6839;&amp;#x636E;&amp;#x9700;&amp;#x8981;&amp;#x8FDB;&amp;#x884C;&amp;#x8C03;&amp;#x6574;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x5728;AndroidManifest.xml&amp;#x4E2D;&amp;#x542F;&amp;#x7528;&amp;#x786C;&amp;#x4EF6;&amp;#x52A0;&amp;#x901F;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&amp;lt;application android:hardwareAccelerated=&lt;span class=&quot;string&quot;&gt;&amp;quot;true&amp;quot;&lt;/span&gt;&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;   &amp;lt;!-- ... --&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&amp;lt;/application&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h3 id=&quot;&amp;#x6027;&amp;#x80FD;&amp;#x5EFA;&amp;#x8BAE;&quot;&gt;&lt;a href=&quot;#&amp;#x6027;&amp;#x80FD;&amp;#x5EFA;&amp;#x8BAE;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x6027;&amp;#x80FD;&amp;#x5EFA;&amp;#x8BAE;&quot;&gt;&lt;/a&gt;&amp;#x6027;&amp;#x80FD;&amp;#x5EFA;&amp;#x8BAE;&lt;/h3&gt;&lt;ol&gt;
&lt;li&gt;&amp;#x907F;&amp;#x514D;&amp;#x8FC7;&amp;#x591A;&amp;#x7684;&amp;#x56FE;&amp;#x5C42;&amp;#x53E0;&amp;#x52A0;&amp;#xFF1A;&amp;#x51CF;&amp;#x5C11;&amp;#x89C6;&amp;#x56FE;&amp;#x5C42;&amp;#x7EA7;&amp;#xFF0C;&amp;#x964D;&amp;#x4F4E;&amp;#x8FC7;&amp;#x5EA6;&amp;#x7ED8;&amp;#x5236;&amp;#x7684;&amp;#x53EF;&amp;#x80FD;&amp;#x6027;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;Handler&lt;/code&gt;&amp;#x548C;&lt;code&gt;Runnable&lt;/code&gt;&amp;#x8FDB;&amp;#x884C;&amp;#x52A8;&amp;#x753B;&amp;#x66F4;&amp;#x65B0;&lt;/li&gt;
&lt;li&gt;&amp;#x907F;&amp;#x514D;&amp;#x5728;&lt;code&gt;onDraw&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x4E2D;&amp;#x6267;&amp;#x884C;&amp;#x590D;&amp;#x6742;&amp;#x7684;&amp;#x8BA1;&amp;#x7B97;&amp;#xFF1A;&amp;#x8FD9;&amp;#x53EF;&amp;#x80FD;&amp;#x5BFC;&amp;#x81F4;&amp;#x754C;&amp;#x9762;&amp;#x5361;&amp;#x987F;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x4F7F;&amp;#x7528;&amp;#x7B80;&amp;#x5355;&amp;#x7684;&amp;#x63D2;&amp;#x503C;&amp;#x5668;&amp;#x6216;&amp;#x4F30;&amp;#x503C;&amp;#x5668;&amp;#x3002;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;&amp;#x603B;&amp;#x7ED3;&quot;&gt;&lt;a href=&quot;#&amp;#x603B;&amp;#x7ED3;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x603B;&amp;#x7ED3;&quot;&gt;&lt;/a&gt;&amp;#x603B;&amp;#x7ED3;&lt;/h2&gt;&lt;p&gt;Android&amp;#x52A8;&amp;#x753B;&amp;#x662F;&amp;#x6BCF;&amp;#x4E00;&amp;#x4E2A;&amp;#x5F00;&amp;#x53D1;&amp;#x8005;&amp;#x5FC5;&amp;#x5907;&amp;#x7684;&amp;#x6280;&amp;#x80FD;&amp;#xFF0C;&amp;#x5B83;&amp;#x5177;&amp;#x6709;&amp;#x7B80;&amp;#x5355;&amp;#x6613;&amp;#x7528;&amp;#x3001;&amp;#x7075;&amp;#x6D3B;&amp;#x6027;&amp;#x5F3A;&amp;#x7B49;&amp;#x4F18;&amp;#x70B9;&amp;#x3002;&amp;#x901A;&amp;#x8FC7;&amp;#x638C;&amp;#x63E1;&amp;#x5C5E;&amp;#x6027;&amp;#x52A8;&amp;#x753B;&amp;#x7684;&amp;#x539F;&amp;#x7406;&amp;#x548C;&amp;#x9AD8;&amp;#x7EA7;&amp;#x6280;&amp;#x5DE7;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x8BA9;&amp;#x5F00;&amp;#x53D1;&amp;#x8005;&amp;#x521B;&amp;#x5EFA;&amp;#x51FA;&amp;#x66F4;&amp;#x52A0;&amp;#x4E30;&amp;#x5BCC;&amp;#x3001;&amp;#x751F;&amp;#x52A8;&amp;#x7684;&amp;#x52A8;&amp;#x753B;&amp;#x6548;&amp;#x679C;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;a href=&quot;#&amp;#x63A8;&amp;#x8350;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;/a&gt;&amp;#x63A8;&amp;#x8350;&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-startup&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android_startup&lt;/a&gt;: &amp;#x63D0;&amp;#x4F9B;&amp;#x4E00;&amp;#x79CD;&amp;#x5728;&amp;#x5E94;&amp;#x7528;&amp;#x542F;&amp;#x52A8;&amp;#x65F6;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x52A0;&amp;#x7B80;&amp;#x5355;&amp;#x3001;&amp;#x9AD8;&amp;#x6548;&amp;#x7684;&amp;#x65B9;&amp;#x5F0F;&amp;#x6765;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x7EC4;&amp;#x4EF6;&amp;#xFF0C;&amp;#x4F18;&amp;#x5316;&amp;#x542F;&amp;#x52A8;&amp;#x901F;&amp;#x5EA6;&amp;#x3002;&amp;#x4E0D;&amp;#x4EC5;&amp;#x652F;&amp;#x6301;Jetpack App Startup&amp;#x7684;&amp;#x5168;&amp;#x90E8;&amp;#x529F;&amp;#x80FD;&amp;#xFF0C;&amp;#x8FD8;&amp;#x63D0;&amp;#x4F9B;&amp;#x989D;&amp;#x5916;&amp;#x7684;&amp;#x540C;&amp;#x6B65;&amp;#x4E0E;&amp;#x5F02;&amp;#x6B65;&amp;#x7B49;&amp;#x5F85;&amp;#x3001;&amp;#x7EBF;&amp;#x7A0B;&amp;#x63A7;&amp;#x5236;&amp;#x4E0E;&amp;#x591A;&amp;#x8FDB;&amp;#x7A0B;&amp;#x652F;&amp;#x6301;&amp;#x7B49;&amp;#x529F;&amp;#x80FD;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/AwesomeGithub&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AwesomeGithub&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Github&amp;#x7684;&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x7EAF;&amp;#x7EC3;&amp;#x4E60;&amp;#x9879;&amp;#x76EE;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x7EC4;&amp;#x4EF6;&amp;#x5316;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x8D26;&amp;#x6237;&amp;#x5BC6;&amp;#x7801;&amp;#x4E0E;&amp;#x8BA4;&amp;#x8BC1;&amp;#x767B;&amp;#x9646;&amp;#x3002;&amp;#x4F7F;&amp;#x7528;Kotlin&amp;#x8BED;&amp;#x8A00;&amp;#x8FDB;&amp;#x884C;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x9879;&amp;#x76EE;&amp;#x67B6;&amp;#x6784;&amp;#x662F;&amp;#x57FA;&amp;#x4E8E;JetPack\&amp;amp;DataBinding&amp;#x7684;MVVM&amp;#xFF1B;&amp;#x9879;&amp;#x76EE;&amp;#x4E2D;&amp;#x4F7F;&amp;#x7528;&amp;#x4E86;Arouter&amp;#x3001;Retrofit&amp;#x3001;Coroutine&amp;#x3001;Glide&amp;#x3001;Dagger&amp;#x4E0E;Hilt&amp;#x7B49;&amp;#x6D41;&amp;#x884C;&amp;#x5F00;&amp;#x6E90;&amp;#x6280;&amp;#x672F;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/flutter_github&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;flutter_github&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Flutter&amp;#x7684;&amp;#x8DE8;&amp;#x5E73;&amp;#x53F0;&amp;#x7248;&amp;#x672C;Github&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x4E0E;AwesomeGithub&amp;#x76F8;&amp;#x5BF9;&amp;#x5E94;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-api-analysis&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android-api-analysis&lt;/a&gt;: &amp;#x7ED3;&amp;#x5408;&amp;#x8BE6;&amp;#x7EC6;&amp;#x7684;Demo&amp;#x6765;&amp;#x5168;&amp;#x9762;&amp;#x89E3;&amp;#x6790;Android&amp;#x76F8;&amp;#x5173;&amp;#x7684;&amp;#x77E5;&amp;#x8BC6;&amp;#x70B9;, &amp;#x5E2E;&amp;#x52A9;&amp;#x8BFB;&amp;#x8005;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x5FEB;&amp;#x7684;&amp;#x638C;&amp;#x63E1;&amp;#x4E0E;&amp;#x7406;&amp;#x89E3;&amp;#x6240;&amp;#x9610;&amp;#x8FF0;&amp;#x7684;&amp;#x8981;&amp;#x70B9;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/daily_algorithm&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;daily_algorithm&lt;/a&gt;: &amp;#x6BCF;&amp;#x65E5;&amp;#x4E00;&amp;#x7B97;&amp;#x6CD5;&amp;#xFF0C;&amp;#x7531;&amp;#x6D45;&amp;#x5165;&amp;#x6DF1;&amp;#xFF0C;&amp;#x6B22;&amp;#x8FCE;&amp;#x52A0;&amp;#x5165;&amp;#x4E00;&amp;#x8D77;&amp;#x5171;&amp;#x52C9;&amp;#x3002;&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;h2 id=&quot;&amp;#x4ECB;&amp;#x7ECD;&quot;&gt;&lt;a href=&quot;#&amp;#x4ECB;&amp;#x7ECD;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4ECB;&amp;#x7ECD;&quot;&gt;&lt;/a&gt;&amp;#x4ECB;&amp;#x7ECD;&lt;/h2&gt;&lt;p&gt;&amp;#x52A8;&amp;#x753
    
    </summary>
    
      <category term="android" scheme="https://www.rousetime.com/categories/android/"/>
    
    
      <category term="android" scheme="https://www.rousetime.com/tags/android/"/>
    
  </entry>
  
  <entry>
    <title>错过Android主线程空闲期，你可能损失的不仅仅是性能</title>
    <link href="https://www.rousetime.com/2023/12/15/%E9%94%99%E8%BF%87Android%E4%B8%BB%E7%BA%BF%E7%A8%8B%E7%A9%BA%E9%97%B2%E6%9C%9F%EF%BC%8C%E4%BD%A0%E5%8F%AF%E8%83%BD%E6%8D%9F%E5%A4%B1%E7%9A%84%E4%B8%8D%E4%BB%85%E4%BB%85%E6%98%AF%E6%80%A7%E8%83%BD/"/>
    <id>https://www.rousetime.com/2023/12/15/错过Android主线程空闲期，你可能损失的不仅仅是性能/</id>
    <published>2023-12-15T01:29:31.000Z</published>
    <updated>2023-12-15T01:29:57.887Z</updated>
    
    <content type="html">&lt;p&gt;&amp;#x5728;Android&amp;#x5E94;&amp;#x7528;&amp;#x7A0B;&amp;#x5E8F;&amp;#x7684;&amp;#x5F00;&amp;#x53D1;&amp;#x8FC7;&amp;#x7A0B;&amp;#x4E2D;&amp;#xFF0C;&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&amp;#x4E00;&amp;#x76F4;&amp;#x662F;&amp;#x5F00;&amp;#x53D1;&amp;#x8005;&amp;#x5173;&amp;#x6CE8;&amp;#x7684;&amp;#x7126;&amp;#x70B9;&amp;#x4E4B;&amp;#x4E00;&amp;#x3002;&amp;#x5728;&amp;#x8FD9;&amp;#x4E2A;&amp;#x80CC;&amp;#x666F;&amp;#x4E0B;&amp;#xFF0C;Android&amp;#x7CFB;&amp;#x7EDF;&amp;#x63D0;&amp;#x4F9B;&amp;#x4E86;&amp;#x4E00;&amp;#x9879;&amp;#x5F3A;&amp;#x5927;&amp;#x7684;&amp;#x5DE5;&amp;#x5177;&amp;#x2014;&amp;#x2014;IdleHandler&amp;#xFF0C;&amp;#x5B83;&amp;#x80FD;&amp;#x591F;&amp;#x5E2E;&amp;#x52A9;&amp;#x5F00;&amp;#x53D1;&amp;#x8005;&amp;#x5728;&amp;#x5E94;&amp;#x7528;&amp;#x7A0B;&amp;#x5E8F;&amp;#x7684;&amp;#x7A7A;&amp;#x95F2;&amp;#x65F6;&amp;#x6BB5;&amp;#x6267;&amp;#x884C;&amp;#x4EFB;&amp;#x52A1;&amp;#xFF0C;&amp;#x4ECE;&amp;#x800C;&amp;#x63D0;&amp;#x9AD8;&amp;#x5E94;&amp;#x7528;&amp;#x7684;&amp;#x6574;&amp;#x4F53;&amp;#x6027;&amp;#x80FD;&amp;#x3002;IdleHandler&amp;#x7684;&amp;#x673A;&amp;#x5236;&amp;#x57FA;&amp;#x4E8E;Android&amp;#x4E3B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7684;&amp;#x7A7A;&amp;#x95F2;&amp;#x72B6;&amp;#x6001;&amp;#xFF0C;&amp;#x4F7F;&amp;#x5F97;&amp;#x5F00;&amp;#x53D1;&amp;#x8005;&amp;#x80FD;&amp;#x591F;&amp;#x5DE7;&amp;#x5999;&amp;#x5730;&amp;#x5229;&amp;#x7528;&amp;#x8FD9;&amp;#x4E9B;&amp;#x7A7A;&amp;#x95F2;&amp;#x65F6;&amp;#x95F4;&amp;#x6267;&amp;#x884C;&amp;#x4E00;&amp;#x4E9B;&amp;#x8017;&amp;#x65F6;&amp;#x7684;&amp;#x64CD;&amp;#x4F5C;&amp;#xFF0C;&amp;#x800C;&amp;#x4E0D;&amp;#x5F71;&amp;#x54CD;&amp;#x7528;&amp;#x6237;&amp;#x754C;&amp;#x9762;&amp;#x7684;&amp;#x6D41;&amp;#x7545;&amp;#x6027;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x5728;&amp;#x6DF1;&amp;#x5165;&amp;#x7814;&amp;#x7A76;IdleHandler&amp;#x4E4B;&amp;#x524D;&amp;#xFF0C;&amp;#x8BA9;&amp;#x6211;&amp;#x4EEC;&amp;#x5148;&amp;#x4E86;&amp;#x89E3;&amp;#x4E00;&amp;#x4E0B;&amp;#x5B83;&amp;#x7684;&amp;#x57FA;&amp;#x672C;&amp;#x539F;&amp;#x7406;&amp;#xFF0C;&amp;#x4EE5;&amp;#x53CA;&amp;#x4E3A;&amp;#x4F55;&amp;#x5B83;&amp;#x6210;&amp;#x4E3A;Android&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&amp;#x7684;&amp;#x91CD;&amp;#x8981;&amp;#x7EC4;&amp;#x6210;&amp;#x90E8;&amp;#x5206;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;IdleHandler&amp;#x7684;&amp;#x57FA;&amp;#x672C;&amp;#x539F;&amp;#x7406;&quot;&gt;&lt;a href=&quot;#IdleHandler&amp;#x7684;&amp;#x57FA;&amp;#x672C;&amp;#x539F;&amp;#x7406;&quot; class=&quot;headerlink&quot; title=&quot;IdleHandler&amp;#x7684;&amp;#x57FA;&amp;#x672C;&amp;#x539F;&amp;#x7406;&quot;&gt;&lt;/a&gt;IdleHandler&amp;#x7684;&amp;#x57FA;&amp;#x672C;&amp;#x539F;&amp;#x7406;&lt;/h2&gt;&lt;p&gt;Android&amp;#x5E94;&amp;#x7528;&amp;#x7684;&amp;#x4E3B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x901A;&amp;#x8FC7;&amp;#x4E00;&amp;#x4E2A;&amp;#x6D88;&amp;#x606F;&amp;#x5FAA;&amp;#x73AF;&amp;#xFF08;Message Loop&amp;#xFF09;&amp;#x6765;&amp;#x5904;&amp;#x7406;&amp;#x5404;&amp;#x79CD;&amp;#x4E8B;&amp;#x4EF6;&amp;#x548C;&amp;#x4EFB;&amp;#x52A1;&amp;#x3002;&amp;#x5F53;&amp;#x4E3B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6CA1;&amp;#x6709;&amp;#x65B0;&amp;#x7684;&amp;#x6D88;&amp;#x606F;&amp;#x9700;&amp;#x8981;&amp;#x5904;&amp;#x7406;&amp;#x65F6;&amp;#xFF0C;&amp;#x5B83;&amp;#x5C31;&amp;#x5904;&amp;#x4E8E;&amp;#x7A7A;&amp;#x95F2;&amp;#x72B6;&amp;#x6001;&amp;#x3002;&amp;#x8FD9;&amp;#x5C31;&amp;#x662F;IdleHandler&amp;#x53D1;&amp;#x6325;&amp;#x4F5C;&amp;#x7528;&amp;#x7684;&amp;#x65F6;&amp;#x673A;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x901A;&amp;#x8FC7;&amp;#x6CE8;&amp;#x518C;IdleHandler&amp;#x6765;&amp;#x544A;&amp;#x8BC9;&amp;#x7CFB;&amp;#x7EDF;&amp;#x5728;&amp;#x4E3B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7A7A;&amp;#x95F2;&amp;#x65F6;&amp;#x6267;&amp;#x884C;&amp;#x7279;&amp;#x5B9A;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#x3002;&amp;#x5F53;&amp;#x4E3B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x8FDB;&amp;#x5165;&amp;#x7A7A;&amp;#x95F2;&amp;#x72B6;&amp;#x6001;&amp;#x65F6;&amp;#xFF0C;&amp;#x7CFB;&amp;#x7EDF;&amp;#x4F1A;&amp;#x4F9D;&amp;#x6B21;&amp;#x8C03;&amp;#x7528;&amp;#x6CE8;&amp;#x518C;&amp;#x7684;IdleHandler&amp;#xFF0C;&amp;#x6267;&amp;#x884C;&amp;#x76F8;&amp;#x5E94;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;IdleHandler&amp;#x4E0E;Handler&amp;#x548C;MessageQueue&amp;#x5BC6;&amp;#x5207;&amp;#x76F8;&amp;#x5173;&amp;#x3002;&amp;#x5B83;&amp;#x901A;&amp;#x8FC7;MessageQueue&amp;#x7684;&amp;#x7A7A;&amp;#x95F2;&amp;#x65F6;&amp;#x95F4;&amp;#x6765;&amp;#x6267;&amp;#x884C;&amp;#x4EFB;&amp;#x52A1;&amp;#x3002;&amp;#x6BCF;&amp;#x5F53;&amp;#x4E3B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x5904;&amp;#x7406;&amp;#x5B8C;&amp;#x4E00;&amp;#x4E2A;&amp;#x6D88;&amp;#x606F;&amp;#x540E;&amp;#xFF0C;&amp;#x7CFB;&amp;#x7EDF;&amp;#x4F1A;&amp;#x68C0;&amp;#x67E5;&amp;#x662F;&amp;#x5426;&amp;#x6709;&amp;#x6CE8;&amp;#x518C;&amp;#x7684;IdleHandler&amp;#x9700;&amp;#x8981;&amp;#x6267;&amp;#x884C;&amp;#x3002;&lt;/p&gt;
&lt;h3 id=&quot;&amp;#x7A7A;&amp;#x95F2;&amp;#x72B6;&amp;#x6001;&amp;#x7684;&amp;#x5B9A;&amp;#x4E49;&quot;&gt;&lt;a href=&quot;#&amp;#x7A7A;&amp;#x95F2;&amp;#x72B6;&amp;#x6001;&amp;#x7684;&amp;#x5B9A;&amp;#x4E49;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x7A7A;&amp;#x95F2;&amp;#x72B6;&amp;#x6001;&amp;#x7684;&amp;#x5B9A;&amp;#x4E49;&quot;&gt;&lt;/a&gt;&amp;#x7A7A;&amp;#x95F2;&amp;#x72B6;&amp;#x6001;&amp;#x7684;&amp;#x5B9A;&amp;#x4E49;&lt;/h3&gt;&lt;p&gt;&amp;#x4E86;&amp;#x89E3;&amp;#x4EC0;&amp;#x4E48;&amp;#x65F6;&amp;#x5019;&amp;#x4E3B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x88AB;&amp;#x8BA4;&amp;#x4E3A;&amp;#x662F;&amp;#x7A7A;&amp;#x95F2;&amp;#x7684;&amp;#x81F3;&amp;#x5173;&amp;#x91CD;&amp;#x8981;&amp;#x3002;&amp;#x4E00;&amp;#x822C;&amp;#x60C5;&amp;#x51B5;&amp;#x4E0B;&amp;#xFF0C;Android&amp;#x7CFB;&amp;#x7EDF;&amp;#x8BA4;&amp;#x4E3A;&amp;#x4E3B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x5728;&amp;#x5904;&amp;#x7406;&amp;#x5B8C;&amp;#x6240;&amp;#x6709;&amp;#x6D88;&amp;#x606F;&amp;#x540E;&amp;#x5373;&amp;#x5904;&amp;#x4E8E;&amp;#x7A7A;&amp;#x95F2;&amp;#x72B6;&amp;#x6001;&amp;#x3002;IdleHandler&amp;#x901A;&amp;#x8FC7;&amp;#x8FD9;&amp;#x4E2A;&amp;#x5B9A;&amp;#x4E49;&amp;#xFF0C;&amp;#x80FD;&amp;#x591F;&amp;#x5728;&amp;#x4FDD;&amp;#x8BC1;&amp;#x4E0D;&amp;#x5F71;&amp;#x54CD;&amp;#x7528;&amp;#x6237;&amp;#x4F53;&amp;#x9A8C;&amp;#x7684;&amp;#x524D;&amp;#x63D0;&amp;#x4E0B;&amp;#x6267;&amp;#x884C;&amp;#x4E00;&amp;#x4E9B;&amp;#x8017;&amp;#x65F6;&amp;#x7684;&amp;#x64CD;&amp;#x4F5C;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;22&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;23&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;24&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;25&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;26&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;27&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;28&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;29&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;30&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;31&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;32&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;33&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;34&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;35&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;36&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;	// &amp;#x6CA1;&amp;#x6709;&amp;#x6D88;&amp;#x606F;&amp;#xFF0C;&amp;#x5224;&amp;#x65AD;&amp;#x662F;&amp;#x5426;&amp;#x6709;IdleHandler&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    if (pendingIdleHandlerCount &amp;lt; 0&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            &amp;amp;&amp;amp; (mMessages == null || now &amp;lt; mMessages.when)) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        pendingIdleHandlerCount = mIdleHandlers.size();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    if (pendingIdleHandlerCount &amp;lt;= 0) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        // No idle handlers to run.  Loop and wait some more.&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        mBlocked = true;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        continue;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    if (mPendingIdleHandlers == null) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        mPendingIdleHandlers = new IdleHandler[Math.max(pendingIdleHandlerCount, 4)];&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    mPendingIdleHandlers = mIdleHandlers.toArray(mPendingIdleHandlers);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    ....&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;// &amp;#x6267;&amp;#x884C;IdleHandler&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;for (int i = 0; i &amp;lt; pendingIdleHandlerCount; i++) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    final IdleHandler idler = mPendingIdleHandlers[i];&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    mPendingIdleHandlers[i] = null; // release the reference to the handler&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    boolean keep = false;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    try {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        keep = idler.queueIdle();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    } catch (Throwable t) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        Log.wtf(TAG, &amp;quot;IdleHandler threw exception&amp;quot;, t);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    if (!keep) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        synchronized (this) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            mIdleHandlers.remove(idler);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h2 id=&quot;&amp;#x5982;&amp;#x4F55;&amp;#x4F7F;&amp;#x7528;IdleHandler&quot;&gt;&lt;a href=&quot;#&amp;#x5982;&amp;#x4F55;&amp;#x4F7F;&amp;#x7528;IdleHandler&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5982;&amp;#x4F55;&amp;#x4F7F;&amp;#x7528;IdleHandler&quot;&gt;&lt;/a&gt;&amp;#x5982;&amp;#x4F55;&amp;#x4F7F;&amp;#x7528;IdleHandler&lt;/h2&gt;&lt;p&gt;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;IdleHandler&lt;/code&gt;&amp;#x53EF;&amp;#x4EE5;&amp;#x6267;&amp;#x884C;&amp;#x4E00;&amp;#x4E9B;&amp;#x8F7B;&amp;#x91CF;&amp;#x7EA7;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#xFF0C;&amp;#x4F8B;&amp;#x5982;&amp;#x52A0;&amp;#x8F7D;&amp;#x6570;&amp;#x636E;&amp;#x3001;&amp;#x66F4;&amp;#x65B0;&lt;code&gt;UI&lt;/code&gt;&amp;#x7B49;&amp;#x3002;&amp;#x4EE5;&amp;#x4E0B;&amp;#x662F;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;IdleHandler&lt;/code&gt;&amp;#x7684;&amp;#x51E0;&amp;#x4E2A;&amp;#x4F7F;&amp;#x7528;&amp;#x6280;&amp;#x5DE7;&amp;#xFF1A;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&amp;#x6CE8;&amp;#x518C;IdleHandler&amp;#xFF1A;&lt;/li&gt;
&lt;/ol&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;Looper.myQueue().addIdleHandler(MyIdleHandler())&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;class MyIdleHandler : MessageQueue.IdleHandler {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    override fun queueIdle(): Boolean {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        // &amp;#x5728;&amp;#x4E3B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7A7A;&amp;#x95F2;&amp;#x65F6;&amp;#x6267;&amp;#x884C;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#x903B;&amp;#x8F91;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        performIdleTask()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        // &amp;#x8FD4;&amp;#x56DE; true&amp;#xFF0C;&amp;#x8868;&amp;#x793A;&amp;#x4EFB;&amp;#x52A1;&amp;#x5904;&amp;#x7406;&amp;#x5B8C;&amp;#x6BD5;&amp;#xFF0C;&amp;#x4E0D;&amp;#x518D;&amp;#x6267;&amp;#x884C;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        return true&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    private fun performIdleTask() {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        // &amp;#x5177;&amp;#x4F53;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#x903B;&amp;#x8F91;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        // ...&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;&amp;#x53D6;&amp;#x6D88;&amp;#x6CE8;&amp;#x518C;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&amp;#x5F53;&amp;#x4E0D;&amp;#x9700;&amp;#x8981;&amp;#x7EE7;&amp;#x7EED;&amp;#x6267;&amp;#x884C;&amp;#x4EFB;&amp;#x52A1;&amp;#x65F6;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x901A;&amp;#x8FC7;&lt;code&gt;removeIdleHandler&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x53D6;&amp;#x6D88;&amp;#x6CE8;&amp;#x518C;&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;Looper.myQueue().removeIdleHandler(idleHandler);&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h2 id=&quot;IdleHandler&amp;#x7684;&amp;#x9002;&amp;#x7528;&amp;#x573A;&amp;#x666F;&quot;&gt;&lt;a href=&quot;#IdleHandler&amp;#x7684;&amp;#x9002;&amp;#x7528;&amp;#x573A;&amp;#x666F;&quot; class=&quot;headerlink&quot; title=&quot;IdleHandler&amp;#x7684;&amp;#x9002;&amp;#x7528;&amp;#x573A;&amp;#x666F;&quot;&gt;&lt;/a&gt;IdleHandler&amp;#x7684;&amp;#x9002;&amp;#x7528;&amp;#x573A;&amp;#x666F;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&amp;#x8F7B;&amp;#x91CF;&amp;#x7EA7;&amp;#x4EFB;&amp;#x52A1;&amp;#xFF1A;&lt;code&gt;IdleHandler&lt;/code&gt;&amp;#x4E3B;&amp;#x8981;&amp;#x7528;&amp;#x4E8E;&amp;#x6267;&amp;#x884C;&amp;#x8F7B;&amp;#x91CF;&amp;#x7EA7;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#x3002;&amp;#x7531;&amp;#x4E8E;&amp;#x5B83;&amp;#x662F;&amp;#x5728;&amp;#x4E3B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7A7A;&amp;#x95F2;&amp;#x65F6;&amp;#x6267;&amp;#x884C;&amp;#xFF0C;&amp;#x6240;&amp;#x4EE5;&amp;#x4E0D;&amp;#x9002;&amp;#x5408;&amp;#x6267;&amp;#x884C;&amp;#x8017;&amp;#x65F6;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x4E3B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7A7A;&amp;#x95F2;&amp;#x65F6;&amp;#x6267;&amp;#x884C;&amp;#xFF1A;&lt;code&gt;IdleHandler&lt;/code&gt;&amp;#x901A;&amp;#x8FC7;&amp;#x5728;&amp;#x4E3B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7A7A;&amp;#x95F2;&amp;#x65F6;&amp;#x88AB;&amp;#x8C03;&amp;#x7528;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x4E86;&amp;#x4E3B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7684;&amp;#x963B;&amp;#x585E;&amp;#x3002;&amp;#x56E0;&amp;#x6B64;&amp;#xFF0C;&amp;#x9002;&amp;#x7528;&amp;#x4E8E;&amp;#x9700;&amp;#x8981;&amp;#x5728;&amp;#x4E3B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6267;&amp;#x884C;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#xFF0C;&amp;#x5E76;&amp;#x4E14;&amp;#x8FD9;&amp;#x4E9B;&amp;#x4EFB;&amp;#x52A1;&amp;#x5BF9;&amp;#x4E8E;&amp;#x7528;&amp;#x6237;&amp;#x4F53;&amp;#x9A8C;&amp;#x7684;&amp;#x5F71;&amp;#x54CD;&amp;#x8F83;&amp;#x5C0F;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x4F18;&amp;#x5148;&amp;#x7EA7;&amp;#x8F83;&amp;#x4F4E;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#xFF1A;&amp;#x5982;&amp;#x679C;&amp;#x6709;&amp;#x591A;&amp;#x4E2A;&amp;#x4EFB;&amp;#x52A1;&amp;#x6CE8;&amp;#x518C;&amp;#x4E86;&lt;code&gt;IdleHandler&lt;/code&gt;&amp;#xFF0C;&amp;#x7CFB;&amp;#x7EDF;&amp;#x4F1A;&amp;#x6309;&amp;#x7167;&amp;#x6CE8;&amp;#x518C;&amp;#x7684;&amp;#x987A;&amp;#x5E8F;&amp;#x8C03;&amp;#x7528;&amp;#x5B83;&amp;#x4EEC;&amp;#x7684;&lt;code&gt;queueIdle&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x3002;&amp;#x56E0;&amp;#x6B64;&amp;#xFF0C;&amp;#x9002;&amp;#x7528;&amp;#x4E8E;&amp;#x9700;&amp;#x8981;&amp;#x5728;&amp;#x8F83;&amp;#x4F4E;&amp;#x4F18;&amp;#x5148;&amp;#x7EA7;&amp;#x4E0B;&amp;#x6267;&amp;#x884C;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;#x603B;&amp;#x7684;&amp;#x6765;&amp;#x8BF4;&lt;code&gt;IdleHandler&lt;/code&gt;&amp;#x9002;&amp;#x7528;&amp;#x4E8E;&amp;#x9700;&amp;#x8981;&amp;#x5728;&amp;#x4E3B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7A7A;&amp;#x95F2;&amp;#x65F6;&amp;#x6267;&amp;#x884C;&amp;#x7684;&amp;#x8F7B;&amp;#x91CF;&amp;#x7EA7;&amp;#x4EFB;&amp;#x52A1;&amp;#xFF0C;&amp;#x4EE5;&amp;#x63D0;&amp;#x5347;&amp;#x5E94;&amp;#x7528;&amp;#x7684;&amp;#x6027;&amp;#x80FD;&amp;#x548C;&amp;#x7528;&amp;#x6237;&amp;#x4F53;&amp;#x9A8C;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x9AD8;&amp;#x7EA7;&amp;#x5E94;&amp;#x7528;&quot;&gt;&lt;a href=&quot;#&amp;#x9AD8;&amp;#x7EA7;&amp;#x5E94;&amp;#x7528;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x9AD8;&amp;#x7EA7;&amp;#x5E94;&amp;#x7528;&quot;&gt;&lt;/a&gt;&amp;#x9AD8;&amp;#x7EA7;&amp;#x5E94;&amp;#x7528;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x6027;&amp;#x80FD;&amp;#x76D1;&amp;#x63A7;&amp;#x4E0E;&amp;#x4F18;&amp;#x5316;&lt;/strong&gt;&lt;br&gt;&amp;#x5229;&amp;#x7528; &lt;code&gt;IdleHandler&lt;/code&gt; &amp;#x53EF;&amp;#x4EE5;&amp;#x5B9E;&amp;#x73B0;&amp;#x6027;&amp;#x80FD;&amp;#x76D1;&amp;#x63A7;&amp;#x548C;&amp;#x4F18;&amp;#x5316;&amp;#xFF0C;&amp;#x4F8B;&amp;#x5982;&amp;#x7EDF;&amp;#x8BA1;&amp;#x6BCF;&amp;#x6B21;&amp;#x7A7A;&amp;#x95F2;&amp;#x65F6;&amp;#x7684;&amp;#x5185;&amp;#x5B58;&amp;#x5360;&amp;#x7528;&amp;#x60C5;&amp;#x51B5;&amp;#xFF0C;&amp;#x6216;&amp;#x8005;&amp;#x6267;&amp;#x884C;&amp;#x4E00;&amp;#x4E9B;&amp;#x5185;&amp;#x5B58;&amp;#x91CA;&amp;#x653E;&amp;#x64CD;&amp;#x4F5C;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x9884;&amp;#x52A0;&amp;#x8F7D;&amp;#x6570;&amp;#x636E;&lt;/strong&gt;&lt;br&gt;&amp;#x5728;&amp;#x7528;&amp;#x6237;&amp;#x64CD;&amp;#x4F5C;&amp;#x524D;&amp;#xFF0C;&amp;#x901A;&amp;#x8FC7; &lt;code&gt;IdleHandler&lt;/code&gt; &amp;#x63D0;&amp;#x524D;&amp;#x52A0;&amp;#x8F7D;&amp;#x4E00;&amp;#x4E9B;&amp;#x53EF;&amp;#x80FD;&amp;#x4F1A;&amp;#x7528;&amp;#x5230;&amp;#x7684;&amp;#x6570;&amp;#x636E;&amp;#xFF0C;&amp;#x63D0;&amp;#x9AD8;&amp;#x7528;&amp;#x6237;&amp;#x4F53;&amp;#x9A8C;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x52A8;&amp;#x6001;&amp;#x8D44;&amp;#x6E90;&amp;#x52A0;&amp;#x8F7D;&lt;/strong&gt;&lt;br&gt;&amp;#x5229;&amp;#x7528;&amp;#x7A7A;&amp;#x95F2;&amp;#x65F6;&amp;#x95F4;&amp;#x9884;&amp;#x52A0;&amp;#x8F7D;&amp;#x548C;&amp;#x89E3;&amp;#x6790;&amp;#x8D44;&amp;#x6E90;&amp;#xFF0C;&amp;#x51CF;&amp;#x8F7B;&amp;#x5728;&amp;#x7528;&amp;#x6237;&amp;#x64CD;&amp;#x4F5C;&amp;#x65F6;&amp;#x7684;&amp;#x8D44;&amp;#x6E90;&amp;#x52A0;&amp;#x8F7D;&amp;#x538B;&amp;#x529B;&amp;#x3002;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&quot;&gt;&lt;a href=&quot;#&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&quot;&gt;&lt;/a&gt;&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&amp;#x6280;&amp;#x5DE7;&lt;/h2&gt;&lt;p&gt;&amp;#x867D;&amp;#x7136;IdleHandler&amp;#x63D0;&amp;#x4F9B;&amp;#x4E86;&amp;#x4E00;&amp;#x4E2A;&amp;#x65B9;&amp;#x4FBF;&amp;#x7684;&amp;#x673A;&amp;#x5236;&amp;#x6765;&amp;#x5728;&amp;#x4E3B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7A7A;&amp;#x95F2;&amp;#x65F6;&amp;#x6267;&amp;#x884C;&amp;#x4EFB;&amp;#x52A1;&amp;#xFF0C;&amp;#x4F46;&amp;#x5728;&amp;#x4F7F;&amp;#x7528;&amp;#x8FC7;&amp;#x7A0B;&amp;#x4E2D;&amp;#x4ECD;&amp;#x9700;&amp;#x6CE8;&amp;#x610F;&amp;#x4E00;&amp;#x4E9B;&amp;#x6027;&amp;#x80FD;&amp;#x65B9;&amp;#x9762;&amp;#x7684;&amp;#x95EE;&amp;#x9898;&amp;#x3002;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x8F7B;&amp;#x91CF;&amp;#x7EA7;&amp;#x5904;&amp;#x7406;:&lt;/strong&gt; &amp;#x786E;&amp;#x4FDD;&amp;#x6CE8;&amp;#x518C;&amp;#x7684;IdleHandler&amp;#x4E2D;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#x662F;&amp;#x8F7B;&amp;#x91CF;&amp;#x7EA7;&amp;#x7684;&amp;#xFF0C;&amp;#x4E0D;&amp;#x8981;&amp;#x5728;&amp;#x7A7A;&amp;#x95F2;&amp;#x65F6;&amp;#x6267;&amp;#x884C;&amp;#x8FC7;&amp;#x4E8E;&amp;#x590D;&amp;#x6742;&amp;#x6216;&amp;#x8017;&amp;#x65F6;&amp;#x7684;&amp;#x64CD;&amp;#x4F5C;&amp;#xFF0C;&amp;#x4EE5;&amp;#x514D;&amp;#x5F71;&amp;#x54CD;&amp;#x4E3B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7684;&amp;#x54CD;&amp;#x5E94;&amp;#x6027;&amp;#x80FD;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x907F;&amp;#x514D;&amp;#x9891;&amp;#x7E41;&amp;#x6CE8;&amp;#x518C;&amp;#x548C;&amp;#x53D6;&amp;#x6D88;IdleHandler: &lt;/strong&gt;&amp;#x9891;&amp;#x7E41;&amp;#x6CE8;&amp;#x518C;&amp;#x548C;&amp;#x53D6;&amp;#x6D88;IdleHandler&amp;#x53EF;&amp;#x80FD;&amp;#x4F1A;&amp;#x5F15;&amp;#x8D77;&amp;#x6027;&amp;#x80FD;&amp;#x95EE;&amp;#x9898;&amp;#xFF0C;&amp;#x56E0;&amp;#x6B64;&amp;#x5EFA;&amp;#x8BAE;&amp;#x5728;&amp;#x5E94;&amp;#x7528;&amp;#x7684;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x5185;&amp;#x5C3D;&amp;#x91CF;&amp;#x51CF;&amp;#x5C11;&amp;#x6CE8;&amp;#x518C;&amp;#x548C;&amp;#x53D6;&amp;#x6D88;&amp;#x7684;&amp;#x64CD;&amp;#x4F5C;&amp;#x3002;&amp;#x53EF;&amp;#x4EE5;&amp;#x5728;&amp;#x5E94;&amp;#x7528;&amp;#x542F;&amp;#x52A8;&amp;#x65F6;&amp;#x6CE8;&amp;#x518C;IdleHandler&amp;#xFF0C;&amp;#x5728;&amp;#x5E94;&amp;#x7528;&amp;#x9000;&amp;#x51FA;&amp;#x65F6;&amp;#x53D6;&amp;#x6D88;&amp;#x6CE8;&amp;#x518C;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&amp;#x5408;&amp;#x7406;&amp;#x8BBE;&amp;#x7F6E;&amp;#x4EFB;&amp;#x52A1;&amp;#x6267;&amp;#x884C;&amp;#x9891;&amp;#x7387;: &lt;/strong&gt;&amp;#x6839;&amp;#x636E;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x6027;&amp;#x8D28;&amp;#x548C;&amp;#x6267;&amp;#x884C;&amp;#x9700;&amp;#x6C42;&amp;#xFF0C;&amp;#x5408;&amp;#x7406;&amp;#x8BBE;&amp;#x7F6E;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x6267;&amp;#x884C;&amp;#x9891;&amp;#x7387;&amp;#x3002;&amp;#x4E0D;&amp;#x540C;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#x53EF;&amp;#x80FD;&amp;#x9700;&amp;#x8981;&amp;#x5728;&amp;#x4E0D;&amp;#x540C;&amp;#x7684;&amp;#x65F6;&amp;#x95F4;&amp;#x95F4;&amp;#x9694;&amp;#x5185;&amp;#x6267;&amp;#x884C;&amp;#xFF0C;&amp;#x8FD9;&amp;#x6837;&amp;#x53EF;&amp;#x4EE5;&amp;#x66F4;&amp;#x597D;&amp;#x5730;&amp;#x5E73;&amp;#x8861;&amp;#x6027;&amp;#x80FD;&amp;#x548C;&amp;#x529F;&amp;#x80FD;&amp;#x9700;&amp;#x6C42;&amp;#x3002;&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;&amp;#x7ED3;&amp;#x8BED;&quot;&gt;&lt;a href=&quot;#&amp;#x7ED3;&amp;#x8BED;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x7ED3;&amp;#x8BED;&quot;&gt;&lt;/a&gt;&amp;#x7ED3;&amp;#x8BED;&lt;/h2&gt;&lt;p&gt;&amp;#x901A;&amp;#x8FC7;&amp;#x6DF1;&amp;#x5EA6;&amp;#x89E3;&amp;#x6790; &lt;code&gt;IdleHandler&lt;/code&gt; &amp;#x7684;&amp;#x539F;&amp;#x7406;&amp;#x548C;&amp;#x9AD8;&amp;#x7EA7;&amp;#x5E94;&amp;#x7528;&amp;#xFF0C;&amp;#x8BA9;&amp;#x6211;&amp;#x4EEC;&amp;#x66F4;&amp;#x597D;&amp;#x5730;&amp;#x5229;&amp;#x7528;&amp;#x8FD9;&amp;#x4E00;&amp;#x5DE5;&amp;#x5177;&amp;#x8FDB;&amp;#x884C;&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&amp;#x3002;&amp;#x5728;&amp;#x5B9E;&amp;#x9645;&amp;#x9879;&amp;#x76EE;&amp;#x4E2D;&amp;#xFF0C;&amp;#x7075;&amp;#x6D3B;&amp;#x8FD0;&amp;#x7528; &lt;code&gt;IdleHandler&lt;/code&gt; &amp;#x53EF;&amp;#x4EE5;&amp;#x6709;&amp;#x6548;&amp;#x63D0;&amp;#x5347;&amp;#x5E94;&amp;#x7528;&amp;#x7684;&amp;#x54CD;&amp;#x5E94;&amp;#x901F;&amp;#x5EA6;&amp;#x548C;&amp;#x7528;&amp;#x6237;&amp;#x4F53;&amp;#x9A8C;&amp;#x3002;&amp;#x5E0C;&amp;#x671B;&amp;#x672C;&amp;#x6587;&amp;#x80FD;&amp;#x591F;&amp;#x6FC0;&amp;#x53D1;&amp;#x5927;&amp;#x5BB6;&amp;#x5BF9;&amp;#x4E8E;Android&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&amp;#x7684;&amp;#x66F4;&amp;#x591A;&amp;#x601D;&amp;#x8003;&amp;#x548C;&amp;#x5B9E;&amp;#x8DF5;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;a href=&quot;#&amp;#x63A8;&amp;#x8350;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;/a&gt;&amp;#x63A8;&amp;#x8350;&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-startup&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android_startup&lt;/a&gt;: &amp;#x63D0;&amp;#x4F9B;&amp;#x4E00;&amp;#x79CD;&amp;#x5728;&amp;#x5E94;&amp;#x7528;&amp;#x542F;&amp;#x52A8;&amp;#x65F6;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x52A0;&amp;#x7B80;&amp;#x5355;&amp;#x3001;&amp;#x9AD8;&amp;#x6548;&amp;#x7684;&amp;#x65B9;&amp;#x5F0F;&amp;#x6765;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x7EC4;&amp;#x4EF6;&amp;#xFF0C;&amp;#x4F18;&amp;#x5316;&amp;#x542F;&amp;#x52A8;&amp;#x901F;&amp;#x5EA6;&amp;#x3002;&amp;#x4E0D;&amp;#x4EC5;&amp;#x652F;&amp;#x6301;Jetpack App Startup&amp;#x7684;&amp;#x5168;&amp;#x90E8;&amp;#x529F;&amp;#x80FD;&amp;#xFF0C;&amp;#x8FD8;&amp;#x63D0;&amp;#x4F9B;&amp;#x989D;&amp;#x5916;&amp;#x7684;&amp;#x540C;&amp;#x6B65;&amp;#x4E0E;&amp;#x5F02;&amp;#x6B65;&amp;#x7B49;&amp;#x5F85;&amp;#x3001;&amp;#x7EBF;&amp;#x7A0B;&amp;#x63A7;&amp;#x5236;&amp;#x4E0E;&amp;#x591A;&amp;#x8FDB;&amp;#x7A0B;&amp;#x652F;&amp;#x6301;&amp;#x7B49;&amp;#x529F;&amp;#x80FD;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/AwesomeGithub&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AwesomeGithub&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Github&amp;#x7684;&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x7EAF;&amp;#x7EC3;&amp;#x4E60;&amp;#x9879;&amp;#x76EE;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x7EC4;&amp;#x4EF6;&amp;#x5316;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x8D26;&amp;#x6237;&amp;#x5BC6;&amp;#x7801;&amp;#x4E0E;&amp;#x8BA4;&amp;#x8BC1;&amp;#x767B;&amp;#x9646;&amp;#x3002;&amp;#x4F7F;&amp;#x7528;Kotlin&amp;#x8BED;&amp;#x8A00;&amp;#x8FDB;&amp;#x884C;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x9879;&amp;#x76EE;&amp;#x67B6;&amp;#x6784;&amp;#x662F;&amp;#x57FA;&amp;#x4E8E;JetPack\&amp;amp;DataBinding&amp;#x7684;MVVM&amp;#xFF1B;&amp;#x9879;&amp;#x76EE;&amp;#x4E2D;&amp;#x4F7F;&amp;#x7528;&amp;#x4E86;Arouter&amp;#x3001;Retrofit&amp;#x3001;Coroutine&amp;#x3001;Glide&amp;#x3001;Dagger&amp;#x4E0E;Hilt&amp;#x7B49;&amp;#x6D41;&amp;#x884C;&amp;#x5F00;&amp;#x6E90;&amp;#x6280;&amp;#x672F;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/flutter_github&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;flutter_github&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Flutter&amp;#x7684;&amp;#x8DE8;&amp;#x5E73;&amp;#x53F0;&amp;#x7248;&amp;#x672C;Github&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x4E0E;AwesomeGithub&amp;#x76F8;&amp;#x5BF9;&amp;#x5E94;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-api-analysis&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android-api-analysis&lt;/a&gt;: &amp;#x7ED3;&amp;#x5408;&amp;#x8BE6;&amp;#x7EC6;&amp;#x7684;Demo&amp;#x6765;&amp;#x5168;&amp;#x9762;&amp;#x89E3;&amp;#x6790;Android&amp;#x76F8;&amp;#x5173;&amp;#x7684;&amp;#x77E5;&amp;#x8BC6;&amp;#x70B9;, &amp;#x5E2E;&amp;#x52A9;&amp;#x8BFB;&amp;#x8005;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x5FEB;&amp;#x7684;&amp;#x638C;&amp;#x63E1;&amp;#x4E0E;&amp;#x7406;&amp;#x89E3;&amp;#x6240;&amp;#x9610;&amp;#x8FF0;&amp;#x7684;&amp;#x8981;&amp;#x70B9;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/daily_algorithm&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;daily_algorithm&lt;/a&gt;: &amp;#x6BCF;&amp;#x65E5;&amp;#x4E00;&amp;#x7B97;&amp;#x6CD5;&amp;#xFF0C;&amp;#x7531;&amp;#x6D45;&amp;#x5165;&amp;#x6DF1;&amp;#xFF0C;&amp;#x6B22;&amp;#x8FCE;&amp;#x52A0;&amp;#x5165;&amp;#x4E00;&amp;#x8D77;&amp;#x5171;&amp;#x52C9;&amp;#x3002;&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;p&gt;&amp;#x5728;Android&amp;#x5E94;&amp;#x7528;&amp;#x7A0B;&amp;#x5E8F;&amp;#x7684;&amp;#x5F00;&amp;#x53D1;&amp;#x8FC7;&amp;#x7A0B;&amp;#x4E2D;&amp;#xFF0C;&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&amp;#
    
    </summary>
    
      <category term="android" scheme="https://www.rousetime.com/categories/android/"/>
    
    
      <category term="android" scheme="https://www.rousetime.com/tags/android/"/>
    
  </entry>
  
  <entry>
    <title>精通Android线程池的必备高级技巧</title>
    <link href="https://www.rousetime.com/2023/12/14/%E7%B2%BE%E9%80%9AAndroid%E7%BA%BF%E7%A8%8B%E6%B1%A0%E7%9A%84%E5%BF%85%E5%A4%87%E9%AB%98%E7%BA%A7%E6%8A%80%E5%B7%A7/"/>
    <id>https://www.rousetime.com/2023/12/14/精通Android线程池的必备高级技巧/</id>
    <published>2023-12-14T01:59:37.000Z</published>
    <updated>2023-12-14T02:00:16.005Z</updated>
    
    <content type="html">&lt;p&gt;&amp;#x5728;Android&amp;#x5F00;&amp;#x53D1;&amp;#x4E2D;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x7ECF;&amp;#x5E38;&amp;#x4F1A;&amp;#x9047;&amp;#x5230;&amp;#x9700;&amp;#x8981;&amp;#x6267;&amp;#x884C;&amp;#x8017;&amp;#x65F6;&amp;#x64CD;&amp;#x4F5C;&amp;#x7684;&amp;#x60C5;&amp;#x51B5;&amp;#xFF0C;&amp;#x4F8B;&amp;#x5982;&amp;#x7F51;&amp;#x7EDC;&amp;#x8BF7;&amp;#x6C42;&amp;#x3001;&amp;#x6570;&amp;#x636E;&amp;#x5E93;&amp;#x8BFB;&amp;#x5199;&amp;#x3001;&amp;#x56FE;&amp;#x7247;&amp;#x52A0;&amp;#x8F7D;&amp;#x7B49;&amp;#x3002;&amp;#x4E3A;&amp;#x4E86;&amp;#x907F;&amp;#x514D;&amp;#x8FD9;&amp;#x4E9B;&amp;#x64CD;&amp;#x4F5C;&amp;#x963B;&amp;#x585E;&amp;#x4E3B;&amp;#x7EBF;&amp;#x7A0B;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x901A;&amp;#x5E38;&amp;#x4F1A;&amp;#x4F7F;&amp;#x7528;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x6765;&amp;#x7BA1;&amp;#x7406;&amp;#x5E76;&amp;#x53D1;&amp;#x6267;&amp;#x884C;&amp;#x4EFB;&amp;#x52A1;&amp;#x3002;&amp;#x800C;Android Executors&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x975E;&amp;#x5E38;&amp;#x5E38;&amp;#x7528;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7BA1;&amp;#x7406;&amp;#x5DE5;&amp;#x5177;&amp;#x3002;&amp;#x672C;&amp;#x6587;&amp;#x5C06;&amp;#x6DF1;&amp;#x5165;&amp;#x89E3;&amp;#x6790;Android Executors&amp;#x7684;&amp;#x539F;&amp;#x7406;&amp;#xFF0C;&amp;#x5E2E;&amp;#x52A9;&amp;#x5927;&amp;#x5BB6;&amp;#x66F4;&amp;#x597D;&amp;#x5730;&amp;#x7406;&amp;#x89E3;&amp;#x548C;&amp;#x4F7F;&amp;#x7528;&amp;#x8FD9;&amp;#x4E2A;&amp;#x5DE5;&amp;#x5177;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;Android&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7B80;&amp;#x4ECB;&quot;&gt;&lt;a href=&quot;#Android&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7B80;&amp;#x4ECB;&quot; class=&quot;headerlink&quot; title=&quot;Android&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7B80;&amp;#x4ECB;&quot;&gt;&lt;/a&gt;Android&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7B80;&amp;#x4ECB;&lt;/h2&gt;&lt;p&gt;&amp;#x5728;&amp;#x79FB;&amp;#x52A8;&amp;#x5E94;&amp;#x7528;&amp;#x4E2D;&amp;#xFF0C;&amp;#x9891;&amp;#x7E41;&amp;#x5730;&amp;#x521B;&amp;#x5EFA;&amp;#x548C;&amp;#x9500;&amp;#x6BC1;&amp;#x7EBF;&amp;#x7A0B;&amp;#x53EF;&amp;#x80FD;&amp;#x5BFC;&amp;#x81F4;&amp;#x7CFB;&amp;#x7EDF;&amp;#x8D44;&amp;#x6E90;&amp;#x7684;&amp;#x6D6A;&amp;#x8D39;&amp;#x3002;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x901A;&amp;#x8FC7;&amp;#x7EF4;&amp;#x62A4;&amp;#x4E00;&amp;#x7EC4;&amp;#x53EF;&amp;#x91CD;&amp;#x7528;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#xFF0C;&amp;#x964D;&amp;#x4F4E;&amp;#x4E86;&amp;#x7EBF;&amp;#x7A0B;&amp;#x521B;&amp;#x5EFA;&amp;#x548C;&amp;#x9500;&amp;#x6BC1;&amp;#x7684;&amp;#x5F00;&amp;#x9500;&amp;#x3002;&amp;#x8FD9;&amp;#x79CD;&amp;#x673A;&amp;#x5236;&amp;#x4F7F;&amp;#x5F97;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&amp;#x66F4;&amp;#x52A0;&amp;#x9AD8;&amp;#x6548;&amp;#xFF0C;&amp;#x540C;&amp;#x65F6;&amp;#x80FD;&amp;#x591F;&amp;#x63A7;&amp;#x5236;&amp;#x5E76;&amp;#x53D1;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7684;&amp;#x6570;&amp;#x91CF;&amp;#xFF0C;&amp;#x9632;&amp;#x6B62;&amp;#x7CFB;&amp;#x7EDF;&amp;#x8D44;&amp;#x6E90;&amp;#x88AB;&amp;#x8FC7;&amp;#x5EA6;&amp;#x5360;&amp;#x7528;&amp;#x3002;&lt;/p&gt;
&lt;h3 id=&quot;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x4F5C;&amp;#x7528;&amp;#x548C;&amp;#x4F18;&amp;#x52BF;&quot;&gt;&lt;a href=&quot;#&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x4F5C;&amp;#x7528;&amp;#x548C;&amp;#x4F18;&amp;#x52BF;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x4F5C;&amp;#x7528;&amp;#x548C;&amp;#x4F18;&amp;#x52BF;&quot;&gt;&lt;/a&gt;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x4F5C;&amp;#x7528;&amp;#x548C;&amp;#x4F18;&amp;#x52BF;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x4EFB;&amp;#x52A1;&amp;#x961F;&amp;#x5217;&amp;#x7BA1;&amp;#x7406;&amp;#xFF1A;&lt;/strong&gt; &amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x901A;&amp;#x8FC7;&amp;#x4EFB;&amp;#x52A1;&amp;#x961F;&amp;#x5217;&amp;#x7BA1;&amp;#x7406;&amp;#x5F85;&amp;#x6267;&amp;#x884C;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#xFF0C;&amp;#x786E;&amp;#x4FDD;&amp;#x5B83;&amp;#x4EEC;&amp;#x6309;&amp;#x7167;&amp;#x4E00;&amp;#x5B9A;&amp;#x7684;&amp;#x987A;&amp;#x5E8F;&amp;#x6267;&amp;#x884C;&amp;#xFF0C;&amp;#x63D0;&amp;#x9AD8;&amp;#x4E86;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x6267;&amp;#x884C;&amp;#x6548;&amp;#x7387;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x8D44;&amp;#x6E90;&amp;#x63A7;&amp;#x5236;&amp;#xFF1A;&lt;/strong&gt; &amp;#x53EF;&amp;#x4EE5;&amp;#x9650;&amp;#x5236;&amp;#x5E76;&amp;#x53D1;&amp;#x6267;&amp;#x884C;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6570;&amp;#x91CF;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x8D44;&amp;#x6E90;&amp;#x8017;&amp;#x5C3D;&amp;#x548C;&amp;#x7ADE;&amp;#x4E89;&amp;#x6761;&amp;#x4EF6;&amp;#x7684;&amp;#x53D1;&amp;#x751F;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x7EBF;&amp;#x7A0B;&amp;#x590D;&amp;#x7528;&amp;#xFF1A;&lt;/strong&gt; &amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7EF4;&amp;#x62A4;&amp;#x4E00;&amp;#x7EC4;&amp;#x53EF;&amp;#x590D;&amp;#x7528;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#xFF0C;&amp;#x51CF;&amp;#x5C11;&amp;#x4E86;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7684;&amp;#x521B;&amp;#x5EFA;&amp;#x548C;&amp;#x9500;&amp;#x6BC1;&amp;#xFF0C;&amp;#x63D0;&amp;#x9AD8;&amp;#x4E86;&amp;#x7CFB;&amp;#x7EDF;&amp;#x7684;&amp;#x6027;&amp;#x80FD;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;Executors&amp;#x6846;&amp;#x67B6;&amp;#x6982;&amp;#x8FF0;&quot;&gt;&lt;a href=&quot;#Executors&amp;#x6846;&amp;#x67B6;&amp;#x6982;&amp;#x8FF0;&quot; class=&quot;headerlink&quot; title=&quot;Executors&amp;#x6846;&amp;#x67B6;&amp;#x6982;&amp;#x8FF0;&quot;&gt;&lt;/a&gt;Executors&amp;#x6846;&amp;#x67B6;&amp;#x6982;&amp;#x8FF0;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;java.util.concurrent.Executors&lt;/code&gt;&amp;#x662F;Java&amp;#x4E2D;&amp;#x7528;&amp;#x4E8E;&amp;#x521B;&amp;#x5EFA;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x5DE5;&amp;#x5382;&amp;#x7C7B;&amp;#x3002;&amp;#x5B83;&amp;#x63D0;&amp;#x4F9B;&amp;#x4E86;&amp;#x4E00;&amp;#x7CFB;&amp;#x5217;&amp;#x9759;&amp;#x6001;&amp;#x65B9;&amp;#x6CD5;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x65B9;&amp;#x4FBF;&amp;#x5730;&amp;#x521B;&amp;#x5EFA;&amp;#x4E0D;&amp;#x540C;&amp;#x7C7B;&amp;#x578B;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x3002;&amp;#x8FD9;&amp;#x4E9B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7C7B;&amp;#x578B;&amp;#x5305;&amp;#x62EC;CachedThreadPool&amp;#x3001;FixedThreadPool&amp;#x3001;ScheduledThreadPool&amp;#x548C;SingleThreadExecutor&amp;#x7B49;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x901A;&amp;#x8FC7;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;Executors&lt;/code&gt;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x7B80;&amp;#x5316;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x521B;&amp;#x5EFA;&amp;#x8FC7;&amp;#x7A0B;&amp;#xFF0C;&amp;#x4E13;&amp;#x6CE8;&amp;#x4E8E;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x5B9E;&amp;#x73B0;&amp;#x548C;&amp;#x8C03;&amp;#x5EA6;&amp;#x3002;&lt;/p&gt;
&lt;h3 id=&quot;Executors&amp;#x5DE5;&amp;#x5382;&amp;#x65B9;&amp;#x6CD5;&quot;&gt;&lt;a href=&quot;#Executors&amp;#x5DE5;&amp;#x5382;&amp;#x65B9;&amp;#x6CD5;&quot; class=&quot;headerlink&quot; title=&quot;Executors&amp;#x5DE5;&amp;#x5382;&amp;#x65B9;&amp;#x6CD5;&quot;&gt;&lt;/a&gt;Executors&amp;#x5DE5;&amp;#x5382;&amp;#x65B9;&amp;#x6CD5;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Executors&lt;/code&gt;&amp;#x7C7B;&amp;#x63D0;&amp;#x4F9B;&amp;#x4E86;&amp;#x51E0;&amp;#x4E2A;&amp;#x5E38;&amp;#x7528;&amp;#x7684;&amp;#x5DE5;&amp;#x5382;&amp;#x65B9;&amp;#x6CD5;&amp;#xFF1A;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;newCachedThreadPool()&amp;#xFF1A;&lt;/strong&gt; &amp;#x521B;&amp;#x5EFA;&amp;#x4E00;&amp;#x4E2A;&amp;#x53EF;&amp;#x6839;&amp;#x636E;&amp;#x9700;&amp;#x8981;&amp;#x521B;&amp;#x5EFA;&amp;#x65B0;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#xFF0C;&amp;#x4F46;&amp;#x5728;&amp;#x53EF;&amp;#x7528;&amp;#x65F6;&amp;#x5C06;&amp;#x91CD;&amp;#x7528;&amp;#x5148;&amp;#x524D;&amp;#x6784;&amp;#x9020;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;newFixedThreadPool(int n)&amp;#xFF1A;&lt;/strong&gt; &amp;#x521B;&amp;#x5EFA;&amp;#x4E00;&amp;#x4E2A;&amp;#x5177;&amp;#x6709;&amp;#x56FA;&amp;#x5B9A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6570;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#xFF0C;&amp;#x8D85;&amp;#x8FC7;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#x4F1A;&amp;#x5728;&amp;#x961F;&amp;#x5217;&amp;#x4E2D;&amp;#x7B49;&amp;#x5F85;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;newScheduledThreadPool(int corePoolSize)&amp;#xFF1A;&lt;/strong&gt; &amp;#x521B;&amp;#x5EFA;&amp;#x4E00;&amp;#x4E2A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#xFF0C;&amp;#x5B83;&amp;#x53EF;&amp;#x8C03;&amp;#x5EA6;&amp;#x5728;&amp;#x7ED9;&amp;#x5B9A;&amp;#x7684;&amp;#x5EF6;&amp;#x8FDF;&amp;#x4E4B;&amp;#x540E;&amp;#x8FD0;&amp;#x884C;&amp;#x547D;&amp;#x4EE4;&amp;#xFF0C;&amp;#x6216;&amp;#x8005;&amp;#x5B9A;&amp;#x671F;&amp;#x6267;&amp;#x884C;&amp;#x547D;&amp;#x4EE4;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;newSingleThreadExecutor()&amp;#xFF1A;&lt;/strong&gt; &amp;#x521B;&amp;#x5EFA;&amp;#x4E00;&amp;#x4E2A;&amp;#x4F7F;&amp;#x7528;&amp;#x5355;&amp;#x4E2A; worker &amp;#x7EBF;&amp;#x7A0B;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#xFF0C;&amp;#x4EE5;&amp;#x65E0;&amp;#x754C;&amp;#x961F;&amp;#x5217;&amp;#x65B9;&amp;#x5F0F;&amp;#x6765;&amp;#x8FD0;&amp;#x884C;&amp;#x8BE5;&amp;#x7EBF;&amp;#x7A0B;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;&amp;#x4EFB;&amp;#x52A1;&amp;#x63D0;&amp;#x4EA4;&amp;#x548C;&amp;#x6267;&amp;#x884C;&quot;&gt;&lt;a href=&quot;#&amp;#x4EFB;&amp;#x52A1;&amp;#x63D0;&amp;#x4EA4;&amp;#x548C;&amp;#x6267;&amp;#x884C;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4EFB;&amp;#x52A1;&amp;#x63D0;&amp;#x4EA4;&amp;#x548C;&amp;#x6267;&amp;#x884C;&quot;&gt;&lt;/a&gt;&amp;#x4EFB;&amp;#x52A1;&amp;#x63D0;&amp;#x4EA4;&amp;#x548C;&amp;#x6267;&amp;#x884C;&lt;/h3&gt;&lt;p&gt;&amp;#x4E00;&amp;#x65E6;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x521B;&amp;#x5EFA;&amp;#x5B8C;&amp;#x6210;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x901A;&amp;#x8FC7;&amp;#x5C06;&amp;#x4EFB;&amp;#x52A1;&amp;#x63D0;&amp;#x4EA4;&amp;#x7ED9;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x6765;&amp;#x6267;&amp;#x884C;&amp;#x3002;&amp;#x4EFB;&amp;#x52A1;&amp;#x53EF;&amp;#x4EE5;&amp;#x662F;&amp;#x5B9E;&amp;#x73B0;&amp;#x4E86;&lt;code&gt;Runnable&lt;/code&gt;&amp;#x63A5;&amp;#x53E3;&amp;#x7684;&amp;#x666E;&amp;#x901A;&amp;#x7EBF;&amp;#x7A0B;&amp;#xFF0C;&amp;#x4E5F;&amp;#x53EF;&amp;#x4EE5;&amp;#x662F;&amp;#x5B9E;&amp;#x73B0;&amp;#x4E86;&lt;code&gt;Callable&lt;/code&gt;&amp;#x63A5;&amp;#x53E3;&amp;#x7684;&amp;#x5E26;&amp;#x8FD4;&amp;#x56DE;&amp;#x503C;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;ExecutorService executorService = Executors.newFixedThreadPool(&lt;span class=&quot;number&quot;&gt;5&lt;/span&gt;);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;executorService.submit(() -&amp;gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x6267;&amp;#x884C;&amp;#x4EFB;&amp;#x52A1;&amp;#x903B;&amp;#x8F91;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;});&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x5173;&amp;#x95ED;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;executorService.shutdown();&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x6709;&amp;#x4E00;&amp;#x4E2A;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#xFF0C;&amp;#x5B83;&amp;#x5305;&amp;#x62EC;&amp;#x521B;&amp;#x5EFA;&amp;#x3001;&amp;#x8FD0;&amp;#x884C;&amp;#x548C;&amp;#x5173;&amp;#x95ED;&amp;#x4E09;&amp;#x4E2A;&amp;#x9636;&amp;#x6BB5;&amp;#x3002;&amp;#x521B;&amp;#x5EFA;&amp;#x540E;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x53EF;&amp;#x4EE5;&amp;#x63A5;&amp;#x53D7;&amp;#x5E76;&amp;#x6267;&amp;#x884C;&amp;#x4EFB;&amp;#x52A1;&amp;#xFF0C;&amp;#x4E00;&amp;#x65E6;&amp;#x4E0D;&amp;#x518D;&amp;#x9700;&amp;#x8981;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x901A;&amp;#x8FC7;&amp;#x8C03;&amp;#x7528;&lt;code&gt;shutdown()&lt;/code&gt;&amp;#x6216;&lt;code&gt;shutdownNow()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x6765;&amp;#x5173;&amp;#x95ED;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;ThreadPoolExecutor&quot;&gt;&lt;a href=&quot;#ThreadPoolExecutor&quot; class=&quot;headerlink&quot; title=&quot;ThreadPoolExecutor&quot;&gt;&lt;/a&gt;ThreadPoolExecutor&lt;/h2&gt;&lt;p&gt;&lt;code&gt;ThreadPoolExecutor&lt;/code&gt;&amp;#x662F;&lt;code&gt;java.util.concurrent&lt;/code&gt;&amp;#x5305;&amp;#x4E2D;&amp;#x7684;&amp;#x6838;&amp;#x5FC3;&amp;#x7C7B;&amp;#x4E4B;&amp;#x4E00;&amp;#xFF0C;&amp;#x7528;&amp;#x4E8E;&amp;#x5B9E;&amp;#x73B0;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x3002;&amp;#x7406;&amp;#x89E3;&lt;code&gt;ThreadPoolExecutor&lt;/code&gt;&amp;#x7684;&amp;#x5DE5;&amp;#x4F5C;&amp;#x539F;&amp;#x7406;&amp;#x5BF9;&amp;#x4E8E;&amp;#x6DF1;&amp;#x5165;&amp;#x638C;&amp;#x63E1;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&amp;#x81F3;&amp;#x5173;&amp;#x91CD;&amp;#x8981;&amp;#x3002;&lt;/p&gt;
&lt;h3 id=&quot;&amp;#x6838;&amp;#x5FC3;&amp;#x53C2;&amp;#x6570;&amp;#x89E3;&amp;#x91CA;&quot;&gt;&lt;a href=&quot;#&amp;#x6838;&amp;#x5FC3;&amp;#x53C2;&amp;#x6570;&amp;#x89E3;&amp;#x91CA;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x6838;&amp;#x5FC3;&amp;#x53C2;&amp;#x6570;&amp;#x89E3;&amp;#x91CA;&quot;&gt;&lt;/a&gt;&amp;#x6838;&amp;#x5FC3;&amp;#x53C2;&amp;#x6570;&amp;#x89E3;&amp;#x91CA;&lt;/h3&gt;&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;public ThreadPoolExecutor(int corePoolSize,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                          int maximumPoolSize,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                          long keepAliveTime,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                          TimeUnit unit,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                          BlockingQueue&amp;lt;Runnable&amp;gt; workQueue,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                          ThreadFactory threadFactory) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    this(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;         threadFactory, defaultHandler);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&lt;code&gt;ThreadPoolExecutor&lt;/code&gt;&amp;#x7684;&amp;#x6784;&amp;#x9020;&amp;#x65B9;&amp;#x6CD5;&amp;#x5305;&amp;#x62EC;&amp;#x591A;&amp;#x4E2A;&amp;#x53C2;&amp;#x6570;&amp;#xFF0C;&amp;#x5176;&amp;#x4E2D;&amp;#x4E00;&amp;#x4E9B;&amp;#x662F;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x6838;&amp;#x5FC3;&amp;#x53C2;&amp;#x6570;&amp;#xFF1A;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;corePoolSize&amp;#xFF1A;&lt;/strong&gt; &amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x6838;&amp;#x5FC3;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6570;&amp;#xFF0C;&amp;#x5373;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7EF4;&amp;#x62A4;&amp;#x7684;&amp;#x6700;&amp;#x5C0F;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6570;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;maximumPoolSize&amp;#xFF1A;&lt;/strong&gt; &amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x6700;&amp;#x5927;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6570;&amp;#xFF0C;&amp;#x5373;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x5141;&amp;#x8BB8;&amp;#x7684;&amp;#x6700;&amp;#x5927;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6570;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;keepAliveTime&amp;#xFF1A;&lt;/strong&gt; &amp;#x5F53;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6570;&amp;#x91CF;&amp;#x8D85;&amp;#x8FC7;&amp;#x6838;&amp;#x5FC3;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6570;&amp;#x65F6;&amp;#xFF0C;&amp;#x591A;&amp;#x4F59;&amp;#x7684;&amp;#x7A7A;&amp;#x95F2;&amp;#x7EBF;&amp;#x7A0B;&amp;#x5728;&amp;#x7EC8;&amp;#x6B62;&amp;#x524D;&amp;#x7B49;&amp;#x5F85;&amp;#x65B0;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x6700;&amp;#x957F;&amp;#x65F6;&amp;#x95F4;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;workQueue&amp;#xFF1A;&lt;/strong&gt; &amp;#x7528;&amp;#x4E8E;&amp;#x4FDD;&amp;#x5B58;&amp;#x7B49;&amp;#x5F85;&amp;#x6267;&amp;#x884C;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x963B;&amp;#x585E;&amp;#x961F;&amp;#x5217;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x548C;&amp;#x72B6;&amp;#x6001;&amp;#x8F6C;&amp;#x6362;&quot;&gt;&lt;a href=&quot;#&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x548C;&amp;#x72B6;&amp;#x6001;&amp;#x8F6C;&amp;#x6362;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x548C;&amp;#x72B6;&amp;#x6001;&amp;#x8F6C;&amp;#x6362;&quot;&gt;&lt;/a&gt;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x548C;&amp;#x72B6;&amp;#x6001;&amp;#x8F6C;&amp;#x6362;&lt;/h3&gt;&lt;p&gt;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x5177;&amp;#x6709;&amp;#x4E0D;&amp;#x540C;&amp;#x7684;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x72B6;&amp;#x6001;&amp;#xFF0C;&amp;#x5305;&amp;#x62EC;&lt;code&gt;RUNNING&lt;/code&gt;&amp;#x3001;&lt;code&gt;SHUTDOWN&lt;/code&gt;&amp;#x3001;&lt;code&gt;STOP&lt;/code&gt;&amp;#x548C;&lt;code&gt;TERMINATED&lt;/code&gt;&amp;#x3002;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x521B;&amp;#x5EFA;&amp;#x9636;&amp;#x6BB5;&amp;#xFF1A;&lt;/strong&gt; &amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x88AB;&amp;#x521B;&amp;#x5EFA;&amp;#x65F6;&amp;#xFF0C;&amp;#x521D;&amp;#x59CB;&amp;#x72B6;&amp;#x6001;&amp;#x4E3A;&lt;code&gt;RUNNING&lt;/code&gt;&amp;#x3002;&amp;#x5728;&amp;#x8FD9;&amp;#x4E2A;&amp;#x9636;&amp;#x6BB5;&amp;#xFF0C;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x53EF;&amp;#x4EE5;&amp;#x63A5;&amp;#x53D7;&amp;#x65B0;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#xFF0C;&amp;#x5E76;&amp;#x4F1A;&amp;#x521B;&amp;#x5EFA;&amp;#x6838;&amp;#x5FC3;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6765;&amp;#x6267;&amp;#x884C;&amp;#x4EFB;&amp;#x52A1;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x8FD0;&amp;#x884C;&amp;#x9636;&amp;#x6BB5;&amp;#xFF1A;&lt;/strong&gt; &amp;#x5728;&amp;#x8FD0;&amp;#x884C;&amp;#x9636;&amp;#x6BB5;&amp;#xFF0C;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x6309;&amp;#x7167;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x5230;&amp;#x6765;&amp;#x521B;&amp;#x5EFA;&amp;#x548C;&amp;#x56DE;&amp;#x6536;&amp;#x7EBF;&amp;#x7A0B;&amp;#xFF0C;&amp;#x540C;&amp;#x65F6;&amp;#x4EFB;&amp;#x52A1;&amp;#x4F1A;&amp;#x88AB;&amp;#x653E;&amp;#x5165;&amp;#x5DE5;&amp;#x4F5C;&amp;#x961F;&amp;#x5217;&amp;#x4E2D;&amp;#x7B49;&amp;#x5F85;&amp;#x6267;&amp;#x884C;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x5173;&amp;#x95ED;&amp;#x9636;&amp;#x6BB5;&amp;#xFF1A;&lt;/strong&gt; &amp;#x5F53;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x4E0D;&amp;#x518D;&amp;#x63A5;&amp;#x53D7;&amp;#x65B0;&amp;#x4EFB;&amp;#x52A1;&amp;#x65F6;&amp;#xFF0C;&amp;#x8FDB;&amp;#x5165;&amp;#x5173;&amp;#x95ED;&amp;#x9636;&amp;#x6BB5;&amp;#x3002;&amp;#x5728;&amp;#x6B64;&amp;#x9636;&amp;#x6BB5;&amp;#xFF0C;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x4F1A;&amp;#x505C;&amp;#x6B62;&amp;#x63A5;&amp;#x53D7;&amp;#x65B0;&amp;#x4EFB;&amp;#x52A1;&amp;#xFF0C;&amp;#x4F46;&amp;#x4F1A;&amp;#x7EE7;&amp;#x7EED;&amp;#x6267;&amp;#x884C;&amp;#x5DF2;&amp;#x7ECF;&amp;#x5728;&amp;#x961F;&amp;#x5217;&amp;#x4E2D;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#x3002;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x72B6;&amp;#x6001;&amp;#x5C06;&amp;#x53D8;&amp;#x4E3A;&lt;code&gt;SHUTDOWN&lt;/code&gt;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x7EC8;&amp;#x6B62;&amp;#x9636;&amp;#x6BB5;&amp;#xFF1A;&lt;/strong&gt; &amp;#x5728;&amp;#x6240;&amp;#x6709;&amp;#x4EFB;&amp;#x52A1;&amp;#x6267;&amp;#x884C;&amp;#x5B8C;&amp;#x6210;&amp;#x540E;&amp;#xFF0C;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x8FDB;&amp;#x5165;&amp;#x7EC8;&amp;#x6B62;&amp;#x9636;&amp;#x6BB5;&amp;#x3002;&amp;#x6B64;&amp;#x65F6;&amp;#xFF0C;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x72B6;&amp;#x6001;&amp;#x53D8;&amp;#x4E3A;&lt;code&gt;TERMINATED&lt;/code&gt;&amp;#x3002;&amp;#x5728;&amp;#x8FD9;&amp;#x4E2A;&amp;#x72B6;&amp;#x6001;&amp;#x4E0B;&amp;#xFF0C;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x4E2D;&amp;#x7684;&amp;#x6240;&amp;#x6709;&amp;#x7EBF;&amp;#x7A0B;&amp;#x90FD;&amp;#x5DF2;&amp;#x7ECF;&amp;#x88AB;&amp;#x9500;&amp;#x6BC1;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x72B6;&amp;#x6001;&amp;#x8F6C;&amp;#x6362;&amp;#x662F;&amp;#x53D7;&amp;#x5230;&amp;#x4EFB;&amp;#x52A1;&amp;#x63D0;&amp;#x4EA4;&amp;#x3001;&amp;#x5173;&amp;#x95ED;&amp;#x548C;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7EC8;&amp;#x6B62;&amp;#x7B49;&amp;#x4E8B;&amp;#x4EF6;&amp;#x7684;&amp;#x5F71;&amp;#x54CD;&amp;#x7684;&amp;#x3002;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x4EFB;&amp;#x52A1;&amp;#x63D0;&amp;#x4EA4;&amp;#xFF1A;&lt;/strong&gt; &amp;#x5728;&amp;#x4EFB;&amp;#x52A1;&amp;#x63D0;&amp;#x4EA4;&amp;#x65F6;&amp;#xFF0C;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x53EF;&amp;#x80FD;&amp;#x4F1A;&amp;#x521B;&amp;#x5EFA;&amp;#x65B0;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6216;&amp;#x8005;&amp;#x5C06;&amp;#x4EFB;&amp;#x52A1;&amp;#x653E;&amp;#x5165;&amp;#x961F;&amp;#x5217;&amp;#x4E2D;&amp;#x7B49;&amp;#x5F85;&amp;#x6267;&amp;#x884C;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x5173;&amp;#x95ED;&amp;#xFF1A;&lt;/strong&gt; &amp;#x8C03;&amp;#x7528;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&lt;code&gt;shutdown()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x5C06;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x5207;&amp;#x6362;&amp;#x5230;&amp;#x5173;&amp;#x95ED;&amp;#x72B6;&amp;#x6001;&amp;#x3002;&amp;#x5728;&amp;#x5173;&amp;#x95ED;&amp;#x72B6;&amp;#x6001;&amp;#x4E0B;&amp;#xFF0C;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x4E0D;&amp;#x518D;&amp;#x63A5;&amp;#x53D7;&amp;#x65B0;&amp;#x4EFB;&amp;#x52A1;&amp;#xFF0C;&amp;#x4F46;&amp;#x4F1A;&amp;#x7EE7;&amp;#x7EED;&amp;#x6267;&amp;#x884C;&amp;#x961F;&amp;#x5217;&amp;#x4E2D;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x7EC8;&amp;#x6B62;&amp;#xFF1A;&lt;/strong&gt; &amp;#x5F53;&amp;#x6240;&amp;#x6709;&amp;#x4EFB;&amp;#x52A1;&amp;#x6267;&amp;#x884C;&amp;#x5B8C;&amp;#x6210;&amp;#xFF0C;&amp;#x5E76;&amp;#x4E14;&amp;#x8C03;&amp;#x7528;&amp;#x4E86;&lt;code&gt;shutdown()&lt;/code&gt;&amp;#x540E;&amp;#xFF0C;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x8FDB;&amp;#x5165;&amp;#x7EC8;&amp;#x6B62;&amp;#x72B6;&amp;#x6001;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x5F02;&amp;#x5E38;&amp;#x60C5;&amp;#x51B5;&amp;#xFF1A;&lt;/strong&gt; &amp;#x5982;&amp;#x679C;&amp;#x53D1;&amp;#x751F;&amp;#x5F02;&amp;#x5E38;&amp;#xFF0C;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x53EF;&amp;#x80FD;&amp;#x8FDB;&amp;#x5165;&lt;code&gt;TERMINATED&lt;/code&gt;&amp;#x72B6;&amp;#x6001;&amp;#xFF0C;&amp;#x4F46;&amp;#x5E76;&amp;#x4E0D;&amp;#x662F;&amp;#x6240;&amp;#x6709;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x90FD;&amp;#x5DF2;&amp;#x7ECF;&amp;#x7EC8;&amp;#x6B62;&amp;#x3002;&amp;#x8FD9;&amp;#x79CD;&amp;#x60C5;&amp;#x51B5;&amp;#x4E0B;&amp;#xFF0C;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x53EF;&amp;#x80FD;&amp;#x9700;&amp;#x8981;&amp;#x901A;&amp;#x8FC7;&amp;#x9002;&amp;#x5F53;&amp;#x7684;&amp;#x624B;&amp;#x6BB5;&amp;#x6765;&amp;#x5904;&amp;#x7406;&amp;#x672A;&amp;#x7EC8;&amp;#x6B62;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;&amp;#x62D2;&amp;#x7EDD;&amp;#x7B56;&amp;#x7565;&quot;&gt;&lt;a href=&quot;#&amp;#x62D2;&amp;#x7EDD;&amp;#x7B56;&amp;#x7565;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x62D2;&amp;#x7EDD;&amp;#x7B56;&amp;#x7565;&quot;&gt;&lt;/a&gt;&amp;#x62D2;&amp;#x7EDD;&amp;#x7B56;&amp;#x7565;&lt;/h3&gt;&lt;p&gt;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x62D2;&amp;#x7EDD;&amp;#x7B56;&amp;#x7565;&amp;#x51B3;&amp;#x5B9A;&amp;#x4E86;&amp;#x5F53;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x65E0;&amp;#x6CD5;&amp;#x6267;&amp;#x884C;&amp;#x63D0;&amp;#x4EA4;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#x65F6;&amp;#x7684;&amp;#x884C;&amp;#x4E3A;&amp;#x3002;&amp;#x5E38;&amp;#x89C1;&amp;#x7684;&amp;#x62D2;&amp;#x7EDD;&amp;#x7B56;&amp;#x7565;&amp;#x5305;&amp;#x62EC;&lt;code&gt;AbortPolicy&lt;/code&gt;&amp;#x3001;&lt;code&gt;CallerRunsPolicy&lt;/code&gt;&amp;#x3001;&lt;code&gt;DiscardPolicy&lt;/code&gt;&amp;#x548C;&lt;code&gt;DiscardOldestPolicy&lt;/code&gt;&amp;#x7B49;&amp;#x3002;&lt;/p&gt;
&lt;h4 id=&quot;AbortPolicy&quot;&gt;&lt;a href=&quot;#AbortPolicy&quot; class=&quot;headerlink&quot; title=&quot;AbortPolicy&quot;&gt;&lt;/a&gt;AbortPolicy&lt;/h4&gt;&lt;p&gt;&lt;code&gt;AbortPolicy&lt;/code&gt;&amp;#x662F;&amp;#x9ED8;&amp;#x8BA4;&amp;#x7684;&amp;#x62D2;&amp;#x7EDD;&amp;#x7B56;&amp;#x7565;&amp;#xFF0C;&amp;#x5F53;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x65E0;&amp;#x6CD5;&amp;#x63A5;&amp;#x53D7;&amp;#x65B0;&amp;#x4EFB;&amp;#x52A1;&amp;#x65F6;&amp;#xFF0C;&amp;#x4F1A;&amp;#x629B;&amp;#x51FA;&lt;code&gt;RejectedExecutionException&lt;/code&gt;&amp;#x5F02;&amp;#x5E38;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;AbortPolicy&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;implements&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;RejectedExecutionHandler&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;AbortPolicy&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt; &lt;/span&gt;{ }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;rejectedExecution&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(Runnable r, ThreadPoolExecutor e)&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;throw&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt; RejectedExecutionException(&lt;span class=&quot;string&quot;&gt;&amp;quot;Task &amp;quot;&lt;/span&gt; + r.toString() +&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                                             &lt;span class=&quot;string&quot;&gt;&amp;quot; rejected from &amp;quot;&lt;/span&gt; +&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                                             e.toString());&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h4 id=&quot;CallerRunsPolicy&quot;&gt;&lt;a href=&quot;#CallerRunsPolicy&quot; class=&quot;headerlink&quot; title=&quot;CallerRunsPolicy&quot;&gt;&lt;/a&gt;CallerRunsPolicy&lt;/h4&gt;&lt;p&gt;&lt;code&gt;CallerRunsPolicy&lt;/code&gt;&amp;#x62D2;&amp;#x7EDD;&amp;#x7B56;&amp;#x7565;&amp;#x4F1A;&amp;#x76F4;&amp;#x63A5;&amp;#x5728;&amp;#x63D0;&amp;#x4EA4;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x4E2D;&amp;#x6267;&amp;#x884C;&amp;#x88AB;&amp;#x62D2;&amp;#x7EDD;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#x3002;&amp;#x8FD9;&amp;#x79CD;&amp;#x7B56;&amp;#x7565;&amp;#x9002;&amp;#x7528;&amp;#x4E8E;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x8D1F;&amp;#x8F7D;&amp;#x6BD4;&amp;#x8F83;&amp;#x8F7B;&amp;#xFF0C;&amp;#x800C;&amp;#x4E14;&amp;#x6267;&amp;#x884C;&amp;#x65F6;&amp;#x95F4;&amp;#x77ED;&amp;#x6682;&amp;#x7684;&amp;#x60C5;&amp;#x51B5;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;CallerRunsPolicy&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;implements&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;RejectedExecutionHandler&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;CallerRunsPolicy&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt; &lt;/span&gt;{ }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;rejectedExecution&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(Runnable r, ThreadPoolExecutor e)&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt; (!e.isShutdown()) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            r.run();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h4 id=&quot;DiscardPolicy&quot;&gt;&lt;a href=&quot;#DiscardPolicy&quot; class=&quot;headerlink&quot; title=&quot;DiscardPolicy&quot;&gt;&lt;/a&gt;DiscardPolicy&lt;/h4&gt;&lt;p&gt;&lt;code&gt;DiscardPolicy&lt;/code&gt;&amp;#x62D2;&amp;#x7EDD;&amp;#x7B56;&amp;#x7565;&amp;#x4F1A;&amp;#x9ED8;&amp;#x9ED8;&amp;#x5730;&amp;#x4E22;&amp;#x5F03;&amp;#x65E0;&amp;#x6CD5;&amp;#x5904;&amp;#x7406;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#xFF0C;&amp;#x4E0D;&amp;#x63D0;&amp;#x4F9B;&amp;#x4EFB;&amp;#x4F55;&amp;#x53CD;&amp;#x9988;&amp;#x3002;&amp;#x5982;&amp;#x679C;&amp;#x4EFB;&amp;#x52A1;&amp;#x961F;&amp;#x5217;&amp;#x5DF2;&amp;#x6EE1;&amp;#xFF0C;&amp;#x65B0;&amp;#x63D0;&amp;#x4EA4;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#x4F1A;&amp;#x88AB;&amp;#x76F4;&amp;#x63A5;&amp;#x4E22;&amp;#x5F03;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;DiscardPolicy&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;implements&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;RejectedExecutionHandler&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;DiscardPolicy&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt; &lt;/span&gt;{ }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;rejectedExecution&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(Runnable r, ThreadPoolExecutor e)&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h4 id=&quot;DiscardOldestPolicy&quot;&gt;&lt;a href=&quot;#DiscardOldestPolicy&quot; class=&quot;headerlink&quot; title=&quot;DiscardOldestPolicy&quot;&gt;&lt;/a&gt;DiscardOldestPolicy&lt;/h4&gt;&lt;p&gt;&lt;code&gt;DiscardOldestPolicy&lt;/code&gt;&amp;#x62D2;&amp;#x7EDD;&amp;#x7B56;&amp;#x7565;&amp;#x4F1A;&amp;#x4E22;&amp;#x5F03;&amp;#x961F;&amp;#x5217;&amp;#x4E2D;&amp;#x6700;&amp;#x65E9;&amp;#x88AB;&amp;#x63D0;&amp;#x4EA4;&amp;#x4F46;&amp;#x5C1A;&amp;#x672A;&amp;#x88AB;&amp;#x6267;&amp;#x884C;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#xFF0C;&amp;#x7136;&amp;#x540E;&amp;#x5C06;&amp;#x65B0;&amp;#x4EFB;&amp;#x52A1;&amp;#x52A0;&amp;#x5165;&amp;#x961F;&amp;#x5217;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;DiscardOldestPolicy&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;implements&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;RejectedExecutionHandler&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;DiscardOldestPolicy&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt; &lt;/span&gt;{ }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;rejectedExecution&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(Runnable r, ThreadPoolExecutor e)&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;if&lt;/span&gt; (!e.isShutdown()) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            e.getQueue().poll();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            e.execute(r);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x4E5F;&amp;#x53EF;&amp;#x4EE5;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;setRejectedExecutionHandler()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x8BBE;&amp;#x7F6E;&amp;#x62D2;&amp;#x7EDD;&amp;#x7B56;&amp;#x7565;&amp;#xFF0C;&amp;#x5904;&amp;#x7406;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x65E0;&amp;#x6CD5;&amp;#x63A5;&amp;#x53D7;&amp;#x65B0;&amp;#x4EFB;&amp;#x52A1;&amp;#x65F6;&amp;#x7684;&amp;#x884C;&amp;#x4E3A;&amp;#x3002;&amp;#x6216;&amp;#x8005;&amp;#x5B9E;&amp;#x73B0;&lt;code&gt;RejectedExecutionHandler&lt;/code&gt;&amp;#x63A5;&amp;#x53E3;&amp;#x5B9A;&amp;#x4E49;&amp;#x81EA;&amp;#x5DF1;&amp;#x7684;&amp;#x7B56;&amp;#x7565;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x56DB;&amp;#x79CD;&amp;#x5185;&amp;#x7F6E;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7C7B;&amp;#x578B;&quot;&gt;&lt;a href=&quot;#&amp;#x56DB;&amp;#x79CD;&amp;#x5185;&amp;#x7F6E;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7C7B;&amp;#x578B;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x56DB;&amp;#x79CD;&amp;#x5185;&amp;#x7F6E;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7C7B;&amp;#x578B;&quot;&gt;&lt;/a&gt;&amp;#x56DB;&amp;#x79CD;&amp;#x5185;&amp;#x7F6E;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7C7B;&amp;#x578B;&lt;/h2&gt;&lt;p&gt;&amp;#x5728;&lt;code&gt;Executors&lt;/code&gt;&amp;#x7C7B;&amp;#x4E2D;&amp;#xFF0C;&amp;#x63D0;&amp;#x4F9B;&amp;#x4E86;&amp;#x56DB;&amp;#x79CD;&amp;#x5185;&amp;#x7F6E;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7C7B;&amp;#x578B;&amp;#xFF0C;&amp;#x5206;&amp;#x522B;&amp;#x662F;&lt;code&gt;CachedThreadPool&lt;/code&gt;&amp;#x3001;&lt;code&gt;FixedThreadPool&lt;/code&gt;&amp;#x3001;&lt;code&gt;ScheduledThreadPool&lt;/code&gt;&amp;#x548C;&lt;code&gt;SingleThreadExecutor&lt;/code&gt;&amp;#x3002;&amp;#x6BCF;&amp;#x79CD;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7C7B;&amp;#x578B;&amp;#x90FD;&amp;#x9002;&amp;#x7528;&amp;#x4E8E;&amp;#x4E0D;&amp;#x540C;&amp;#x7684;&amp;#x573A;&amp;#x666F;&amp;#xFF0C;&amp;#x4E0B;&amp;#x9762;&amp;#x6211;&amp;#x4EEC;&amp;#x5C06;&amp;#x8BE6;&amp;#x7EC6;&amp;#x4ECB;&amp;#x7ECD;&amp;#x6BCF;&amp;#x4E00;&amp;#x79CD;&amp;#x7C7B;&amp;#x578B;&amp;#x7684;&amp;#x7279;&amp;#x70B9;&amp;#x548C;&amp;#x9002;&amp;#x7528;&amp;#x60C5;&amp;#x51B5;&amp;#x3002;&lt;/p&gt;
&lt;h3 id=&quot;CachedThreadPool&quot;&gt;&lt;a href=&quot;#CachedThreadPool&quot; class=&quot;headerlink&quot; title=&quot;CachedThreadPool&quot;&gt;&lt;/a&gt;CachedThreadPool&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x7279;&amp;#x70B9;&amp;#xFF1A;&lt;/strong&gt;&amp;#x52A8;&amp;#x6001;&amp;#x589E;&amp;#x52A0;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6570;&amp;#x91CF;&amp;#xFF0C;&amp;#x5982;&amp;#x679C;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x5F53;&amp;#x524D;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6570;&amp;#x8D85;&amp;#x8FC7;&amp;#x4E86;&amp;#x5904;&amp;#x7406;&amp;#x4EFB;&amp;#x52A1;&amp;#x6240;&amp;#x9700;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6570;&amp;#xFF0C;&amp;#x591A;&amp;#x4F59;&amp;#x7684;&amp;#x7A7A;&amp;#x95F2;&amp;#x7EBF;&amp;#x7A0B;&amp;#x4F1A;&amp;#x5728;60&amp;#x79D2;&amp;#x540E;&amp;#x88AB;&amp;#x7EC8;&amp;#x6B62;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x9002;&amp;#x7528;&amp;#x573A;&amp;#x666F;&amp;#xFF1A;&lt;/strong&gt;&amp;#x5904;&amp;#x7406;&amp;#x5927;&amp;#x91CF;&amp;#x77ED;&amp;#x65F6;&amp;#x4EFB;&amp;#x52A1;&amp;#xFF0C;&amp;#x4EFB;&amp;#x52A1;&amp;#x6267;&amp;#x884C;&amp;#x65F6;&amp;#x95F4;&amp;#x8F83;&amp;#x77ED;&amp;#xFF0C;&amp;#x4E14;&amp;#x4EFB;&amp;#x52A1;&amp;#x91CF;&amp;#x4E0D;&amp;#x786E;&amp;#x5B9A;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;FixedThreadPool&quot;&gt;&lt;a href=&quot;#FixedThreadPool&quot; class=&quot;headerlink&quot; title=&quot;FixedThreadPool&quot;&gt;&lt;/a&gt;FixedThreadPool&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x7279;&amp;#x70B9;&amp;#xFF1A;&lt;/strong&gt;&amp;#x56FA;&amp;#x5B9A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6570;&amp;#x91CF;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#xFF0C;&amp;#x5F53;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x4E2D;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x8FBE;&amp;#x5230;&amp;#x6838;&amp;#x5FC3;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6570;&amp;#x65F6;&amp;#xFF0C;&amp;#x65B0;&amp;#x4EFB;&amp;#x52A1;&amp;#x5C06;&amp;#x5728;&amp;#x961F;&amp;#x5217;&amp;#x4E2D;&amp;#x7B49;&amp;#x5F85;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x9002;&amp;#x7528;&amp;#x573A;&amp;#x666F;&amp;#xFF1A;&lt;/strong&gt;&amp;#x9002;&amp;#x7528;&amp;#x4E8E;&amp;#x5E76;&amp;#x53D1;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6570;&amp;#x6709;&amp;#x9650;&amp;#x7684;&amp;#x60C5;&amp;#x51B5;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x63A7;&amp;#x5236;&amp;#x8D44;&amp;#x6E90;&amp;#x7684;&amp;#x6700;&amp;#x5927;&amp;#x5E76;&amp;#x53D1;&amp;#x6570;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;ScheduledThreadPool&quot;&gt;&lt;a href=&quot;#ScheduledThreadPool&quot; class=&quot;headerlink&quot; title=&quot;ScheduledThreadPool&quot;&gt;&lt;/a&gt;ScheduledThreadPool&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x7279;&amp;#x70B9;&amp;#xFF1A;&lt;/strong&gt;&amp;#x7C7B;&amp;#x4F3C;&amp;#x4E8E;&lt;code&gt;FixedThreadPool&lt;/code&gt;&amp;#xFF0C;&amp;#x4F46;&amp;#x589E;&amp;#x52A0;&amp;#x4E86;&amp;#x5B9A;&amp;#x65F6;&amp;#x6267;&amp;#x884C;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x529F;&amp;#x80FD;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x5728;&amp;#x6307;&amp;#x5B9A;&amp;#x65F6;&amp;#x95F4;&amp;#x6267;&amp;#x884C;&amp;#x4EFB;&amp;#x52A1;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x9002;&amp;#x7528;&amp;#x573A;&amp;#x666F;&amp;#xFF1A;&lt;/strong&gt;&amp;#x9002;&amp;#x7528;&amp;#x4E8E;&amp;#x9700;&amp;#x8981;&amp;#x5B9A;&amp;#x671F;&amp;#x6267;&amp;#x884C;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x573A;&amp;#x666F;&amp;#xFF0C;&amp;#x4F8B;&amp;#x5982;&amp;#x5B9A;&amp;#x65F6;&amp;#x4EFB;&amp;#x52A1;&amp;#x3001;&amp;#x5468;&amp;#x671F;&amp;#x6027;&amp;#x6570;&amp;#x636E;&amp;#x540C;&amp;#x6B65;&amp;#x7B49;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;SingleThreadExecutor&quot;&gt;&lt;a href=&quot;#SingleThreadExecutor&quot; class=&quot;headerlink&quot; title=&quot;SingleThreadExecutor&quot;&gt;&lt;/a&gt;SingleThreadExecutor&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x7279;&amp;#x70B9;&amp;#xFF1A;&lt;/strong&gt;&amp;#x53EA;&amp;#x6709;&amp;#x4E00;&amp;#x4E2A;&amp;#x6838;&amp;#x5FC3;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#xFF0C;&amp;#x786E;&amp;#x4FDD;&amp;#x6240;&amp;#x6709;&amp;#x4EFB;&amp;#x52A1;&amp;#x6309;&amp;#x7167;&amp;#x6307;&amp;#x5B9A;&amp;#x987A;&amp;#x5E8F;&amp;#x6267;&amp;#x884C;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x9002;&amp;#x7528;&amp;#x573A;&amp;#x666F;&amp;#xFF1A;&lt;/strong&gt;&amp;#x9002;&amp;#x7528;&amp;#x4E8E;&amp;#x9700;&amp;#x8981;&amp;#x987A;&amp;#x5E8F;&amp;#x6267;&amp;#x884C;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x573A;&amp;#x666F;&amp;#xFF0C;&amp;#x4F8B;&amp;#x5982;&amp;#x4EFB;&amp;#x52A1;&amp;#x4E4B;&amp;#x95F4;&amp;#x6709;&amp;#x4F9D;&amp;#x8D56;&amp;#x5173;&amp;#x7CFB;&amp;#x7684;&amp;#x60C5;&amp;#x51B5;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;&amp;#x963B;&amp;#x585E;&amp;#x961F;&amp;#x5217;&amp;#x7684;&amp;#x9009;&amp;#x62E9;&amp;#x4E0E;&amp;#x4F18;&amp;#x5316;&quot;&gt;&lt;a href=&quot;#&amp;#x963B;&amp;#x585E;&amp;#x961F;&amp;#x5217;&amp;#x7684;&amp;#x9009;&amp;#x62E9;&amp;#x4E0E;&amp;#x4F18;&amp;#x5316;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x963B;&amp;#x585E;&amp;#x961F;&amp;#x5217;&amp;#x7684;&amp;#x9009;&amp;#x62E9;&amp;#x4E0E;&amp;#x4F18;&amp;#x5316;&quot;&gt;&lt;/a&gt;&amp;#x963B;&amp;#x585E;&amp;#x961F;&amp;#x5217;&amp;#x7684;&amp;#x9009;&amp;#x62E9;&amp;#x4E0E;&amp;#x4F18;&amp;#x5316;&lt;/h2&gt;&lt;p&gt;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x4E2D;&amp;#x7684;&amp;#x963B;&amp;#x585E;&amp;#x961F;&amp;#x5217;&amp;#x5BF9;&amp;#x4E8E;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x5B58;&amp;#x50A8;&amp;#x548C;&amp;#x8C03;&amp;#x5EA6;&amp;#x8D77;&amp;#x7740;&amp;#x91CD;&amp;#x8981;&amp;#x4F5C;&amp;#x7528;&amp;#x3002;&amp;#x4E0D;&amp;#x540C;&amp;#x7684;&amp;#x963B;&amp;#x585E;&amp;#x961F;&amp;#x5217;&amp;#x5B9E;&amp;#x73B0;&amp;#x5BF9;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x6027;&amp;#x80FD;&amp;#x548C;&amp;#x884C;&amp;#x4E3A;&amp;#x4EA7;&amp;#x751F;&amp;#x76F4;&amp;#x63A5;&amp;#x5F71;&amp;#x54CD;&amp;#x3002;&amp;#x4EE5;&amp;#x4E0B;&amp;#x662F;&amp;#x4E00;&amp;#x4E9B;&amp;#x5E38;&amp;#x89C1;&amp;#x7684;&amp;#x963B;&amp;#x585E;&amp;#x961F;&amp;#x5217;&amp;#x4EE5;&amp;#x53CA;&amp;#x5B83;&amp;#x4EEC;&amp;#x7684;&amp;#x9009;&amp;#x62E9;&amp;#x4E0E;&amp;#x4F18;&amp;#x5316;&amp;#x5EFA;&amp;#x8BAE;&amp;#x3002;&lt;/p&gt;
&lt;h3 id=&quot;LinkedBlockingQueue&quot;&gt;&lt;a href=&quot;#LinkedBlockingQueue&quot; class=&quot;headerlink&quot; title=&quot;LinkedBlockingQueue&quot;&gt;&lt;/a&gt;LinkedBlockingQueue&lt;/h3&gt;&lt;p&gt;&lt;code&gt;LinkedBlockingQueue&lt;/code&gt;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x57FA;&amp;#x4E8E;&amp;#x94FE;&amp;#x8868;&amp;#x7684;&amp;#x963B;&amp;#x585E;&amp;#x961F;&amp;#x5217;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x9009;&amp;#x62E9;&amp;#x4E0D;&amp;#x8BBE;&amp;#x7F6E;&amp;#x5BB9;&amp;#x91CF;&amp;#xFF08;&amp;#x9ED8;&amp;#x8BA4;&amp;#x4E3A;&lt;code&gt;Integer.MAX_VALUE&lt;/code&gt;&amp;#xFF09;&amp;#x3002;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x4F18;&amp;#x52BF;&amp;#xFF1A;&lt;/strong&gt; &amp;#x5BF9;&amp;#x4E8E;&amp;#x5927;&amp;#x591A;&amp;#x6570;&amp;#x573A;&amp;#x666F;&amp;#x6765;&amp;#x8BF4;&amp;#xFF0C;&amp;#x5177;&amp;#x6709;&amp;#x8F83;&amp;#x9AD8;&amp;#x7684;&amp;#x541E;&amp;#x5410;&amp;#x91CF;&amp;#x548C;&amp;#x6027;&amp;#x80FD;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x6CE8;&amp;#x610F;&amp;#xFF1A;&lt;/strong&gt; &amp;#x5982;&amp;#x679C;&amp;#x4EFB;&amp;#x52A1;&amp;#x63D0;&amp;#x4EA4;&amp;#x901F;&amp;#x5EA6;&amp;#x9AD8;&amp;#x4E8E;&amp;#x7EBF;&amp;#x7A0B;&amp;#x5904;&amp;#x7406;&amp;#x901F;&amp;#x5EA6;&amp;#xFF0C;&amp;#x961F;&amp;#x5217;&amp;#x53EF;&amp;#x80FD;&amp;#x4F1A;&amp;#x65E0;&amp;#x9650;&amp;#x5236;&amp;#x589E;&amp;#x957F;&amp;#xFF0C;&amp;#x5360;&amp;#x7528;&amp;#x5927;&amp;#x91CF;&amp;#x5185;&amp;#x5B58;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;ArrayBlockingQueue&quot;&gt;&lt;a href=&quot;#ArrayBlockingQueue&quot; class=&quot;headerlink&quot; title=&quot;ArrayBlockingQueue&quot;&gt;&lt;/a&gt;ArrayBlockingQueue&lt;/h3&gt;&lt;p&gt;&lt;code&gt;ArrayBlockingQueue&lt;/code&gt;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x57FA;&amp;#x4E8E;&amp;#x6570;&amp;#x7EC4;&amp;#x7684;&amp;#x6709;&amp;#x754C;&amp;#x963B;&amp;#x585E;&amp;#x961F;&amp;#x5217;&amp;#xFF0C;&amp;#x5FC5;&amp;#x987B;&amp;#x8BBE;&amp;#x7F6E;&amp;#x5BB9;&amp;#x91CF;&amp;#x3002;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x4F18;&amp;#x52BF;&amp;#xFF1A;&lt;/strong&gt; &amp;#x80FD;&amp;#x591F;&amp;#x9650;&amp;#x5236;&amp;#x961F;&amp;#x5217;&amp;#x7684;&amp;#x6700;&amp;#x5927;&amp;#x5BB9;&amp;#x91CF;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x65E0;&amp;#x9650;&amp;#x5236;&amp;#x589E;&amp;#x957F;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x6CE8;&amp;#x610F;&amp;#xFF1A;&lt;/strong&gt; &amp;#x9700;&amp;#x8981;&amp;#x6839;&amp;#x636E;&amp;#x5E94;&amp;#x7528;&amp;#x573A;&amp;#x666F;&amp;#x5408;&amp;#x7406;&amp;#x8BBE;&amp;#x7F6E;&amp;#x961F;&amp;#x5217;&amp;#x5BB9;&amp;#x91CF;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x592A;&amp;#x5C0F;&amp;#x5BFC;&amp;#x81F4;&amp;#x6027;&amp;#x80FD;&amp;#x74F6;&amp;#x9888;&amp;#xFF0C;&amp;#x592A;&amp;#x5927;&amp;#x5219;&amp;#x53EF;&amp;#x80FD;&amp;#x5360;&amp;#x7528;&amp;#x8FC7;&amp;#x591A;&amp;#x5185;&amp;#x5B58;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;SynchronousQueue&quot;&gt;&lt;a href=&quot;#SynchronousQueue&quot; class=&quot;headerlink&quot; title=&quot;SynchronousQueue&quot;&gt;&lt;/a&gt;SynchronousQueue&lt;/h3&gt;&lt;p&gt;&lt;code&gt;SynchronousQueue&lt;/code&gt;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x6CA1;&amp;#x6709;&amp;#x5BB9;&amp;#x91CF;&amp;#x7684;&amp;#x963B;&amp;#x585E;&amp;#x961F;&amp;#x5217;&amp;#xFF0C;&amp;#x6BCF;&amp;#x4E2A;&amp;#x63D2;&amp;#x5165;&amp;#x64CD;&amp;#x4F5C;&amp;#x5FC5;&amp;#x987B;&amp;#x7B49;&amp;#x5F85;&amp;#x53E6;&amp;#x4E00;&amp;#x4E2A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7684;&amp;#x79FB;&amp;#x9664;&amp;#x64CD;&amp;#x4F5C;&amp;#x3002;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x4F18;&amp;#x52BF;&amp;#xFF1A;&lt;/strong&gt; &amp;#x9AD8;&amp;#x6548;&amp;#x5730;&amp;#x4F20;&amp;#x9012;&amp;#x4EFB;&amp;#x52A1;&amp;#xFF0C;&amp;#x9002;&amp;#x7528;&amp;#x4E8E;&amp;#x9AD8;&amp;#x5E76;&amp;#x53D1;&amp;#x573A;&amp;#x666F;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x6CE8;&amp;#x610F;&amp;#xFF1A;&lt;/strong&gt; &amp;#x5F53;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x6700;&amp;#x5927;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6570;&amp;#x5C0F;&amp;#x4E8E;&amp;#x961F;&amp;#x5217;&amp;#x5BB9;&amp;#x91CF;&amp;#x65F6;&amp;#xFF0C;&amp;#x53EF;&amp;#x80FD;&amp;#x5BFC;&amp;#x81F4;&amp;#x4EFB;&amp;#x52A1;&amp;#x88AB;&amp;#x76F4;&amp;#x63A5;&amp;#x62D2;&amp;#x7EDD;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;PriorityBlockingQueue&quot;&gt;&lt;a href=&quot;#PriorityBlockingQueue&quot; class=&quot;headerlink&quot; title=&quot;PriorityBlockingQueue&quot;&gt;&lt;/a&gt;PriorityBlockingQueue&lt;/h3&gt;&lt;p&gt;&lt;code&gt;PriorityBlockingQueue&lt;/code&gt;&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x652F;&amp;#x6301;&amp;#x4F18;&amp;#x5148;&amp;#x7EA7;&amp;#x7684;&amp;#x65E0;&amp;#x754C;&amp;#x963B;&amp;#x585E;&amp;#x961F;&amp;#x5217;&amp;#x3002;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x4F18;&amp;#x52BF;&amp;#xFF1A;&lt;/strong&gt; &amp;#x5177;&amp;#x5907;&amp;#x4EFB;&amp;#x52A1;&amp;#x4F18;&amp;#x5148;&amp;#x7EA7;&amp;#x7279;&amp;#x6027;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x5B9E;&amp;#x73B0;&amp;#x4EFB;&amp;#x52A1;&amp;#x6309;&amp;#x7167;&amp;#x4F18;&amp;#x5148;&amp;#x7EA7;&amp;#x987A;&amp;#x5E8F;&amp;#x6267;&amp;#x884C;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x6CE8;&amp;#x610F;&amp;#xFF1A;&lt;/strong&gt; &amp;#x9700;&amp;#x8981;&amp;#x786E;&amp;#x4FDD;&amp;#x4EFB;&amp;#x52A1;&amp;#x5B9E;&amp;#x73B0;&amp;#x4E86;&lt;code&gt;Comparable&lt;/code&gt;&amp;#x63A5;&amp;#x53E3;&amp;#x6216;&amp;#x63D0;&amp;#x4F9B;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x6BD4;&amp;#x8F83;&amp;#x5668;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&quot;&gt;&lt;a href=&quot;#&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&quot;&gt;&lt;/a&gt;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&lt;/h2&gt;&lt;p&gt;&amp;#x9664;&amp;#x4E86;&amp;#x4F7F;&amp;#x7528;&amp;#x5185;&amp;#x7F6E;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7C7B;&amp;#x578B;&amp;#x5916;&amp;#xFF0C;&lt;code&gt;ThreadPoolExecutor&lt;/code&gt;&amp;#x8FD8;&amp;#x5141;&amp;#x8BB8;&amp;#x5F00;&amp;#x53D1;&amp;#x8005;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#xFF0C;&amp;#x4EE5;&amp;#x6EE1;&amp;#x8DB3;&amp;#x7279;&amp;#x5B9A;&amp;#x7684;&amp;#x4E1A;&amp;#x52A1;&amp;#x9700;&amp;#x6C42;&amp;#x3002;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x6B65;&amp;#x9AA4;&amp;#x5982;&amp;#x4E0B;&amp;#xFF1A;&lt;/p&gt;
&lt;h3 id=&quot;&amp;#x521B;&amp;#x5EFA;ThreadPoolExecutor&amp;#x5B9E;&amp;#x4F8B;&quot;&gt;&lt;a href=&quot;#&amp;#x521B;&amp;#x5EFA;ThreadPoolExecutor&amp;#x5B9E;&amp;#x4F8B;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x521B;&amp;#x5EFA;ThreadPoolExecutor&amp;#x5B9E;&amp;#x4F8B;&quot;&gt;&lt;/a&gt;&amp;#x521B;&amp;#x5EFA;ThreadPoolExecutor&amp;#x5B9E;&amp;#x4F8B;&lt;/h3&gt;&lt;p&gt;&amp;#x901A;&amp;#x8FC7;&lt;code&gt;ThreadPoolExecutor&lt;/code&gt;&amp;#x7684;&amp;#x6784;&amp;#x9020;&amp;#x65B9;&amp;#x6CD5;&amp;#xFF0C;&amp;#x8BBE;&amp;#x7F6E;&amp;#x6838;&amp;#x5FC3;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6570;&amp;#x3001;&amp;#x6700;&amp;#x5927;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6570;&amp;#x3001;&amp;#x963B;&amp;#x585E;&amp;#x961F;&amp;#x5217;&amp;#x7B49;&amp;#x53C2;&amp;#x6570;&amp;#x6765;&amp;#x521B;&amp;#x5EFA;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x5B9E;&amp;#x4F8B;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x521B;&amp;#x5EFA;&amp;#x4E00;&amp;#x4E2A;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;ThreadPoolExecutor customThreadPool = &lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt; ThreadPoolExecutor(&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    corePoolSize,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    maximumPoolSize,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    keepAliveTime,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    timeUnit,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    workQueue,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    threadFactory,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    handler&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;);&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h3 id=&quot;&amp;#x914D;&amp;#x7F6E;ThreadFactory&quot;&gt;&lt;a href=&quot;#&amp;#x914D;&amp;#x7F6E;ThreadFactory&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x914D;&amp;#x7F6E;ThreadFactory&quot;&gt;&lt;/a&gt;&amp;#x914D;&amp;#x7F6E;ThreadFactory&lt;/h3&gt;&lt;p&gt;&amp;#x901A;&amp;#x8FC7;&lt;code&gt;setThreadFactory()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x914D;&amp;#x7F6E;&amp;#x7EBF;&amp;#x7A0B;&amp;#x5DE5;&amp;#x5382;&amp;#xFF0C;&amp;#x7528;&amp;#x4E8E;&amp;#x521B;&amp;#x5EFA;&amp;#x65B0;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x3002;&amp;#x53EF;&amp;#x4EE5;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;Executors.defaultThreadFactory()&lt;/code&gt;&amp;#x521B;&amp;#x5EFA;&amp;#x9ED8;&amp;#x8BA4;&amp;#x7EBF;&amp;#x7A0B;&amp;#x5DE5;&amp;#x5382;&amp;#xFF0C;&amp;#x4E5F;&amp;#x53EF;&amp;#x4EE5;&amp;#x5B9E;&amp;#x73B0;&lt;code&gt;ThreadFactory&lt;/code&gt;&amp;#x63A5;&amp;#x53E3;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x7EBF;&amp;#x7A0B;&amp;#x521B;&amp;#x5EFA;&amp;#x8FC7;&amp;#x7A0B;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x7EBF;&amp;#x7A0B;&amp;#x5DE5;&amp;#x5382;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;ThreadFactory customThreadFactory = &lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt; ThreadFactory() {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;final&lt;/span&gt; AtomicInteger threadNumber = &lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt; AtomicInteger(&lt;span class=&quot;number&quot;&gt;1&lt;/span&gt;);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;meta&quot;&gt;@Override&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt; Thread &lt;span class=&quot;title&quot;&gt;newThread&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(Runnable r)&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt; Thread(r, &lt;span class=&quot;string&quot;&gt;&amp;quot;CustomThread-&amp;quot;&lt;/span&gt; + threadNumber.getAndIncrement());&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;};&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;customThreadPool.setThreadFactory(customThreadFactory);&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h3 id=&quot;&amp;#x914D;&amp;#x7F6E;Handler&quot;&gt;&lt;a href=&quot;#&amp;#x914D;&amp;#x7F6E;Handler&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x914D;&amp;#x7F6E;Handler&quot;&gt;&lt;/a&gt;&amp;#x914D;&amp;#x7F6E;Handler&lt;/h3&gt;&lt;p&gt;&amp;#x901A;&amp;#x8FC7;&lt;code&gt;setThreadFactory()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x914D;&amp;#x7F6E;&lt;code&gt;RejectedExecutionHandler&lt;/code&gt;&amp;#xFF0C;&amp;#x7528;&amp;#x4E8E;&amp;#x5904;&amp;#x7406;&amp;#x88AB;&amp;#x62D2;&amp;#x7EDD;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#x3002;&amp;#x53EF;&amp;#x4EE5;&amp;#x9009;&amp;#x62E9;&amp;#x4F7F;&amp;#x7528;&amp;#x9884;&amp;#x5B9A;&amp;#x4E49;&amp;#x7684;&amp;#x5904;&amp;#x7406;&amp;#x5668;&amp;#xFF0C;&amp;#x5982;&lt;code&gt;AbortPolicy&lt;/code&gt;&amp;#x3001;&lt;code&gt;CallerRunsPolicy&lt;/code&gt;&amp;#x7B49;&amp;#xFF0C;&amp;#x4E5F;&amp;#x53EF;&amp;#x4EE5;&amp;#x5B9E;&amp;#x73B0;&lt;code&gt;RejectedExecutionHandler&lt;/code&gt;&amp;#x63A5;&amp;#x53E3;&amp;#x5B9A;&amp;#x4E49;&amp;#x81EA;&amp;#x5DF1;&amp;#x7684;&amp;#x5904;&amp;#x7406;&amp;#x903B;&amp;#x8F91;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x62D2;&amp;#x7EDD;&amp;#x7B56;&amp;#x7565;&amp;#x5904;&amp;#x7406;&amp;#x5668;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;RejectedExecutionHandler customHandler = (r, executor) -&amp;gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x5904;&amp;#x7406;&amp;#x88AB;&amp;#x62D2;&amp;#x7EDD;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#xFF0C;&amp;#x4F8B;&amp;#x5982;&amp;#x8BB0;&amp;#x5F55;&amp;#x65E5;&amp;#x5FD7;&amp;#x6216;&amp;#x5176;&amp;#x4ED6;&amp;#x5904;&amp;#x7406;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    System.out.println(&lt;span class=&quot;string&quot;&gt;&amp;quot;Task Rejected: &amp;quot;&lt;/span&gt; + r.toString());&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;};&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;customThreadPool.setRejectedExecutionHandler(customHandler);&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h3 id=&quot;&amp;#x63D0;&amp;#x4EA4;&amp;#x4EFB;&amp;#x52A1;&quot;&gt;&lt;a href=&quot;#&amp;#x63D0;&amp;#x4EA4;&amp;#x4EFB;&amp;#x52A1;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x63D0;&amp;#x4EA4;&amp;#x4EFB;&amp;#x52A1;&quot;&gt;&lt;/a&gt;&amp;#x63D0;&amp;#x4EA4;&amp;#x4EFB;&amp;#x52A1;&lt;/h3&gt;&lt;p&gt;&amp;#x901A;&amp;#x8FC7;&amp;#x8C03;&amp;#x7528;&lt;code&gt;execute()&lt;/code&gt;&amp;#x6216;&lt;code&gt;submit()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x5C06;&amp;#x4EFB;&amp;#x52A1;&amp;#x63D0;&amp;#x4EA4;&amp;#x7ED9;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x6267;&amp;#x884C;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;customThreadPool.execute(() -&amp;gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x6267;&amp;#x884C;&amp;#x4EFB;&amp;#x52A1;&amp;#x903B;&amp;#x8F91;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;});&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h2 id=&quot;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&quot;&gt;&lt;a href=&quot;#&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&quot;&gt;&lt;/a&gt;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&lt;/h2&gt;&lt;p&gt;&amp;#x5728;&amp;#x4F7F;&amp;#x7528;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x65F6;&amp;#xFF0C;&amp;#x4EE5;&amp;#x4E0B;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&amp;#x53EF;&amp;#x4EE5;&amp;#x5145;&amp;#x5206;&amp;#x53D1;&amp;#x6325;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x4F18;&amp;#x52BF;&amp;#xFF0C;&amp;#x63D0;&amp;#x9AD8;&amp;#x5E94;&amp;#x7528;&amp;#x6027;&amp;#x80FD;&amp;#x548C;&amp;#x7A33;&amp;#x5B9A;&amp;#x6027;&amp;#x3002;&lt;/p&gt;
&lt;h3 id=&quot;&amp;#x5408;&amp;#x7406;&amp;#x8BBE;&amp;#x7F6E;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x53C2;&amp;#x6570;&quot;&gt;&lt;a href=&quot;#&amp;#x5408;&amp;#x7406;&amp;#x8BBE;&amp;#x7F6E;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x53C2;&amp;#x6570;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5408;&amp;#x7406;&amp;#x8BBE;&amp;#x7F6E;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x53C2;&amp;#x6570;&quot;&gt;&lt;/a&gt;&amp;#x5408;&amp;#x7406;&amp;#x8BBE;&amp;#x7F6E;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x53C2;&amp;#x6570;&lt;/h3&gt;&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x6838;&amp;#x5FC3;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6570;&amp;#xFF08;corePoolSize&amp;#xFF09;&amp;#xFF1A;&lt;/strong&gt; &amp;#x6839;&amp;#x636E;&amp;#x5E94;&amp;#x7528;&amp;#x7684;&amp;#x5E76;&amp;#x53D1;&amp;#x91CF;&amp;#x548C;&amp;#x6027;&amp;#x80FD;&amp;#x9700;&amp;#x6C42;&amp;#x6765;&amp;#x8BBE;&amp;#x7F6E;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x8BBE;&amp;#x7F6E;&amp;#x8FC7;&amp;#x9AD8;&amp;#x6216;&amp;#x8FC7;&amp;#x4F4E;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x6700;&amp;#x5927;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6570;&amp;#xFF08;maximumPoolSize&amp;#xFF09;&amp;#xFF1A;&lt;/strong&gt; &amp;#x6839;&amp;#x636E;&amp;#x5E94;&amp;#x7528;&amp;#x7684;&amp;#x5E76;&amp;#x53D1;&amp;#x5CF0;&amp;#x503C;&amp;#x6765;&amp;#x8BBE;&amp;#x7F6E;&amp;#xFF0C;&amp;#x4E0D;&amp;#x8981;&amp;#x8BBE;&amp;#x7F6E;&amp;#x8FC7;&amp;#x591A;&amp;#xFF0C;&amp;#x4EE5;&amp;#x514D;&amp;#x5360;&amp;#x7528;&amp;#x8FC7;&amp;#x591A;&amp;#x7CFB;&amp;#x7EDF;&amp;#x8D44;&amp;#x6E90;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x963B;&amp;#x585E;&amp;#x961F;&amp;#x5217;&amp;#xFF08;workQueue&amp;#xFF09;&amp;#xFF1A;&lt;/strong&gt; &amp;#x9009;&amp;#x62E9;&amp;#x5408;&amp;#x9002;&amp;#x7684;&amp;#x961F;&amp;#x5217;&amp;#x7C7B;&amp;#x578B;&amp;#xFF0C;&amp;#x5982;&lt;code&gt;LinkedBlockingQueue&lt;/code&gt;&amp;#x6216;&lt;code&gt;ArrayBlockingQueue&lt;/code&gt;&amp;#xFF0C;&amp;#x4EE5;&amp;#x53CA;&amp;#x5408;&amp;#x9002;&amp;#x7684;&amp;#x961F;&amp;#x5217;&amp;#x5BB9;&amp;#x91CF;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x961F;&amp;#x5217;&amp;#x6EA2;&amp;#x51FA;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x7EBF;&amp;#x7A0B;&amp;#x5B58;&amp;#x6D3B;&amp;#x65F6;&amp;#x95F4;&amp;#xFF08;keepAliveTime&amp;#xFF09;&amp;#xFF1A;&lt;/strong&gt; &amp;#x914D;&amp;#x5408;&amp;#x963B;&amp;#x585E;&amp;#x961F;&amp;#x5217;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x4E2D;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6570;&amp;#x91CF;&amp;#x957F;&amp;#x65F6;&amp;#x95F4;&amp;#x7EF4;&amp;#x6301;&amp;#x5728;&amp;#x6838;&amp;#x5FC3;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6570;&amp;#x4E4B;&amp;#x4E0A;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;&amp;#x68C0;&amp;#x6D4B;&amp;#x548C;&amp;#x5904;&amp;#x7406;&amp;#x5F02;&amp;#x5E38;&quot;&gt;&lt;a href=&quot;#&amp;#x68C0;&amp;#x6D4B;&amp;#x548C;&amp;#x5904;&amp;#x7406;&amp;#x5F02;&amp;#x5E38;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x68C0;&amp;#x6D4B;&amp;#x548C;&amp;#x5904;&amp;#x7406;&amp;#x5F02;&amp;#x5E38;&quot;&gt;&lt;/a&gt;&amp;#x68C0;&amp;#x6D4B;&amp;#x548C;&amp;#x5904;&amp;#x7406;&amp;#x5F02;&amp;#x5E38;&lt;/h3&gt;&lt;p&gt;&amp;#x5728;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&lt;code&gt;run&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x4E2D;&amp;#x8981;&amp;#x6CE8;&amp;#x610F;&amp;#x6355;&amp;#x83B7;&amp;#x5F02;&amp;#x5E38;&amp;#xFF0C;&amp;#x4EE5;&amp;#x907F;&amp;#x514D;&amp;#x5F02;&amp;#x5E38;&amp;#x629B;&amp;#x51FA;&amp;#x5BFC;&amp;#x81F4;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7EC8;&amp;#x6B62;&amp;#x3002;&amp;#x53EF;&amp;#x4EE5;&amp;#x5728;&lt;code&gt;Thread.UncaughtExceptionHandler&lt;/code&gt;&amp;#x4E2D;&amp;#x5904;&amp;#x7406;&amp;#x672A;&amp;#x6355;&amp;#x83B7;&amp;#x7684;&amp;#x5F02;&amp;#x5E38;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;Thread.setDefaultUncaughtExceptionHandler((t, e) -&amp;gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x5904;&amp;#x7406;&amp;#x672A;&amp;#x6355;&amp;#x83B7;&amp;#x7684;&amp;#x5F02;&amp;#x5E38;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;});&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h3 id=&quot;&amp;#x4F7F;&amp;#x7528;Callable&amp;#x83B7;&amp;#x53D6;&amp;#x4EFB;&amp;#x52A1;&amp;#x6267;&amp;#x884C;&amp;#x7ED3;&amp;#x679C;&quot;&gt;&lt;a href=&quot;#&amp;#x4F7F;&amp;#x7528;Callable&amp;#x83B7;&amp;#x53D6;&amp;#x4EFB;&amp;#x52A1;&amp;#x6267;&amp;#x884C;&amp;#x7ED3;&amp;#x679C;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4F7F;&amp;#x7528;Callable&amp;#x83B7;&amp;#x53D6;&amp;#x4EFB;&amp;#x52A1;&amp;#x6267;&amp;#x884C;&amp;#x7ED3;&amp;#x679C;&quot;&gt;&lt;/a&gt;&amp;#x4F7F;&amp;#x7528;Callable&amp;#x83B7;&amp;#x53D6;&amp;#x4EFB;&amp;#x52A1;&amp;#x6267;&amp;#x884C;&amp;#x7ED3;&amp;#x679C;&lt;/h3&gt;&lt;p&gt;&amp;#x5982;&amp;#x679C;&amp;#x4EFB;&amp;#x52A1;&amp;#x9700;&amp;#x8981;&amp;#x8FD4;&amp;#x56DE;&amp;#x7ED3;&amp;#x679C;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;Callable&lt;/code&gt;&amp;#x63A5;&amp;#x53E3;&amp;#xFF0C;&amp;#x901A;&amp;#x8FC7;&lt;code&gt;Future&lt;/code&gt;&amp;#x5BF9;&amp;#x8C61;&amp;#x83B7;&amp;#x53D6;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x6267;&amp;#x884C;&amp;#x7ED3;&amp;#x679C;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;ExecutorService executorService = Executors.newFixedThreadPool(&lt;span class=&quot;number&quot;&gt;5&lt;/span&gt;);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;Future&amp;lt;Integer&amp;gt; future = executorService.submit(() -&amp;gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x6267;&amp;#x884C;&amp;#x4EFB;&amp;#x52A1;&amp;#x903B;&amp;#x8F91;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;number&quot;&gt;42&lt;/span&gt;;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;});&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x83B7;&amp;#x53D6;&amp;#x4EFB;&amp;#x52A1;&amp;#x6267;&amp;#x884C;&amp;#x7ED3;&amp;#x679C;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;int&lt;/span&gt; result = future.get();&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h2 id=&quot;&amp;#x907F;&amp;#x514D;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6CC4;&amp;#x6F0F;&quot;&gt;&lt;a href=&quot;#&amp;#x907F;&amp;#x514D;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6CC4;&amp;#x6F0F;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x907F;&amp;#x514D;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6CC4;&amp;#x6F0F;&quot;&gt;&lt;/a&gt;&amp;#x907F;&amp;#x514D;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6CC4;&amp;#x6F0F;&lt;/h2&gt;&lt;p&gt;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6CC4;&amp;#x6F0F;&amp;#x662F;&amp;#x5728;&amp;#x4F7F;&amp;#x7528;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x65F6;&amp;#x9700;&amp;#x8981;&amp;#x6CE8;&amp;#x610F;&amp;#x7684;&amp;#x4E00;&amp;#x4E2A;&amp;#x95EE;&amp;#x9898;&amp;#x3002;&amp;#x4E0B;&amp;#x9762;&amp;#x662F;&amp;#x4E00;&amp;#x4E9B;&amp;#x907F;&amp;#x514D;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6CC4;&amp;#x6F0F;&amp;#x7684;&amp;#x65B9;&amp;#x6CD5;&amp;#xFF1A;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x53CA;&amp;#x65F6;&amp;#x91CA;&amp;#x653E;&amp;#x7EBF;&amp;#x7A0B;&amp;#x8D44;&amp;#x6E90;&amp;#xFF1A;&lt;/strong&gt;&amp;#x5728;&amp;#x4EFB;&amp;#x52A1;&amp;#x5B8C;&amp;#x6210;&amp;#x540E;&amp;#xFF0C;&amp;#x52A1;&amp;#x5FC5;&amp;#x53CA;&amp;#x65F6;&amp;#x5173;&amp;#x95ED;&amp;#x7EBF;&amp;#x7A0B;&amp;#xFF0C;&amp;#x91CA;&amp;#x653E;&amp;#x7EBF;&amp;#x7A0B;&amp;#x8D44;&amp;#x6E90;&amp;#x3002;&amp;#x53EF;&amp;#x4EE5;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;shutdown()&lt;/code&gt;&amp;#x6216;&lt;code&gt;shutdownNow()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x6765;&amp;#x5173;&amp;#x95ED;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x4F7F;&amp;#x7528;WeakReference&amp;#xFF1A;&lt;/strong&gt;&amp;#x5982;&amp;#x679C;&amp;#x7EBF;&amp;#x7A0B;&amp;#x9700;&amp;#x8981;&amp;#x5F15;&amp;#x7528;&amp;#x5916;&amp;#x90E8;&amp;#x5BF9;&amp;#x8C61;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x4F7F;&amp;#x7528;WeakReference&amp;#x6765;&amp;#x6301;&amp;#x6709;&amp;#x5F15;&amp;#x7528;&amp;#x3002;&amp;#x8FD9;&amp;#x6837;&amp;#xFF0C;&amp;#x5728;&amp;#x4EFB;&amp;#x52A1;&amp;#x5B8C;&amp;#x6210;&amp;#x540E;&amp;#xFF0C;&amp;#x5373;&amp;#x4F7F;&amp;#x7EBF;&amp;#x7A0B;&amp;#x8FD8;&amp;#x5728;&amp;#x6267;&amp;#x884C;&amp;#xFF0C;&amp;#x5916;&amp;#x90E8;&amp;#x5BF9;&amp;#x8C61;&amp;#x4E5F;&amp;#x80FD;&amp;#x88AB;&amp;#x5783;&amp;#x573E;&amp;#x56DE;&amp;#x6536;&amp;#x5668;&amp;#x56DE;&amp;#x6536;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x5904;&amp;#x7406;&amp;#x4EFB;&amp;#x52A1;&amp;#x53D6;&amp;#x6D88;&amp;#xFF1A;&lt;/strong&gt;&amp;#x5982;&amp;#x679C;&amp;#x4EFB;&amp;#x52A1;&amp;#x88AB;&amp;#x53D6;&amp;#x6D88;&amp;#xFF0C;&amp;#x9700;&amp;#x8981;&amp;#x786E;&amp;#x4FDD;&amp;#x7EBF;&amp;#x7A0B;&amp;#x80FD;&amp;#x591F;&amp;#x6B63;&amp;#x786E;&amp;#x5730;&amp;#x54CD;&amp;#x5E94;&amp;#x53D6;&amp;#x6D88;&amp;#x64CD;&amp;#x4F5C;&amp;#xFF0C;&amp;#x5E76;&amp;#x91CA;&amp;#x653E;&amp;#x76F8;&amp;#x5173;&amp;#x8D44;&amp;#x6E90;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x4F7F;&amp;#x7528;&amp;#x9002;&amp;#x5F53;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x5927;&amp;#x5C0F;&amp;#xFF1A;&lt;/strong&gt;&amp;#x5982;&amp;#x679C;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x5927;&amp;#x5C0F;&amp;#x8BBE;&amp;#x7F6E;&amp;#x8FC7;&amp;#x5927;&amp;#xFF0C;&amp;#x53EF;&amp;#x80FD;&amp;#x4F1A;&amp;#x5BFC;&amp;#x81F4;&amp;#x7EBF;&amp;#x7A0B;&amp;#x8D44;&amp;#x6E90;&amp;#x7684;&amp;#x6D6A;&amp;#x8D39;&amp;#x3002;&amp;#x56E0;&amp;#x6B64;&amp;#xFF0C;&amp;#x9700;&amp;#x8981;&amp;#x6839;&amp;#x636E;&amp;#x5E94;&amp;#x7528;&amp;#x7A0B;&amp;#x5E8F;&amp;#x7684;&amp;#x9700;&amp;#x6C42;&amp;#x548C;&amp;#x7CFB;&amp;#x7EDF;&amp;#x7684;&amp;#x6027;&amp;#x80FD;&amp;#x6765;&amp;#x5408;&amp;#x7406;&amp;#x5730;&amp;#x8BBE;&amp;#x7F6E;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x5927;&amp;#x5C0F;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x4F7F;&amp;#x7528;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x76D1;&amp;#x63A7;&amp;#x5DE5;&amp;#x5177;&amp;#xFF1A;&lt;/strong&gt;&amp;#x53EF;&amp;#x4EE5;&amp;#x4F7F;&amp;#x7528;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x76D1;&amp;#x63A7;&amp;#x5DE5;&amp;#x5177;&amp;#x6765;&amp;#x68C0;&amp;#x6D4B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x72B6;&amp;#x6001;&amp;#x548C;&amp;#x8D44;&amp;#x6E90;&amp;#x5229;&amp;#x7528;&amp;#x60C5;&amp;#x51B5;&amp;#xFF0C;&amp;#x53CA;&amp;#x65F6;&amp;#x53D1;&amp;#x73B0;&amp;#x6F5C;&amp;#x5728;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6CC4;&amp;#x6F0F;&amp;#x95EE;&amp;#x9898;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;&amp;#x76D1;&amp;#x63A7;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x72B6;&amp;#x6001;&quot;&gt;&lt;a href=&quot;#&amp;#x76D1;&amp;#x63A7;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x72B6;&amp;#x6001;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x76D1;&amp;#x63A7;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x72B6;&amp;#x6001;&quot;&gt;&lt;/a&gt;&amp;#x76D1;&amp;#x63A7;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x72B6;&amp;#x6001;&lt;/h2&gt;&lt;p&gt;&amp;#x76D1;&amp;#x63A7;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x72B6;&amp;#x6001;&amp;#x53EF;&amp;#x4EE5;&amp;#x5E2E;&amp;#x52A9;&amp;#x6211;&amp;#x4EEC;&amp;#x53CA;&amp;#x65F6;&amp;#x53D1;&amp;#x73B0;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x5F02;&amp;#x5E38;&amp;#x548C;&amp;#x6027;&amp;#x80FD;&amp;#x95EE;&amp;#x9898;&amp;#x3002;&amp;#x4E0B;&amp;#x9762;&amp;#x662F;&amp;#x4E00;&amp;#x4E9B;&amp;#x65B9;&amp;#x6CD5;&amp;#x6765;&amp;#x76D1;&amp;#x63A7;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x72B6;&amp;#x6001;&amp;#xFF1A;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x4F7F;&amp;#x7528;ThreadPoolExecutor&amp;#x63D0;&amp;#x4F9B;&amp;#x7684;&amp;#x65B9;&amp;#x6CD5;&amp;#xFF1A;&lt;/strong&gt;&lt;code&gt;getActiveCount()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x53EF;&amp;#x4EE5;&amp;#x83B7;&amp;#x53D6;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x4E2D;&amp;#x6B63;&amp;#x5728;&amp;#x6267;&amp;#x884C;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6570;&amp;#xFF1B;&lt;code&gt;getTaskCount()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x53EF;&amp;#x4EE5;&amp;#x83B7;&amp;#x53D6;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x4E2D;&amp;#x5DF2;&amp;#x7ECF;&amp;#x6267;&amp;#x884C;&amp;#x548C;&amp;#x6B63;&amp;#x5728;&amp;#x6267;&amp;#x884C;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#x603B;&amp;#x6570;&amp;#xFF1B;&lt;code&gt;getCompletedTaskCount()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x53EF;&amp;#x4EE5;&amp;#x83B7;&amp;#x53D6;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x4E2D;&amp;#x5DF2;&amp;#x7ECF;&amp;#x5B8C;&amp;#x6210;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#x603B;&amp;#x6570;&amp;#x3002;&amp;#x901A;&amp;#x8FC7;&amp;#x8FD9;&amp;#x4E9B;&amp;#x65B9;&amp;#x6CD5;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x4E86;&amp;#x89E3;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x6D3B;&amp;#x52A8;&amp;#x60C5;&amp;#x51B5;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x4F7F;&amp;#x7528;ThreadPoolExecutor&amp;#x63D0;&amp;#x4F9B;&amp;#x7684;getQueue()&amp;#x65B9;&amp;#x6CD5;&amp;#xFF1A;&lt;/strong&gt;&amp;#x8FD9;&amp;#x4E2A;&amp;#x65B9;&amp;#x6CD5;&amp;#x53EF;&amp;#x4EE5;&amp;#x83B7;&amp;#x53D6;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x4E2D;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#x961F;&amp;#x5217;&amp;#x3002;&amp;#x901A;&amp;#x8FC7;&amp;#x68C0;&amp;#x67E5;&amp;#x4EFB;&amp;#x52A1;&amp;#x961F;&amp;#x5217;&amp;#x7684;&amp;#x957F;&amp;#x5EA6;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x4E86;&amp;#x89E3;&amp;#x7B49;&amp;#x5F85;&amp;#x6267;&amp;#x884C;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#x6570;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x4F7F;&amp;#x7528;&amp;#x5B9A;&amp;#x65F6;&amp;#x4EFB;&amp;#x52A1;&amp;#xFF1A;&lt;/strong&gt;&amp;#x53EF;&amp;#x4EE5;&amp;#x5B9A;&amp;#x65F6;&amp;#x8BB0;&amp;#x5F55;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x72B6;&amp;#x6001;&amp;#xFF0C;&amp;#x6BD4;&amp;#x5982;&amp;#x6BCF;&amp;#x9694;&amp;#x4E00;&amp;#x6BB5;&amp;#x65F6;&amp;#x95F4;&amp;#x8F93;&amp;#x51FA;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x6D3B;&amp;#x52A8;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6570;&amp;#x3001;&amp;#x4EFB;&amp;#x52A1;&amp;#x961F;&amp;#x5217;&amp;#x7684;&amp;#x957F;&amp;#x5EA6;&amp;#x7B49;&amp;#x6307;&amp;#x6807;&amp;#x3002;&amp;#x8FD9;&amp;#x6837;&amp;#x53EF;&amp;#x4EE5;&amp;#x53CA;&amp;#x65F6;&amp;#x53D1;&amp;#x73B0;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x5F02;&amp;#x5E38;&amp;#x60C5;&amp;#x51B5;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x4F7F;&amp;#x7528;&amp;#x6027;&amp;#x80FD;&amp;#x5206;&amp;#x6790;&amp;#x5DE5;&amp;#x5177;&amp;#xFF1A;&lt;/strong&gt;&amp;#x53EF;&amp;#x4EE5;&amp;#x4F7F;&amp;#x7528;&amp;#x6027;&amp;#x80FD;&amp;#x5206;&amp;#x6790;&amp;#x5DE5;&amp;#x5177;&amp;#xFF0C;&amp;#x5982;&lt;code&gt;Android Profiler&lt;/code&gt;&amp;#xFF0C;&amp;#x6765;&amp;#x76D1;&amp;#x6D4B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;CPU&amp;#x4F7F;&amp;#x7528;&amp;#x7387;&amp;#x3001;&amp;#x5185;&amp;#x5B58;&amp;#x6D88;&amp;#x8017;&amp;#x548C;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6267;&amp;#x884C;&amp;#x65F6;&amp;#x95F4;&amp;#x7B49;&amp;#x6307;&amp;#x6807;&amp;#x3002;&amp;#x8FD9;&amp;#x4E9B;&amp;#x5DE5;&amp;#x5177;&amp;#x53EF;&amp;#x4EE5;&amp;#x63D0;&amp;#x4F9B;&amp;#x66F4;&amp;#x8BE6;&amp;#x7EC6;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x6027;&amp;#x80FD;&amp;#x4FE1;&amp;#x606F;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x76D1;&amp;#x63A7;&amp;#x5DE5;&amp;#x5177;&amp;#xFF1A;&lt;/strong&gt;&amp;#x6839;&amp;#x636E;&amp;#x5E94;&amp;#x7528;&amp;#x7A0B;&amp;#x5E8F;&amp;#x7684;&amp;#x9700;&amp;#x6C42;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x76D1;&amp;#x63A7;&amp;#x5DE5;&amp;#x5177;&amp;#x6765;&amp;#x76D1;&amp;#x6D4B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x72B6;&amp;#x6001;&amp;#x3002;&amp;#x8FD9;&amp;#x4E9B;&amp;#x5DE5;&amp;#x5177;&amp;#x53EF;&amp;#x4EE5;&amp;#x6839;&amp;#x636E;&amp;#x5177;&amp;#x4F53;&amp;#x60C5;&amp;#x51B5;&amp;#x6536;&amp;#x96C6;&amp;#x548C;&amp;#x5C55;&amp;#x793A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x76F8;&amp;#x5173;&amp;#x6307;&amp;#x6807;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;&amp;#x603B;&amp;#x7ED3;&quot;&gt;&lt;a href=&quot;#&amp;#x603B;&amp;#x7ED3;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x603B;&amp;#x7ED3;&quot;&gt;&lt;/a&gt;&amp;#x603B;&amp;#x7ED3;&lt;/h2&gt;&lt;p&gt;&amp;#x901A;&amp;#x8FC7;&amp;#x672C;&amp;#x6587;&amp;#x7684;&amp;#x5B66;&amp;#x4E60;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x6DF1;&amp;#x5165;&amp;#x4E86;&amp;#x89E3;&amp;#x4E86;Android&amp;#x4E2D;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;Executors&amp;#x7684;&amp;#x91CD;&amp;#x8981;&amp;#x6027;&amp;#x548C;&amp;#x7075;&amp;#x6D3B;&amp;#x6027;&amp;#x3002;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x4F5C;&amp;#x4E3A;&amp;#x4E00;&amp;#x79CD;&amp;#x591A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7BA1;&amp;#x7406;&amp;#x673A;&amp;#x5236;&amp;#xFF0C;&amp;#x5728;Android&amp;#x5E94;&amp;#x7528;&amp;#x4E2D;&amp;#x53D1;&amp;#x6325;&amp;#x7740;&amp;#x5173;&amp;#x952E;&amp;#x4F5C;&amp;#x7528;&amp;#xFF0C;&amp;#x80FD;&amp;#x591F;&amp;#x6709;&amp;#x6548;&amp;#x63D0;&amp;#x9AD8;&amp;#x5E94;&amp;#x7528;&amp;#x7684;&amp;#x6027;&amp;#x80FD;&amp;#x3001;&amp;#x54CD;&amp;#x5E94;&amp;#x901F;&amp;#x5EA6;&amp;#xFF0C;&amp;#x540C;&amp;#x65F6;&amp;#x907F;&amp;#x514D;&amp;#x8FC7;&amp;#x5EA6;&amp;#x5360;&amp;#x7528;&amp;#x7CFB;&amp;#x7EDF;&amp;#x8D44;&amp;#x6E90;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;a href=&quot;#&amp;#x63A8;&amp;#x8350;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;/a&gt;&amp;#x63A8;&amp;#x8350;&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-startup&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android_startup&lt;/a&gt;: &amp;#x63D0;&amp;#x4F9B;&amp;#x4E00;&amp;#x79CD;&amp;#x5728;&amp;#x5E94;&amp;#x7528;&amp;#x542F;&amp;#x52A8;&amp;#x65F6;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x52A0;&amp;#x7B80;&amp;#x5355;&amp;#x3001;&amp;#x9AD8;&amp;#x6548;&amp;#x7684;&amp;#x65B9;&amp;#x5F0F;&amp;#x6765;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x7EC4;&amp;#x4EF6;&amp;#xFF0C;&amp;#x4F18;&amp;#x5316;&amp;#x542F;&amp;#x52A8;&amp;#x901F;&amp;#x5EA6;&amp;#x3002;&amp;#x4E0D;&amp;#x4EC5;&amp;#x652F;&amp;#x6301;Jetpack App Startup&amp;#x7684;&amp;#x5168;&amp;#x90E8;&amp;#x529F;&amp;#x80FD;&amp;#xFF0C;&amp;#x8FD8;&amp;#x63D0;&amp;#x4F9B;&amp;#x989D;&amp;#x5916;&amp;#x7684;&amp;#x540C;&amp;#x6B65;&amp;#x4E0E;&amp;#x5F02;&amp;#x6B65;&amp;#x7B49;&amp;#x5F85;&amp;#x3001;&amp;#x7EBF;&amp;#x7A0B;&amp;#x63A7;&amp;#x5236;&amp;#x4E0E;&amp;#x591A;&amp;#x8FDB;&amp;#x7A0B;&amp;#x652F;&amp;#x6301;&amp;#x7B49;&amp;#x529F;&amp;#x80FD;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/AwesomeGithub&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AwesomeGithub&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Github&amp;#x7684;&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x7EAF;&amp;#x7EC3;&amp;#x4E60;&amp;#x9879;&amp;#x76EE;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x7EC4;&amp;#x4EF6;&amp;#x5316;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x8D26;&amp;#x6237;&amp;#x5BC6;&amp;#x7801;&amp;#x4E0E;&amp;#x8BA4;&amp;#x8BC1;&amp;#x767B;&amp;#x9646;&amp;#x3002;&amp;#x4F7F;&amp;#x7528;Kotlin&amp;#x8BED;&amp;#x8A00;&amp;#x8FDB;&amp;#x884C;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x9879;&amp;#x76EE;&amp;#x67B6;&amp;#x6784;&amp;#x662F;&amp;#x57FA;&amp;#x4E8E;JetPack\&amp;amp;DataBinding&amp;#x7684;MVVM&amp;#xFF1B;&amp;#x9879;&amp;#x76EE;&amp;#x4E2D;&amp;#x4F7F;&amp;#x7528;&amp;#x4E86;Arouter&amp;#x3001;Retrofit&amp;#x3001;Coroutine&amp;#x3001;Glide&amp;#x3001;Dagger&amp;#x4E0E;Hilt&amp;#x7B49;&amp;#x6D41;&amp;#x884C;&amp;#x5F00;&amp;#x6E90;&amp;#x6280;&amp;#x672F;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/flutter_github&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;flutter_github&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Flutter&amp;#x7684;&amp;#x8DE8;&amp;#x5E73;&amp;#x53F0;&amp;#x7248;&amp;#x672C;Github&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x4E0E;AwesomeGithub&amp;#x76F8;&amp;#x5BF9;&amp;#x5E94;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-api-analysis&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android-api-analysis&lt;/a&gt;: &amp;#x7ED3;&amp;#x5408;&amp;#x8BE6;&amp;#x7EC6;&amp;#x7684;Demo&amp;#x6765;&amp;#x5168;&amp;#x9762;&amp;#x89E3;&amp;#x6790;Android&amp;#x76F8;&amp;#x5173;&amp;#x7684;&amp;#x77E5;&amp;#x8BC6;&amp;#x70B9;, &amp;#x5E2E;&amp;#x52A9;&amp;#x8BFB;&amp;#x8005;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x5FEB;&amp;#x7684;&amp;#x638C;&amp;#x63E1;&amp;#x4E0E;&amp;#x7406;&amp;#x89E3;&amp;#x6240;&amp;#x9610;&amp;#x8FF0;&amp;#x7684;&amp;#x8981;&amp;#x70B9;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/daily_algorithm&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;daily_algorithm&lt;/a&gt;: &amp;#x6BCF;&amp;#x65E5;&amp;#x4E00;&amp;#x7B97;&amp;#x6CD5;&amp;#xFF0C;&amp;#x7531;&amp;#x6D45;&amp;#x5165;&amp;#x6DF1;&amp;#xFF0C;&amp;#x6B22;&amp;#x8FCE;&amp;#x52A0;&amp;#x5165;&amp;#x4E00;&amp;#x8D77;&amp;#x5171;&amp;#x52C9;&amp;#x3002;&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;p&gt;&amp;#x5728;Android&amp;#x5F00;&amp;#x53D1;&amp;#x4E2D;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x7ECF;&amp;#x5E38;&amp;#x4F1A;&amp;#x9047;&amp;#x5230;&amp;#x9700;&amp;#x8981;&amp;#x6267;&amp;#x884C;&amp;#
    
    </summary>
    
      <category term="android" scheme="https://www.rousetime.com/categories/android/"/>
    
    
      <category term="android" scheme="https://www.rousetime.com/tags/android/"/>
    
  </entry>
  
  <entry>
    <title>Android WorkManager: 轻松管理后台任务</title>
    <link href="https://www.rousetime.com/2023/12/13/Android-WorkManager-%E8%BD%BB%E6%9D%BE%E7%AE%A1%E7%90%86%E5%90%8E%E5%8F%B0%E4%BB%BB%E5%8A%A1/"/>
    <id>https://www.rousetime.com/2023/12/13/Android-WorkManager-轻松管理后台任务/</id>
    <published>2023-12-13T01:41:18.000Z</published>
    <updated>2023-12-13T01:41:55.184Z</updated>
    
    <content type="html">&lt;h2 id=&quot;&amp;#x4ECB;&amp;#x7ECD;&quot;&gt;&lt;a href=&quot;#&amp;#x4ECB;&amp;#x7ECD;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4ECB;&amp;#x7ECD;&quot;&gt;&lt;/a&gt;&amp;#x4ECB;&amp;#x7ECD;&lt;/h2&gt;&lt;p&gt;&amp;#x5728;Android&amp;#x5E94;&amp;#x7528;&amp;#x5F00;&amp;#x53D1;&amp;#x4E2D;&amp;#xFF0C;&amp;#x6709;&amp;#x6548;&amp;#x5730;&amp;#x7BA1;&amp;#x7406;&amp;#x540E;&amp;#x53F0;&amp;#x4EFB;&amp;#x52A1;&amp;#x662F;&amp;#x81F3;&amp;#x5173;&amp;#x91CD;&amp;#x8981;&amp;#x7684;&amp;#x3002;Android WorkManager&amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x5F3A;&amp;#x5927;&amp;#x7684;&amp;#x5E93;&amp;#xFF0C;&amp;#x65E8;&amp;#x5728;&amp;#x7B80;&amp;#x5316;&amp;#x4EFB;&amp;#x52A1;&amp;#x8C03;&amp;#x5EA6;&amp;#x548C;&amp;#x540E;&amp;#x53F0;&amp;#x5DE5;&amp;#x4F5C;&amp;#x7BA1;&amp;#x7406;&amp;#x3002;&amp;#x672C;&amp;#x6587;&amp;#x5C06;&amp;#x6DF1;&amp;#x5165;&amp;#x63A2;&amp;#x8BA8;WorkManager&amp;#x7684;&amp;#x5185;&amp;#x90E8;&amp;#x5B9E;&amp;#x73B0;&amp;#x7EC6;&amp;#x8282;&amp;#x3001;&amp;#x539F;&amp;#x7406;&amp;#x548C;&amp;#x5177;&amp;#x4F53;&amp;#x4F7F;&amp;#x7528;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x5DE5;&amp;#x4F5C;&amp;#x539F;&amp;#x7406;&quot;&gt;&lt;a href=&quot;#&amp;#x5DE5;&amp;#x4F5C;&amp;#x539F;&amp;#x7406;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5DE5;&amp;#x4F5C;&amp;#x539F;&amp;#x7406;&quot;&gt;&lt;/a&gt;&amp;#x5DE5;&amp;#x4F5C;&amp;#x539F;&amp;#x7406;&lt;/h2&gt;&lt;h3 id=&quot;&amp;#x67B6;&amp;#x6784;&amp;#x6982;&amp;#x8FF0;&quot;&gt;&lt;a href=&quot;#&amp;#x67B6;&amp;#x6784;&amp;#x6982;&amp;#x8FF0;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x67B6;&amp;#x6784;&amp;#x6982;&amp;#x8FF0;&quot;&gt;&lt;/a&gt;&amp;#x67B6;&amp;#x6784;&amp;#x6982;&amp;#x8FF0;&lt;/h3&gt;&lt;p&gt;WorkManager&amp;#x7684;&amp;#x5185;&amp;#x90E8;&amp;#x5B9E;&amp;#x73B0;&amp;#x91C7;&amp;#x7528;&amp;#x4E86;&amp;#x73B0;&amp;#x4EE3;&amp;#x5316;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#x8C03;&amp;#x5EA6;&amp;#x67B6;&amp;#x6784;&amp;#xFF0C;&amp;#x5206;&amp;#x4E3A;&amp;#x4EE5;&amp;#x4E0B;&amp;#x51E0;&amp;#x4E2A;&amp;#x6838;&amp;#x5FC3;&amp;#x7EC4;&amp;#x4EF6;&amp;#xFF1A;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;WorkManager:&lt;/strong&gt; &amp;#x63D0;&amp;#x4F9B;&amp;#x4EFB;&amp;#x52A1;&amp;#x8C03;&amp;#x5EA6;&amp;#x548C;&amp;#x7BA1;&amp;#x7406;&amp;#x7684;&amp;#x4E3B;&amp;#x8981;&amp;#x63A5;&amp;#x53E3;&amp;#xFF0C;&amp;#x8D1F;&amp;#x8D23;&amp;#x534F;&amp;#x8C03;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x6267;&amp;#x884C;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Worker:&lt;/strong&gt; &amp;#x5F00;&amp;#x53D1;&amp;#x8005;&amp;#x5B9A;&amp;#x4E49;&amp;#x7684;&amp;#x6267;&amp;#x884C;&amp;#x5B9E;&amp;#x9645;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x5DE5;&amp;#x4F5C;&amp;#x5355;&amp;#x5143;&amp;#x3002;&amp;#x6BCF;&amp;#x4E2A;Worker&amp;#x90FD;&amp;#x8FD0;&amp;#x884C;&amp;#x5728;&amp;#x72EC;&amp;#x7ACB;&amp;#x7684;&amp;#x540E;&amp;#x53F0;&amp;#x7EBF;&amp;#x7A0B;&amp;#x4E2D;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;WorkRequest:&lt;/strong&gt; &amp;#x5B9A;&amp;#x4E49;&amp;#x4E86;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x76F8;&amp;#x5173;&amp;#x53C2;&amp;#x6570;&amp;#xFF0C;&amp;#x5982;&amp;#x7EA6;&amp;#x675F;&amp;#x6761;&amp;#x4EF6;&amp;#x3001;&amp;#x91CD;&amp;#x8BD5;&amp;#x7B56;&amp;#x7565;&amp;#x7B49;&amp;#x3002;&amp;#x5206;&amp;#x4E3A;OneTimeWorkRequest&amp;#x548C;PeriodicWorkRequest&amp;#x4E24;&amp;#x79CD;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;WorkDatabase:&lt;/strong&gt; &amp;#x7528;&amp;#x4E8E;&amp;#x6301;&amp;#x4E45;&amp;#x5316;&amp;#x5B58;&amp;#x50A8;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x72B6;&amp;#x6001;&amp;#x3001;&amp;#x7EA6;&amp;#x675F;&amp;#x6761;&amp;#x4EF6;&amp;#x7B49;&amp;#x4FE1;&amp;#x606F;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;WorkPolicy:&lt;/strong&gt; &amp;#x5B9A;&amp;#x4E49;&amp;#x4E86;&amp;#x4EFB;&amp;#x52A1;&amp;#x8C03;&amp;#x5EA6;&amp;#x7684;&amp;#x7B56;&amp;#x7565;&amp;#xFF0C;&amp;#x5305;&amp;#x62EC;&amp;#x7ACB;&amp;#x5373;&amp;#x6267;&amp;#x884C;&amp;#x3001;&amp;#x4FDD;&amp;#x7559;&amp;#x6700;&amp;#x65B0;&amp;#x3001;&amp;#x4FDD;&amp;#x7559;&amp;#x6700;&amp;#x65E7;&amp;#x7B49;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;&amp;#x8C03;&amp;#x5EA6;&amp;#x6D41;&amp;#x7A0B;&quot;&gt;&lt;a href=&quot;#&amp;#x8C03;&amp;#x5EA6;&amp;#x6D41;&amp;#x7A0B;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x8C03;&amp;#x5EA6;&amp;#x6D41;&amp;#x7A0B;&quot;&gt;&lt;/a&gt;&amp;#x8C03;&amp;#x5EA6;&amp;#x6D41;&amp;#x7A0B;&lt;/h3&gt;&lt;p&gt;&amp;#x5F53;&amp;#x5F00;&amp;#x53D1;&amp;#x8005;&amp;#x63D0;&amp;#x4EA4;&amp;#x4EFB;&amp;#x52A1;&amp;#x65F6;&amp;#xFF0C;WorkManager&amp;#x9996;&amp;#x5148;&amp;#x4F1A;&amp;#x5C06;&amp;#x4EFB;&amp;#x52A1;&amp;#x4FE1;&amp;#x606F;&amp;#x5B58;&amp;#x50A8;&amp;#x5230;WorkDatabase&amp;#x4E2D;&amp;#xFF0C;&amp;#x5305;&amp;#x62EC;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x72B6;&amp;#x6001;&amp;#x3001;&amp;#x7EA6;&amp;#x675F;&amp;#x6761;&amp;#x4EF6;&amp;#x7B49;&amp;#x3002;&amp;#x7136;&amp;#x540E;&amp;#xFF0C;WorkManager&amp;#x4F1A;&amp;#x6839;&amp;#x636E;&amp;#x8BBE;&amp;#x5907;&amp;#x7684;API&amp;#x7EA7;&amp;#x522B;&amp;#x667A;&amp;#x80FD;&amp;#x5730;&amp;#x9009;&amp;#x62E9;&amp;#x5408;&amp;#x9002;&amp;#x7684;&amp;#x540E;&amp;#x53F0;&amp;#x8C03;&amp;#x5EA6;&amp;#x5668;&amp;#xFF0C;&amp;#x5982;JobScheduler&amp;#x3001;Firebase JobDispatcher&amp;#x548C;AlarmManager&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight plain&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;22&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;23&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;24&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;@NonNull&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;static Scheduler createBestAvailableBackgroundScheduler(&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        @NonNull Context context,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        @NonNull WorkManagerImpl workManager) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    Scheduler scheduler;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    if (Build.VERSION.SDK_INT &amp;gt;= WorkManagerImpl.MIN_JOB_SCHEDULER_API_LEVEL) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        // use JobScheduler&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        scheduler = new SystemJobScheduler(context, workManager);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        setComponentEnabled(context, SystemJobService.class, true);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        Logger.get().debug(TAG, &amp;quot;Created SystemJobScheduler and enabled SystemJobService&amp;quot;);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    } else {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        // may use JobDispatcher&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        scheduler = tryCreateGcmBasedScheduler(context);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        if (scheduler == null) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            // use Alarmanager&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            scheduler = new SystemAlarmScheduler(context);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            setComponentEnabled(context, SystemAlarmService.class, true);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            Logger.get().debug(TAG, &amp;quot;Created SystemAlarmScheduler&amp;quot;);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    return scheduler;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;JobScheduler (API 23+):&lt;/strong&gt; &amp;#x4F7F;&amp;#x7528;JobScheduler&amp;#x8FDB;&amp;#x884C;&amp;#x4EFB;&amp;#x52A1;&amp;#x8C03;&amp;#x5EA6;&amp;#xFF0C;&amp;#x5141;&amp;#x8BB8;&amp;#x7CFB;&amp;#x7EDF;&amp;#x6700;&amp;#x4F18;&amp;#x5316;&amp;#x5730;&amp;#x6267;&amp;#x884C;&amp;#x4EFB;&amp;#x52A1;&amp;#xFF0C;&amp;#x4F8B;&amp;#x5982;&amp;#x5408;&amp;#x5E76;&amp;#x76F8;&amp;#x90BB;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#x4EE5;&amp;#x51CF;&amp;#x5C11;&amp;#x8BBE;&amp;#x5907;&amp;#x5524;&amp;#x9192;&amp;#x6B21;&amp;#x6570;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Firebase JobDispatcher (API 14+):&lt;/strong&gt; &amp;#x5BF9;&amp;#x4E8E;API&amp;#x7EA7;&amp;#x522B;&amp;#x8F83;&amp;#x4F4E;&amp;#x7684;&amp;#x8BBE;&amp;#x5907;&amp;#xFF0C;WorkManager&amp;#x4F1A;&amp;#x5229;&amp;#x7528;Firebase JobDispatcher&amp;#x6765;&amp;#x5B9E;&amp;#x73B0;&amp;#x7C7B;&amp;#x4F3C;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#x8C03;&amp;#x5EA6;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;AlarmManager:&lt;/strong&gt; &amp;#x5728;API&amp;#x7EA7;&amp;#x522B;&amp;#x66F4;&amp;#x4F4E;&amp;#x7684;&amp;#x8BBE;&amp;#x5907;&amp;#x4E0A;&amp;#xFF0C;WorkManager&amp;#x4F1A;&amp;#x901A;&amp;#x8FC7;AlarmManager&amp;#x6765;&amp;#x5B9E;&amp;#x73B0;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x8C03;&amp;#x5EA6;&amp;#x548C;&amp;#x5524;&amp;#x9192;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;&amp;#x667A;&amp;#x80FD;&amp;#x7EA6;&amp;#x675F;&amp;#x5904;&amp;#x7406;&quot;&gt;&lt;a href=&quot;#&amp;#x667A;&amp;#x80FD;&amp;#x7EA6;&amp;#x675F;&amp;#x5904;&amp;#x7406;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x667A;&amp;#x80FD;&amp;#x7EA6;&amp;#x675F;&amp;#x5904;&amp;#x7406;&quot;&gt;&lt;/a&gt;&amp;#x667A;&amp;#x80FD;&amp;#x7EA6;&amp;#x675F;&amp;#x5904;&amp;#x7406;&lt;/h3&gt;&lt;p&gt;WorkManager&amp;#x7684;&amp;#x5F3A;&amp;#x5927;&amp;#x4E4B;&amp;#x5904;&amp;#x5728;&amp;#x4E8E;&amp;#x5176;&amp;#x667A;&amp;#x80FD;&amp;#x7EA6;&amp;#x675F;&amp;#x5904;&amp;#x7406;&amp;#xFF0C;&amp;#x786E;&amp;#x4FDD;&amp;#x4EFB;&amp;#x52A1;&amp;#x5728;&amp;#x6EE1;&amp;#x8DB3;&amp;#x6761;&amp;#x4EF6;&amp;#x7684;&amp;#x60C5;&amp;#x51B5;&amp;#x4E0B;&amp;#x624D;&amp;#x4F1A;&amp;#x6267;&amp;#x884C;&amp;#x3002;&lt;br&gt;WorkManager&amp;#x7684;&amp;#x667A;&amp;#x80FD;&amp;#x7EA6;&amp;#x675F;&amp;#x5904;&amp;#x7406;&amp;#x901A;&amp;#x8FC7;Constraints&amp;#x6765;&amp;#x5B9E;&amp;#x73B0;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x667A;&amp;#x80FD;&amp;#x7EA6;&amp;#x675F;&amp;#x5904;&amp;#x7406;&amp;#x57FA;&amp;#x4E8E;&amp;#x4E24;&amp;#x4E2A;&amp;#x6838;&amp;#x5FC3;&amp;#x6982;&amp;#x5FF5;&amp;#xFF1A;&amp;#x786C;&amp;#x7EA6;&amp;#x675F;&amp;#x548C;&amp;#x8F6F;&amp;#x7EA6;&amp;#x675F;&amp;#x3002;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;#x786C;&amp;#x7EA6;&amp;#x675F;: &amp;#x8FD9;&amp;#x4E9B;&amp;#x662F;&amp;#x5FC5;&amp;#x987B;&amp;#x6EE1;&amp;#x8DB3;&amp;#x7684;&amp;#x6761;&amp;#x4EF6;&amp;#xFF0C;&amp;#x5982;&amp;#x7F51;&amp;#x7EDC;&amp;#x8FDE;&amp;#x63A5;&amp;#x3001;&amp;#x5145;&amp;#x7535;&amp;#x72B6;&amp;#x6001;&amp;#x7B49;&amp;#x3002;&amp;#x5982;&amp;#x679C;&amp;#x786C;&amp;#x7EA6;&amp;#x675F;&amp;#x6761;&amp;#x4EF6;&amp;#x65E0;&amp;#x6CD5;&amp;#x6EE1;&amp;#x8DB3;&amp;#xFF0C;WorkManager&amp;#x4F1A;&amp;#x7B49;&amp;#x5F85;&amp;#x76F4;&amp;#x5230;&amp;#x6EE1;&amp;#x8DB3;&amp;#x6761;&amp;#x4EF6;&amp;#x518D;&amp;#x6267;&amp;#x884C;&amp;#x4EFB;&amp;#x52A1;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x8F6F;&amp;#x7EA6;&amp;#x675F;: &amp;#x8FD9;&amp;#x4E9B;&amp;#x662F;&amp;#x53EF;&amp;#x9009;&amp;#x6761;&amp;#x4EF6;&amp;#xFF0C;&amp;#x4F8B;&amp;#x5982;&amp;#x8BBE;&amp;#x5907;&amp;#x7A7A;&amp;#x95F2;&amp;#x3001;&amp;#x5B58;&amp;#x50A8;&amp;#x7A7A;&amp;#x95F4;&amp;#x5145;&amp;#x8DB3;&amp;#x7B49;&amp;#x3002;&amp;#x5982;&amp;#x679C;&amp;#x8F6F;&amp;#x7EA6;&amp;#x675F;&amp;#x6761;&amp;#x4EF6;&amp;#x65E0;&amp;#x6CD5;&amp;#x6EE1;&amp;#x8DB3;&amp;#xFF0C;WorkManager&amp;#x4ECD;&amp;#x7136;&amp;#x4F1A;&amp;#x6267;&amp;#x884C;&amp;#x4EFB;&amp;#x52A1;&amp;#xFF0C;&amp;#x4F46;&amp;#x4F1A;&amp;#x5C3D;&amp;#x91CF;&amp;#x5728;&amp;#x6761;&amp;#x4EF6;&amp;#x5408;&amp;#x9002;&amp;#x65F6;&amp;#x6267;&amp;#x884C;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&amp;#x8FD9;&amp;#x79CD;&amp;#x667A;&amp;#x80FD;&amp;#x7684;&amp;#x7EA6;&amp;#x675F;&amp;#x5904;&amp;#x7406;&amp;#x65B9;&amp;#x5F0F;&amp;#x4F7F;&amp;#x5F97;&amp;#x5F00;&amp;#x53D1;&amp;#x8005;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x7075;&amp;#x6D3B;&amp;#x5730;&amp;#x63A7;&amp;#x5236;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x6267;&amp;#x884C;&amp;#x65F6;&amp;#x673A;&amp;#xFF0C;&amp;#x63D0;&amp;#x9AD8;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x6267;&amp;#x884C;&amp;#x6548;&amp;#x7387;&amp;#x548C;&amp;#x7528;&amp;#x6237;&amp;#x4F53;&amp;#x9A8C;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x5177;&amp;#x4F53;&amp;#x4F7F;&amp;#x7528;&quot;&gt;&lt;a href=&quot;#&amp;#x5177;&amp;#x4F53;&amp;#x4F7F;&amp;#x7528;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5177;&amp;#x4F53;&amp;#x4F7F;&amp;#x7528;&quot;&gt;&lt;/a&gt;&amp;#x5177;&amp;#x4F53;&amp;#x4F7F;&amp;#x7528;&lt;/h2&gt;&lt;h3 id=&quot;&amp;#x6DFB;&amp;#x52A0;&amp;#x4F9D;&amp;#x8D56;&quot;&gt;&lt;a href=&quot;#&amp;#x6DFB;&amp;#x52A0;&amp;#x4F9D;&amp;#x8D56;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x6DFB;&amp;#x52A0;&amp;#x4F9D;&amp;#x8D56;&quot;&gt;&lt;/a&gt;&amp;#x6DFB;&amp;#x52A0;&amp;#x4F9D;&amp;#x8D56;&lt;/h3&gt;&lt;p&gt;&amp;#x9996;&amp;#x5148;&amp;#xFF0C;&amp;#x5728;&amp;#x9879;&amp;#x76EE;&amp;#x7684;&lt;code&gt;build.gradle&lt;/code&gt;&amp;#x6587;&amp;#x4EF6;&amp;#x4E2D;&amp;#x6DFB;&amp;#x52A0;WorkManager&amp;#x7684;&amp;#x4F9D;&amp;#x8D56;&amp;#xFF1A;&lt;/p&gt;
&lt;figure class=&quot;highlight gradle&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;implementation &lt;span class=&quot;string&quot;&gt;&amp;quot;androidx.work:work-runtime:2.8.0&amp;quot;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h3 id=&quot;&amp;#x521B;&amp;#x5EFA;&amp;#x4EFB;&amp;#x52A1;&quot;&gt;&lt;a href=&quot;#&amp;#x521B;&amp;#x5EFA;&amp;#x4EFB;&amp;#x52A1;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x521B;&amp;#x5EFA;&amp;#x4EFB;&amp;#x52A1;&quot;&gt;&lt;/a&gt;&amp;#x521B;&amp;#x5EFA;&amp;#x4EFB;&amp;#x52A1;&lt;/h3&gt;&lt;p&gt;&amp;#x521B;&amp;#x5EFA;&amp;#x4E00;&amp;#x4E2A;&amp;#x7EE7;&amp;#x627F;&amp;#x81EA;&lt;code&gt;Worker&lt;/code&gt;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#x7C7B;&amp;#xFF0C;&amp;#x5B9E;&amp;#x73B0;&lt;code&gt;doWork()&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#xFF0C;&amp;#x5B9A;&amp;#x4E49;&amp;#x5177;&amp;#x4F53;&amp;#x7684;&amp;#x540E;&amp;#x53F0;&amp;#x4EFB;&amp;#x52A1;&amp;#x903B;&amp;#x8F91;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;MyWorker&lt;/span&gt;&lt;/span&gt;(context: Context, params: WorkerParameters) : Worker(context, params) {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;override&lt;/span&gt; &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;fun&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;doWork&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt;&lt;/span&gt;: Result {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x6267;&amp;#x884C;&amp;#x540E;&amp;#x53F0;&amp;#x4EFB;&amp;#x52A1;&amp;#x903B;&amp;#x8F91;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// ...&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; Result.success()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h3 id=&quot;&amp;#x8BBE;&amp;#x7F6E;&amp;#x7EA6;&amp;#x675F;&amp;#x548C;&amp;#x89E6;&amp;#x53D1;&amp;#x6761;&amp;#x4EF6;&quot;&gt;&lt;a href=&quot;#&amp;#x8BBE;&amp;#x7F6E;&amp;#x7EA6;&amp;#x675F;&amp;#x548C;&amp;#x89E6;&amp;#x53D1;&amp;#x6761;&amp;#x4EF6;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x8BBE;&amp;#x7F6E;&amp;#x7EA6;&amp;#x675F;&amp;#x548C;&amp;#x89E6;&amp;#x53D1;&amp;#x6761;&amp;#x4EF6;&quot;&gt;&lt;/a&gt;&amp;#x8BBE;&amp;#x7F6E;&amp;#x7EA6;&amp;#x675F;&amp;#x548C;&amp;#x89E6;&amp;#x53D1;&amp;#x6761;&amp;#x4EF6;&lt;/h3&gt;&lt;p&gt;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;Constraints&lt;/code&gt;&amp;#x6765;&amp;#x5B9A;&amp;#x4E49;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x7EA6;&amp;#x675F;&amp;#x6761;&amp;#x4EF6;&amp;#xFF0C;&amp;#x4F8B;&amp;#x5982;&amp;#x7F51;&amp;#x7EDC;&amp;#x8FDE;&amp;#x63A5;&amp;#x3001;&amp;#x5145;&amp;#x7535;&amp;#x72B6;&amp;#x6001;&amp;#x7B49;&amp;#x3002;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;OneTimeWorkRequest&lt;/code&gt;&amp;#x6216;&lt;code&gt;PeriodicWorkRequest&lt;/code&gt;&amp;#x6765;&amp;#x521B;&amp;#x5EFA;&amp;#x5DE5;&amp;#x4F5C;&amp;#x8BF7;&amp;#x6C42;&amp;#xFF0C;&amp;#x5E76;&amp;#x8BBE;&amp;#x7F6E;&amp;#x89E6;&amp;#x53D1;&amp;#x6761;&amp;#x4EF6;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; constraints = Constraints.Builder()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    .setRequiredNetworkType(NetworkType.CONNECTED)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    .setRequiresCharging(&lt;span class=&quot;literal&quot;&gt;true&lt;/span&gt;)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    .build()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; workRequest = OneTimeWorkRequest.Builder(MyWorker::&lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt;.&lt;span class=&quot;title&quot;&gt;java&lt;/span&gt;)&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    .setConstraints(constraints)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    .build()&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h3 id=&quot;&amp;#x63D0;&amp;#x4EA4;&amp;#x4EFB;&amp;#x52A1;&quot;&gt;&lt;a href=&quot;#&amp;#x63D0;&amp;#x4EA4;&amp;#x4EFB;&amp;#x52A1;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x63D0;&amp;#x4EA4;&amp;#x4EFB;&amp;#x52A1;&quot;&gt;&lt;/a&gt;&amp;#x63D0;&amp;#x4EA4;&amp;#x4EFB;&amp;#x52A1;&lt;/h3&gt;&lt;p&gt;&amp;#x901A;&amp;#x8FC7;&lt;code&gt;WorkManager&lt;/code&gt;&amp;#x7684;&lt;code&gt;enqueue&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x63D0;&amp;#x4EA4;&amp;#x4EFB;&amp;#x52A1;&amp;#x8BF7;&amp;#x6C42;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;WorkManager.getInstance(context).enqueue(workRequest)&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h2 id=&quot;&amp;#x9AD8;&amp;#x7EA7;&amp;#x4F7F;&amp;#x7528;&amp;#x65B9;&amp;#x5F0F;&quot;&gt;&lt;a href=&quot;#&amp;#x9AD8;&amp;#x7EA7;&amp;#x4F7F;&amp;#x7528;&amp;#x65B9;&amp;#x5F0F;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x9AD8;&amp;#x7EA7;&amp;#x4F7F;&amp;#x7528;&amp;#x65B9;&amp;#x5F0F;&quot;&gt;&lt;/a&gt;&amp;#x9AD8;&amp;#x7EA7;&amp;#x4F7F;&amp;#x7528;&amp;#x65B9;&amp;#x5F0F;&lt;/h2&gt;&lt;h3 id=&quot;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x91CD;&amp;#x8BD5;&amp;#x7B56;&amp;#x7565;&quot;&gt;&lt;a href=&quot;#&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x91CD;&amp;#x8BD5;&amp;#x7B56;&amp;#x7565;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x91CD;&amp;#x8BD5;&amp;#x7B56;&amp;#x7565;&quot;&gt;&lt;/a&gt;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x91CD;&amp;#x8BD5;&amp;#x7B56;&amp;#x7565;&lt;/h3&gt;&lt;p&gt;WorkManager&amp;#x5141;&amp;#x8BB8;&amp;#x5F00;&amp;#x53D1;&amp;#x8005;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x91CD;&amp;#x8BD5;&amp;#x7B56;&amp;#x7565;&amp;#x3002;&amp;#x901A;&amp;#x8FC7;&amp;#x5728;&lt;code&gt;OneTimeWorkRequestBuilder&lt;/code&gt;&amp;#x4E2D;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;setBackoffCriteria&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x5B9A;&amp;#x4E49;&amp;#x6307;&amp;#x6570;&amp;#x9000;&amp;#x907F;&amp;#x7684;&amp;#x91CD;&amp;#x8BD5;&amp;#x7B56;&amp;#x7565;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; workRequest = OneTimeWorkRequestBuilder&amp;lt;MyWorker&amp;gt;()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    .setBackoffCriteria(&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        BackoffPolicy.LINEAR,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        OneTimeWorkRequest.MIN_BACKOFF_MILLIS,&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        TimeUnit.MILLISECONDS&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    )&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    .build()&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h3 id=&quot;&amp;#x94FE;&amp;#x5F0F;&amp;#x4EFB;&amp;#x52A1;&quot;&gt;&lt;a href=&quot;#&amp;#x94FE;&amp;#x5F0F;&amp;#x4EFB;&amp;#x52A1;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x94FE;&amp;#x5F0F;&amp;#x4EFB;&amp;#x52A1;&quot;&gt;&lt;/a&gt;&amp;#x94FE;&amp;#x5F0F;&amp;#x4EFB;&amp;#x52A1;&lt;/h3&gt;&lt;p&gt;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;beginWith&lt;/code&gt;&amp;#x3001;&lt;code&gt;then&lt;/code&gt;&amp;#x7B49;&amp;#x65B9;&amp;#x6CD5;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x6784;&amp;#x5EFA;&amp;#x4EFB;&amp;#x52A1;&amp;#x94FE;&amp;#xFF0C;&amp;#x786E;&amp;#x4FDD;&amp;#x5B83;&amp;#x4EEC;&amp;#x6309;&amp;#x7167;&amp;#x9884;&amp;#x671F;&amp;#x7684;&amp;#x987A;&amp;#x5E8F;&amp;#x6267;&amp;#x884C;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight kotlin&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; workRequest1 = OneTimeWorkRequest.Builder(Task1::&lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt;.&lt;span class=&quot;title&quot;&gt;java&lt;/span&gt;).&lt;span class=&quot;title&quot;&gt;build&lt;/span&gt;&lt;/span&gt;()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;val&lt;/span&gt; workRequest2 = OneTimeWorkRequest.Builder(Task2::&lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt;.&lt;span class=&quot;title&quot;&gt;java&lt;/span&gt;).&lt;span class=&quot;title&quot;&gt;build&lt;/span&gt;&lt;/span&gt;()&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;WorkManager.getInstance(context)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    .beginWith(workRequest1)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    .then(workRequest2)&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    .enqueue()&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h2 id=&quot;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&quot;&gt;&lt;a href=&quot;#&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&quot;&gt;&lt;/a&gt;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&lt;/h2&gt;&lt;ul&gt;
&lt;li&gt;&amp;#x6570;&amp;#x636E;&amp;#x4F20;&amp;#x9012;: &amp;#x5F53;&amp;#x4F7F;&amp;#x7528;WorkManager&amp;#x6267;&amp;#x884C;&amp;#x4EFB;&amp;#x52A1;&amp;#x65F6;&amp;#xFF0C;&amp;#x9700;&amp;#x8981;&amp;#x6CE8;&amp;#x610F;&amp;#x4EFB;&amp;#x52A1;&amp;#x4E4B;&amp;#x95F4;&amp;#x7684;&amp;#x6570;&amp;#x636E;&amp;#x4F20;&amp;#x9012;&amp;#x3002;WorkManager&amp;#x63D0;&amp;#x4F9B;&amp;#x4E86;&lt;code&gt;Data&lt;/code&gt;&amp;#x7C7B;&amp;#x6765;&amp;#x4F20;&amp;#x9012;&amp;#x7B80;&amp;#x5355;&amp;#x7684;&amp;#x952E;&amp;#x503C;&amp;#x5BF9;&amp;#x6570;&amp;#x636E;&amp;#x3002;&amp;#x786E;&amp;#x4FDD;&amp;#x4F20;&amp;#x9012;&amp;#x7684;&amp;#x6570;&amp;#x636E;&amp;#x662F;&amp;#x5E8F;&amp;#x5217;&amp;#x5316;&amp;#x7684;&amp;#xFF0C;&amp;#x4EE5;&amp;#x907F;&amp;#x514D;&amp;#x56E0;&amp;#x4E3A;&amp;#x8FDB;&amp;#x7A0B;&amp;#x95F4;&amp;#x901A;&amp;#x4FE1;&amp;#x5BFC;&amp;#x81F4;&amp;#x7684;&amp;#x95EE;&amp;#x9898;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&amp;#x4EFB;&amp;#x52A1;&amp;#x552F;&amp;#x4E00;&amp;#x6027;: &amp;#x4FDD;&amp;#x8BC1;&amp;#x6BCF;&amp;#x4E2A;&amp;#x4EFB;&amp;#x52A1;&amp;#x6709;&amp;#x552F;&amp;#x4E00;&amp;#x7684;&amp;#x6807;&amp;#x8BC6;&amp;#x7B26;&amp;#x662F;&amp;#x5F88;&amp;#x91CD;&amp;#x8981;&amp;#x7684;&amp;#x3002;&amp;#x5728;&amp;#x521B;&amp;#x5EFA;&lt;code&gt;OneTimeWorkRequest&lt;/code&gt;&amp;#x65F6;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;setInputData&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x8BBE;&amp;#x7F6E;&amp;#x8F93;&amp;#x5165;&amp;#x6570;&amp;#x636E;&amp;#xFF0C;&amp;#x786E;&amp;#x4FDD;&amp;#x4EFB;&amp;#x52A1;&amp;#x6267;&amp;#x884C;&amp;#x65F6;&amp;#x6709;&amp;#x8DB3;&amp;#x591F;&amp;#x7684;&amp;#x4FE1;&amp;#x606F;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;&amp;#x603B;&amp;#x7ED3;&quot;&gt;&lt;a href=&quot;#&amp;#x603B;&amp;#x7ED3;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x603B;&amp;#x7ED3;&quot;&gt;&lt;/a&gt;&amp;#x603B;&amp;#x7ED3;&lt;/h2&gt;&lt;p&gt;&amp;#x901A;&amp;#x8FC7;&amp;#x672C;&amp;#x6587;&amp;#x7684;&amp;#x4ECB;&amp;#x7ECD;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x8BE6;&amp;#x7EC6;&amp;#x4E86;&amp;#x89E3;&amp;#x4E86;Android WorkManager&amp;#x7684;&amp;#x5185;&amp;#x90E8;&amp;#x5B9E;&amp;#x73B0;&amp;#x7EC6;&amp;#x8282;&amp;#x3001;&amp;#x539F;&amp;#x7406;&amp;#x3001;&amp;#x5177;&amp;#x4F53;&amp;#x4F7F;&amp;#x7528;&amp;#x3002;&amp;#x5176;&amp;#x7075;&amp;#x6D3B;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#x8C03;&amp;#x5EA6;&amp;#x67B6;&amp;#x6784;&amp;#x548C;&amp;#x667A;&amp;#x80FD;&amp;#x7EA6;&amp;#x675F;&amp;#x5904;&amp;#x7406;&amp;#x4F7F;&amp;#x5F97;&amp;#x5F00;&amp;#x53D1;&amp;#x8005;&amp;#x80FD;&amp;#x591F;&amp;#x8F7B;&amp;#x677E;&amp;#x7BA1;&amp;#x7406;&amp;#x540E;&amp;#x53F0;&amp;#x4EFB;&amp;#x52A1;&amp;#xFF0C;&amp;#x63D0;&amp;#x5347;&amp;#x5E94;&amp;#x7528;&amp;#x7684;&amp;#x6027;&amp;#x80FD;&amp;#x548C;&amp;#x7528;&amp;#x6237;&amp;#x4F53;&amp;#x9A8C;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;a href=&quot;#&amp;#x63A8;&amp;#x8350;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;/a&gt;&amp;#x63A8;&amp;#x8350;&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-startup&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android_startup&lt;/a&gt;: &amp;#x63D0;&amp;#x4F9B;&amp;#x4E00;&amp;#x79CD;&amp;#x5728;&amp;#x5E94;&amp;#x7528;&amp;#x542F;&amp;#x52A8;&amp;#x65F6;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x52A0;&amp;#x7B80;&amp;#x5355;&amp;#x3001;&amp;#x9AD8;&amp;#x6548;&amp;#x7684;&amp;#x65B9;&amp;#x5F0F;&amp;#x6765;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x7EC4;&amp;#x4EF6;&amp;#xFF0C;&amp;#x4F18;&amp;#x5316;&amp;#x542F;&amp;#x52A8;&amp;#x901F;&amp;#x5EA6;&amp;#x3002;&amp;#x4E0D;&amp;#x4EC5;&amp;#x652F;&amp;#x6301;Jetpack App Startup&amp;#x7684;&amp;#x5168;&amp;#x90E8;&amp;#x529F;&amp;#x80FD;&amp;#xFF0C;&amp;#x8FD8;&amp;#x63D0;&amp;#x4F9B;&amp;#x989D;&amp;#x5916;&amp;#x7684;&amp;#x540C;&amp;#x6B65;&amp;#x4E0E;&amp;#x5F02;&amp;#x6B65;&amp;#x7B49;&amp;#x5F85;&amp;#x3001;&amp;#x7EBF;&amp;#x7A0B;&amp;#x63A7;&amp;#x5236;&amp;#x4E0E;&amp;#x591A;&amp;#x8FDB;&amp;#x7A0B;&amp;#x652F;&amp;#x6301;&amp;#x7B49;&amp;#x529F;&amp;#x80FD;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/AwesomeGithub&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AwesomeGithub&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Github&amp;#x7684;&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x7EAF;&amp;#x7EC3;&amp;#x4E60;&amp;#x9879;&amp;#x76EE;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x7EC4;&amp;#x4EF6;&amp;#x5316;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x8D26;&amp;#x6237;&amp;#x5BC6;&amp;#x7801;&amp;#x4E0E;&amp;#x8BA4;&amp;#x8BC1;&amp;#x767B;&amp;#x9646;&amp;#x3002;&amp;#x4F7F;&amp;#x7528;Kotlin&amp;#x8BED;&amp;#x8A00;&amp;#x8FDB;&amp;#x884C;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x9879;&amp;#x76EE;&amp;#x67B6;&amp;#x6784;&amp;#x662F;&amp;#x57FA;&amp;#x4E8E;JetPack\&amp;amp;DataBinding&amp;#x7684;MVVM&amp;#xFF1B;&amp;#x9879;&amp;#x76EE;&amp;#x4E2D;&amp;#x4F7F;&amp;#x7528;&amp;#x4E86;Arouter&amp;#x3001;Retrofit&amp;#x3001;Coroutine&amp;#x3001;Glide&amp;#x3001;Dagger&amp;#x4E0E;Hilt&amp;#x7B49;&amp;#x6D41;&amp;#x884C;&amp;#x5F00;&amp;#x6E90;&amp;#x6280;&amp;#x672F;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/flutter_github&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;flutter_github&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Flutter&amp;#x7684;&amp;#x8DE8;&amp;#x5E73;&amp;#x53F0;&amp;#x7248;&amp;#x672C;Github&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x4E0E;AwesomeGithub&amp;#x76F8;&amp;#x5BF9;&amp;#x5E94;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-api-analysis&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android-api-analysis&lt;/a&gt;: &amp;#x7ED3;&amp;#x5408;&amp;#x8BE6;&amp;#x7EC6;&amp;#x7684;Demo&amp;#x6765;&amp;#x5168;&amp;#x9762;&amp;#x89E3;&amp;#x6790;Android&amp;#x76F8;&amp;#x5173;&amp;#x7684;&amp;#x77E5;&amp;#x8BC6;&amp;#x70B9;, &amp;#x5E2E;&amp;#x52A9;&amp;#x8BFB;&amp;#x8005;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x5FEB;&amp;#x7684;&amp;#x638C;&amp;#x63E1;&amp;#x4E0E;&amp;#x7406;&amp;#x89E3;&amp;#x6240;&amp;#x9610;&amp;#x8FF0;&amp;#x7684;&amp;#x8981;&amp;#x70B9;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/daily_algorithm&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;daily_algorithm&lt;/a&gt;: &amp;#x6BCF;&amp;#x65E5;&amp;#x4E00;&amp;#x7B97;&amp;#x6CD5;&amp;#xFF0C;&amp;#x7531;&amp;#x6D45;&amp;#x5165;&amp;#x6DF1;&amp;#xFF0C;&amp;#x6B22;&amp;#x8FCE;&amp;#x52A0;&amp;#x5165;&amp;#x4E00;&amp;#x8D77;&amp;#x5171;&amp;#x52C9;&amp;#x3002;&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;h2 id=&quot;&amp;#x4ECB;&amp;#x7ECD;&quot;&gt;&lt;a href=&quot;#&amp;#x4ECB;&amp;#x7ECD;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4ECB;&amp;#x7ECD;&quot;&gt;&lt;/a&gt;&amp;#x4ECB;&amp;#x7ECD;&lt;/h2&gt;&lt;p&gt;&amp;#x5728;Androi
    
    </summary>
    
      <category term="android" scheme="https://www.rousetime.com/categories/android/"/>
    
    
      <category term="android" scheme="https://www.rousetime.com/tags/android/"/>
    
  </entry>
  
  <entry>
    <title>Android IntentService的开发技巧</title>
    <link href="https://www.rousetime.com/2023/12/12/Android-IntentService%E7%9A%84%E5%BC%80%E5%8F%91%E6%8A%80%E5%B7%A7/"/>
    <id>https://www.rousetime.com/2023/12/12/Android-IntentService的开发技巧/</id>
    <published>2023-12-12T01:58:56.000Z</published>
    <updated>2023-12-12T01:59:25.870Z</updated>
    
    <content type="html">&lt;p&gt;Android &amp;#x5E94;&amp;#x7528;&amp;#x5F00;&amp;#x53D1;&amp;#x4E2D;&amp;#xFF0C;&amp;#x6267;&amp;#x884C;&amp;#x540E;&amp;#x53F0;&amp;#x4EFB;&amp;#x52A1;&amp;#x662F;&amp;#x5E38;&amp;#x89C1;&amp;#x9700;&amp;#x6C42;&amp;#x4E4B;&amp;#x4E00;&amp;#x3002;&amp;#x5176;&amp;#x4E2D;&amp;#xFF0C;&lt;code&gt;IntentService&lt;/code&gt; &amp;#x662F;&amp;#x4E00;&amp;#x79CD;&amp;#x5F3A;&amp;#x5927;&amp;#x7684;&amp;#x5DE5;&amp;#x5177;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x8F7B;&amp;#x677E;&amp;#x7BA1;&amp;#x7406;&amp;#x5F02;&amp;#x6B65;&amp;#x4EFB;&amp;#x52A1;&amp;#xFF0C;&amp;#x800C;&amp;#x65E0;&amp;#x9700;&amp;#x62C5;&amp;#x5FC3;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7BA1;&amp;#x7406;&amp;#x548C;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x95EE;&amp;#x9898;&amp;#x3002;&amp;#x672C;&amp;#x6587;&amp;#x5C06;&amp;#x6DF1;&amp;#x5165;&amp;#x63A2;&amp;#x8BA8; &lt;code&gt;IntentService&lt;/code&gt; &amp;#x7684;&amp;#x5404;&amp;#x4E2A;&amp;#x65B9;&amp;#x9762;&amp;#xFF0C;&amp;#x5305;&amp;#x62EC;&amp;#x57FA;&amp;#x672C;&amp;#x7528;&amp;#x6CD5;&amp;#x3001;&amp;#x7279;&amp;#x70B9;&amp;#x3001;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x3001;&amp;#x4E0E;&amp;#x5176;&amp;#x4ED6;&amp;#x670D;&amp;#x52A1;&amp;#x7684;&amp;#x6BD4;&amp;#x8F83;&amp;#x4EE5;&amp;#x53CA;&amp;#x6700;&amp;#x4F73;&amp;#x5B9E;&amp;#x8DF5;&amp;#x7B49;&amp;#x5185;&amp;#x5BB9;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;a href=&quot;#&amp;#x5F15;&amp;#x8A00;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;/a&gt;&amp;#x5F15;&amp;#x8A00;&lt;/h2&gt;&lt;p&gt;&amp;#x5728;&amp;#x79FB;&amp;#x52A8;&amp;#x5E94;&amp;#x7528;&amp;#x5F00;&amp;#x53D1;&amp;#x4E2D;&amp;#xFF0C;&amp;#x7ECF;&amp;#x5E38;&amp;#x9700;&amp;#x8981;&amp;#x5728;&amp;#x540E;&amp;#x53F0;&amp;#x6267;&amp;#x884C;&amp;#x4E00;&amp;#x4E9B;&amp;#x8017;&amp;#x65F6;&amp;#x4EFB;&amp;#x52A1;&amp;#xFF0C;&amp;#x5982;&amp;#x4E0B;&amp;#x8F7D;&amp;#x6587;&amp;#x4EF6;&amp;#x3001;&amp;#x5904;&amp;#x7406;&amp;#x6570;&amp;#x636E;&amp;#x7B49;&amp;#x3002;&lt;code&gt;IntentService&lt;/code&gt; &amp;#x662F; Android &amp;#x4E2D;&amp;#x7684;&amp;#x4E00;&amp;#x4E2A;&amp;#x670D;&amp;#x52A1;&amp;#xFF0C;&amp;#x4E13;&amp;#x95E8;&amp;#x7528;&amp;#x4E8E;&amp;#x7B80;&amp;#x5316;&amp;#x8FD9;&amp;#x7C7B;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x5904;&amp;#x7406;&amp;#x3002;&amp;#x5B83;&amp;#x7EE7;&amp;#x627F;&amp;#x81EA; &lt;code&gt;Service&lt;/code&gt; &amp;#x7C7B;&amp;#xFF0C;&amp;#x5E76;&amp;#x5728;&amp;#x5355;&amp;#x72EC;&amp;#x7684;&amp;#x5DE5;&amp;#x4F5C;&amp;#x7EBF;&amp;#x7A0B;&amp;#x4E2D;&amp;#x6267;&amp;#x884C;&amp;#x4EFB;&amp;#x52A1;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x4E86;&amp;#x591A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7BA1;&amp;#x7406;&amp;#x7684;&amp;#x590D;&amp;#x6742;&amp;#x6027;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;IntentService-&amp;#x7684;&amp;#x7279;&amp;#x70B9;&quot;&gt;&lt;a href=&quot;#IntentService-&amp;#x7684;&amp;#x7279;&amp;#x70B9;&quot; class=&quot;headerlink&quot; title=&quot;IntentService &amp;#x7684;&amp;#x7279;&amp;#x70B9;&quot;&gt;&lt;/a&gt;IntentService &amp;#x7684;&amp;#x7279;&amp;#x70B9;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x81EA;&amp;#x52A8;&amp;#x7BA1;&amp;#x7406;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;IntentService&lt;/code&gt; &amp;#x5728;&amp;#x5B8C;&amp;#x6210;&amp;#x6240;&amp;#x6709;&amp;#x4EFB;&amp;#x52A1;&amp;#x540E;&amp;#x4F1A;&amp;#x81EA;&amp;#x52A8;&amp;#x505C;&amp;#x6B62;&amp;#xFF0C;&amp;#x4E0D;&amp;#x9700;&amp;#x8981;&amp;#x624B;&amp;#x52A8;&amp;#x8C03;&amp;#x7528; &lt;code&gt;stopService&lt;/code&gt;&amp;#x3002;&amp;#x6B64;&amp;#x5916;&amp;#xFF0C;&amp;#x5B83;&amp;#x80FD;&amp;#x591F;&amp;#x6309;&amp;#x987A;&amp;#x5E8F;&amp;#x6267;&amp;#x884C;&amp;#x4EFB;&amp;#x52A1;&amp;#x961F;&amp;#x5217;&amp;#xFF0C;&amp;#x786E;&amp;#x4FDD;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x6709;&amp;#x5E8F;&amp;#x6267;&amp;#x884C;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x5355;&amp;#x7EBF;&amp;#x7A0B;&amp;#x64CD;&amp;#x4F5C;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;IntentService&lt;/code&gt; &amp;#x5728;&amp;#x5355;&amp;#x72EC;&amp;#x7684;&amp;#x5DE5;&amp;#x4F5C;&amp;#x7EBF;&amp;#x7A0B;&amp;#x4E2D;&amp;#x6267;&amp;#x884C;&amp;#x4EFB;&amp;#x52A1;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x4E86;&amp;#x591A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7BA1;&amp;#x7406;&amp;#x7684;&amp;#x590D;&amp;#x6742;&amp;#x6027;&amp;#x3002;&amp;#x8FD9;&amp;#x4F7F;&amp;#x5F97;&amp;#x5B83;&amp;#x7279;&amp;#x522B;&amp;#x9002;&amp;#x7528;&amp;#x4E8E;&amp;#x9700;&amp;#x8981;&amp;#x6309;&amp;#x987A;&amp;#x5E8F;&amp;#x6267;&amp;#x884C;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;&amp;#x4F7F;&amp;#x7528;-IntentService&quot;&gt;&lt;a href=&quot;#&amp;#x4F7F;&amp;#x7528;-IntentService&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4F7F;&amp;#x7528; IntentService&quot;&gt;&lt;/a&gt;&amp;#x4F7F;&amp;#x7528; IntentService&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x521B;&amp;#x5EFA; IntentService&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;#x521B;&amp;#x5EFA;&amp;#x4E00;&amp;#x4E2A; &lt;code&gt;IntentService&lt;/code&gt; &amp;#x9700;&amp;#x8981;&amp;#x7EE7;&amp;#x627F;&amp;#x8BE5;&amp;#x7C7B;&amp;#xFF0C;&amp;#x5E76;&amp;#x5B9E;&amp;#x73B0;&amp;#x6784;&amp;#x9020;&amp;#x51FD;&amp;#x6570;&amp;#x548C; &lt;code&gt;onHandleIntent&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;MyIntentService&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;IntentService&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;MyIntentService&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;keyword&quot;&gt;super&lt;/span&gt;(&lt;span class=&quot;string&quot;&gt;&amp;quot;MyIntentService&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;meta&quot;&gt;@Override&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;protected&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;onHandleIntent&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(@Nullable Intent intent)&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x5728;&amp;#x8FD9;&amp;#x91CC;&amp;#x6267;&amp;#x884C;&amp;#x5177;&amp;#x4F53;&amp;#x7684;&amp;#x540E;&amp;#x53F0;&amp;#x4EFB;&amp;#x52A1;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        String data = intent.getStringExtra(&lt;span class=&quot;string&quot;&gt;&amp;quot;data&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x5904;&amp;#x7406;&amp;#x6570;&amp;#x636E;...&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x542F;&amp;#x52A8; IntentService&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;#x4F7F;&amp;#x7528; &lt;code&gt;startService&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x542F;&amp;#x52A8; &lt;code&gt;IntentService&lt;/code&gt;&amp;#xFF0C;&amp;#x901A;&amp;#x8FC7;&amp;#x521B;&amp;#x5EFA; &lt;code&gt;Intent&lt;/code&gt; &amp;#x5BF9;&amp;#x8C61;&amp;#x6765;&amp;#x4F20;&amp;#x9012;&amp;#x9700;&amp;#x8981;&amp;#x6267;&amp;#x884C;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x542F;&amp;#x52A8; IntentService &amp;#x7684;&amp;#x793A;&amp;#x4F8B;&amp;#x4EE3;&amp;#x7801;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;Intent intent = &lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt; Intent(context, MyIntentService&lt;span class=&quot;class&quot;&gt;.&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt;)&lt;/span&gt;;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;intent.putExtra(&lt;span class=&quot;string&quot;&gt;&amp;quot;data&amp;quot;&lt;/span&gt;, &lt;span class=&quot;string&quot;&gt;&amp;quot;example_data&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;context.startService(intent);&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x4EFB;&amp;#x52A1;&amp;#x5904;&amp;#x7406;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;#x5728; &lt;code&gt;onHandleIntent&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x4E2D;&amp;#x6267;&amp;#x884C;&amp;#x5177;&amp;#x4F53;&amp;#x7684;&amp;#x8017;&amp;#x65F6;&amp;#x4EFB;&amp;#x52A1;&amp;#xFF0C;&amp;#x901A;&amp;#x8FC7; &lt;code&gt;Intent&lt;/code&gt; &amp;#x63D0;&amp;#x53D6;&amp;#x4F20;&amp;#x9012;&amp;#x7684;&amp;#x6570;&amp;#x636E;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;meta&quot;&gt;@Override&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;protected&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;onHandleIntent&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(@Nullable Intent intent)&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    String data = intent.getStringExtra(&lt;span class=&quot;string&quot;&gt;&amp;quot;data&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x5904;&amp;#x7406;&amp;#x6570;&amp;#x636E;...&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;IntentService-&amp;#x7684;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&quot;&gt;&lt;a href=&quot;#IntentService-&amp;#x7684;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&quot; class=&quot;headerlink&quot; title=&quot;IntentService &amp;#x7684;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&quot;&gt;&lt;/a&gt;IntentService &amp;#x7684;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x521B;&amp;#x5EFA;&amp;#x548C;&amp;#x9500;&amp;#x6BC1;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;IntentService&lt;/code&gt; &amp;#x5728;&amp;#x4EFB;&amp;#x52A1;&amp;#x5B8C;&amp;#x6210;&amp;#x540E;&amp;#x81EA;&amp;#x52A8;&amp;#x505C;&amp;#x6B62;&amp;#xFF0C;&amp;#x65E0;&amp;#x9700;&amp;#x624B;&amp;#x52A8;&amp;#x7BA1;&amp;#x7406;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x3002;&amp;#x5728;&amp;#x5B8C;&amp;#x6210;&amp;#x6240;&amp;#x6709;&amp;#x4EFB;&amp;#x52A1;&amp;#x540E;&amp;#xFF0C;&lt;code&gt;IntentService&lt;/code&gt; &amp;#x4F1A;&amp;#x8C03;&amp;#x7528; &lt;code&gt;onDestroy&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7BA1;&amp;#x7406;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;#x5DE5;&amp;#x4F5C;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7684;&amp;#x521B;&amp;#x5EFA;&amp;#x548C;&amp;#x7BA1;&amp;#x7406;&amp;#x7531; &lt;code&gt;IntentService&lt;/code&gt; &amp;#x81EA;&amp;#x52A8;&amp;#x5904;&amp;#x7406;&amp;#xFF0C;&amp;#x5F00;&amp;#x53D1;&amp;#x8005;&amp;#x65E0;&amp;#x9700;&amp;#x62C5;&amp;#x5FC3;&amp;#x591A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x76F8;&amp;#x5173;&amp;#x7684;&amp;#x7EC6;&amp;#x8282;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;IntentService-&amp;#x4E0E;&amp;#x5176;&amp;#x4ED6;&amp;#x670D;&amp;#x52A1;&amp;#x7684;&amp;#x6BD4;&amp;#x8F83;&quot;&gt;&lt;a href=&quot;#IntentService-&amp;#x4E0E;&amp;#x5176;&amp;#x4ED6;&amp;#x670D;&amp;#x52A1;&amp;#x7684;&amp;#x6BD4;&amp;#x8F83;&quot; class=&quot;headerlink&quot; title=&quot;IntentService &amp;#x4E0E;&amp;#x5176;&amp;#x4ED6;&amp;#x670D;&amp;#x52A1;&amp;#x7684;&amp;#x6BD4;&amp;#x8F83;&quot;&gt;&lt;/a&gt;IntentService &amp;#x4E0E;&amp;#x5176;&amp;#x4ED6;&amp;#x670D;&amp;#x52A1;&amp;#x7684;&amp;#x6BD4;&amp;#x8F83;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x4E0E; Service &amp;#x7684;&amp;#x6BD4;&amp;#x8F83;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;#x76F8;&amp;#x5BF9;&amp;#x4E8E;&amp;#x666E;&amp;#x901A; &lt;code&gt;Service&lt;/code&gt;&amp;#xFF0C;&lt;code&gt;IntentService&lt;/code&gt; &amp;#x66F4;&amp;#x9002;&amp;#x7528;&amp;#x4E8E;&amp;#x4E00;&amp;#x6B21;&amp;#x6027;&amp;#x3001;&amp;#x6709;&amp;#x5E8F;&amp;#x6267;&amp;#x884C;&amp;#x7684;&amp;#x540E;&amp;#x53F0;&amp;#x4EFB;&amp;#x52A1;&amp;#x3002;&amp;#x666E;&amp;#x901A; &lt;code&gt;Service&lt;/code&gt; &amp;#x9700;&amp;#x8981;&amp;#x624B;&amp;#x52A8;&amp;#x7BA1;&amp;#x7406;&amp;#x7EBF;&amp;#x7A0B;&amp;#x548C;&amp;#x4EFB;&amp;#x52A1;&amp;#x961F;&amp;#x5217;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x4E0E; AsyncTask &amp;#x7684;&amp;#x6BD4;&amp;#x8F83;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;#x4E0E; &lt;code&gt;AsyncTask&lt;/code&gt; &amp;#x76F8;&amp;#x6BD4;&amp;#xFF0C;&lt;code&gt;IntentService&lt;/code&gt; &amp;#x5728;&amp;#x6267;&amp;#x884C;&amp;#x5F02;&amp;#x6B65;&amp;#x4EFB;&amp;#x52A1;&amp;#x65F6;&amp;#x66F4;&amp;#x4E3A;&amp;#x7B80;&amp;#x4FBF;&amp;#xFF0C;&amp;#x4E14;&amp;#x4E0D;&amp;#x5BB9;&amp;#x6613;&amp;#x5BFC;&amp;#x81F4;&amp;#x5185;&amp;#x5B58;&amp;#x6CC4;&amp;#x6F0F;&amp;#x3002;&lt;code&gt;AsyncTask&lt;/code&gt; &amp;#x5728;&amp;#x5904;&amp;#x7406;&amp;#x957F;&amp;#x65F6;&amp;#x95F4;&amp;#x8FD0;&amp;#x884C;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#x65F6;&amp;#x9700;&amp;#x8981;&amp;#x989D;&amp;#x5916;&amp;#x7684;&amp;#x6CE8;&amp;#x610F;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;&amp;#x5B9E;&amp;#x4F8B;&amp;#x4E0E;&amp;#x793A;&amp;#x4F8B;&amp;#x4EE3;&amp;#x7801;&quot;&gt;&lt;a href=&quot;#&amp;#x5B9E;&amp;#x4F8B;&amp;#x4E0E;&amp;#x793A;&amp;#x4F8B;&amp;#x4EE3;&amp;#x7801;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5B9E;&amp;#x4F8B;&amp;#x4E0E;&amp;#x793A;&amp;#x4F8B;&amp;#x4EE3;&amp;#x7801;&quot;&gt;&lt;/a&gt;&amp;#x5B9E;&amp;#x4F8B;&amp;#x4E0E;&amp;#x793A;&amp;#x4F8B;&amp;#x4EE3;&amp;#x7801;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x57FA;&amp;#x672C;&amp;#x7528;&amp;#x6CD5;&amp;#x793A;&amp;#x4F8B;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;#x521B;&amp;#x5EFA;&amp;#x4E00;&amp;#x4E2A;&amp;#x7B80;&amp;#x5355;&amp;#x7684; &lt;code&gt;IntentService&lt;/code&gt; &amp;#x793A;&amp;#x4F8B;&amp;#xFF0C;&amp;#x6267;&amp;#x884C;&amp;#x540E;&amp;#x53F0;&amp;#x4EFB;&amp;#x52A1;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;MyIntentService&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;IntentService&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x6784;&amp;#x9020;&amp;#x51FD;&amp;#x6570;&amp;#x548C;onHandleIntent&amp;#x65B9;&amp;#x6CD5;&amp;#x7684;&amp;#x5B9E;&amp;#x73B0;...&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x4F20;&amp;#x9012;&amp;#x6570;&amp;#x636E;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;#x901A;&amp;#x8FC7; &lt;code&gt;Intent&lt;/code&gt; &amp;#x4F20;&amp;#x9012;&amp;#x6570;&amp;#x636E;&amp;#x7ED9; &lt;code&gt;IntentService&lt;/code&gt;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;Intent intent = &lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt; Intent(context, MyIntentService&lt;span class=&quot;class&quot;&gt;.&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt;)&lt;/span&gt;;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;intent.putExtra(&lt;span class=&quot;string&quot;&gt;&amp;quot;data&amp;quot;&lt;/span&gt;, &lt;span class=&quot;string&quot;&gt;&amp;quot;example_data&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;context.startService(intent);&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x901A;&amp;#x77E5;&amp;#x754C;&amp;#x9762;&amp;#x66F4;&amp;#x65B0;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;#x4F7F;&amp;#x7528;&amp;#x5E7F;&amp;#x64AD;&amp;#x6216;&amp;#x56DE;&amp;#x8C03;&amp;#x6765;&amp;#x901A;&amp;#x77E5;&amp;#x754C;&amp;#x9762;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x5B8C;&amp;#x6210;&amp;#x60C5;&amp;#x51B5;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x793A;&amp;#x4F8B;&amp;#x4EE3;&amp;#x7801;&amp;#xFF1A;&amp;#x4F7F;&amp;#x7528;&amp;#x5E7F;&amp;#x64AD;&amp;#x901A;&amp;#x77E5;&amp;#x754C;&amp;#x9762;&amp;#x66F4;&amp;#x65B0;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;MyIntentService&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;extends&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;IntentService&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// onHandleIntent&amp;#x65B9;&amp;#x6CD5;&amp;#x4E2D;&amp;#x4EFB;&amp;#x52A1;&amp;#x5B8C;&amp;#x6210;&amp;#x540E;&amp;#x53D1;&amp;#x9001;&amp;#x5E7F;&amp;#x64AD;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;notifyUI&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;()&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        Intent intent = &lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt; Intent(&lt;span class=&quot;string&quot;&gt;&amp;quot;com.example.ACTION_TASK_COMPLETE&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        LocalBroadcastManager.getInstance(&lt;span class=&quot;keyword&quot;&gt;this&lt;/span&gt;).sendBroadcast(intent);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&quot;&gt;&lt;a href=&quot;#&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&quot;&gt;&lt;/a&gt;&amp;#x6CE8;&amp;#x610F;&amp;#x4E8B;&amp;#x9879;&lt;/h2&gt;&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x957F;&amp;#x65F6;&amp;#x95F4;&amp;#x8FD0;&amp;#x884C;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;#x957F;&amp;#x65F6;&amp;#x95F4;&amp;#x8FD0;&amp;#x884C;&amp;#x7684;&amp;#x4EFB;&amp;#x52A1;&amp;#x53EF;&amp;#x80FD;&amp;#x5BFC;&amp;#x81F4; &lt;code&gt;IntentService&lt;/code&gt; &amp;#x88AB;&amp;#x7CFB;&amp;#x7EDF;&amp;#x7EC8;&amp;#x6B62;&amp;#xFF0C;&amp;#x9700;&amp;#x8981;&amp;#x6CE8;&amp;#x610F;&amp;#x5904;&amp;#x7406;&amp;#x8FD9;&amp;#x79CD;&amp;#x60C5;&amp;#x51B5;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;&amp;#x9AD8;&amp;#x7248;&amp;#x672C;&amp;#x66FF;&amp;#x4EE3;&amp;#x54C1;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&amp;#x5728;Android8.0&amp;#x53CA;&amp;#x4EE5;&amp;#x540E;&lt;code&gt;IntentService&lt;/code&gt;&amp;#x4E0D;&amp;#x518D;&amp;#x63A8;&amp;#x8350;&amp;#x4F7F;&amp;#x7528;&amp;#xFF0C;&amp;#x9AD8;&amp;#x7248;&amp;#x672C;&amp;#x63A8;&amp;#x8350;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;WorkManager&lt;/code&gt;&amp;#x3002;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h2 id=&quot;&amp;#x603B;&amp;#x7ED3;&quot;&gt;&lt;a href=&quot;#&amp;#x603B;&amp;#x7ED3;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x603B;&amp;#x7ED3;&quot;&gt;&lt;/a&gt;&amp;#x603B;&amp;#x7ED3;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;IntentService&lt;/code&gt;&amp;#x7B80;&amp;#x5316;&amp;#x4E86;&amp;#x540E;&amp;#x53F0;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x6267;&amp;#x884C;&amp;#xFF0C;&amp;#x63D0;&amp;#x9AD8;&amp;#x4E86;&amp;#x5F00;&amp;#x53D1;&amp;#x6548;&amp;#x7387;&amp;#x3002;&amp;#x5176;&amp;#x81EA;&amp;#x52A8;&amp;#x7BA1;&amp;#x7406;&amp;#x751F;&amp;#x547D;&amp;#x5468;&amp;#x671F;&amp;#x548C;&amp;#x7EBF;&amp;#x7A0B;&amp;#xFF0C;&amp;#x4F7F;&amp;#x5F97;&amp;#x5F00;&amp;#x53D1;&amp;#x8005;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x4E13;&amp;#x6CE8;&amp;#x4E8E;&amp;#x4E1A;&amp;#x52A1;&amp;#x903B;&amp;#x8F91;&amp;#x7684;&amp;#x5B9E;&amp;#x73B0;&amp;#x3002;&amp;#x901A;&amp;#x8FC7;&amp;#x672C;&amp;#x6587;&amp;#x7684;&amp;#x6DF1;&amp;#x5165;&amp;#x89E3;&amp;#x6790;&amp;#xFF0C;&amp;#x76F8;&amp;#x4FE1;&amp;#x8BFB;&amp;#x8005;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x5168;&amp;#x9762;&amp;#x5730;&amp;#x4E86;&amp;#x89E3;&amp;#x5E76;&amp;#x5408;&amp;#x7406;&amp;#x4F7F;&amp;#x7528; &lt;code&gt;IntentService&lt;/code&gt;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;a href=&quot;#&amp;#x63A8;&amp;#x8350;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;/a&gt;&amp;#x63A8;&amp;#x8350;&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-startup&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android_startup&lt;/a&gt;: &amp;#x63D0;&amp;#x4F9B;&amp;#x4E00;&amp;#x79CD;&amp;#x5728;&amp;#x5E94;&amp;#x7528;&amp;#x542F;&amp;#x52A8;&amp;#x65F6;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x52A0;&amp;#x7B80;&amp;#x5355;&amp;#x3001;&amp;#x9AD8;&amp;#x6548;&amp;#x7684;&amp;#x65B9;&amp;#x5F0F;&amp;#x6765;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x7EC4;&amp;#x4EF6;&amp;#xFF0C;&amp;#x4F18;&amp;#x5316;&amp;#x542F;&amp;#x52A8;&amp;#x901F;&amp;#x5EA6;&amp;#x3002;&amp;#x4E0D;&amp;#x4EC5;&amp;#x652F;&amp;#x6301;Jetpack App Startup&amp;#x7684;&amp;#x5168;&amp;#x90E8;&amp;#x529F;&amp;#x80FD;&amp;#xFF0C;&amp;#x8FD8;&amp;#x63D0;&amp;#x4F9B;&amp;#x989D;&amp;#x5916;&amp;#x7684;&amp;#x540C;&amp;#x6B65;&amp;#x4E0E;&amp;#x5F02;&amp;#x6B65;&amp;#x7B49;&amp;#x5F85;&amp;#x3001;&amp;#x7EBF;&amp;#x7A0B;&amp;#x63A7;&amp;#x5236;&amp;#x4E0E;&amp;#x591A;&amp;#x8FDB;&amp;#x7A0B;&amp;#x652F;&amp;#x6301;&amp;#x7B49;&amp;#x529F;&amp;#x80FD;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/AwesomeGithub&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AwesomeGithub&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Github&amp;#x7684;&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x7EAF;&amp;#x7EC3;&amp;#x4E60;&amp;#x9879;&amp;#x76EE;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x7EC4;&amp;#x4EF6;&amp;#x5316;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x8D26;&amp;#x6237;&amp;#x5BC6;&amp;#x7801;&amp;#x4E0E;&amp;#x8BA4;&amp;#x8BC1;&amp;#x767B;&amp;#x9646;&amp;#x3002;&amp;#x4F7F;&amp;#x7528;Kotlin&amp;#x8BED;&amp;#x8A00;&amp;#x8FDB;&amp;#x884C;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x9879;&amp;#x76EE;&amp;#x67B6;&amp;#x6784;&amp;#x662F;&amp;#x57FA;&amp;#x4E8E;JetPack\&amp;amp;DataBinding&amp;#x7684;MVVM&amp;#xFF1B;&amp;#x9879;&amp;#x76EE;&amp;#x4E2D;&amp;#x4F7F;&amp;#x7528;&amp;#x4E86;Arouter&amp;#x3001;Retrofit&amp;#x3001;Coroutine&amp;#x3001;Glide&amp;#x3001;Dagger&amp;#x4E0E;Hilt&amp;#x7B49;&amp;#x6D41;&amp;#x884C;&amp;#x5F00;&amp;#x6E90;&amp;#x6280;&amp;#x672F;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/flutter_github&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;flutter_github&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Flutter&amp;#x7684;&amp;#x8DE8;&amp;#x5E73;&amp;#x53F0;&amp;#x7248;&amp;#x672C;Github&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x4E0E;AwesomeGithub&amp;#x76F8;&amp;#x5BF9;&amp;#x5E94;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-api-analysis&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android-api-analysis&lt;/a&gt;: &amp;#x7ED3;&amp;#x5408;&amp;#x8BE6;&amp;#x7EC6;&amp;#x7684;Demo&amp;#x6765;&amp;#x5168;&amp;#x9762;&amp;#x89E3;&amp;#x6790;Android&amp;#x76F8;&amp;#x5173;&amp;#x7684;&amp;#x77E5;&amp;#x8BC6;&amp;#x70B9;, &amp;#x5E2E;&amp;#x52A9;&amp;#x8BFB;&amp;#x8005;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x5FEB;&amp;#x7684;&amp;#x638C;&amp;#x63E1;&amp;#x4E0E;&amp;#x7406;&amp;#x89E3;&amp;#x6240;&amp;#x9610;&amp;#x8FF0;&amp;#x7684;&amp;#x8981;&amp;#x70B9;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/daily_algorithm&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;daily_algorithm&lt;/a&gt;: &amp;#x6BCF;&amp;#x65E5;&amp;#x4E00;&amp;#x7B97;&amp;#x6CD5;&amp;#xFF0C;&amp;#x7531;&amp;#x6D45;&amp;#x5165;&amp;#x6DF1;&amp;#xFF0C;&amp;#x6B22;&amp;#x8FCE;&amp;#x52A0;&amp;#x5165;&amp;#x4E00;&amp;#x8D77;&amp;#x5171;&amp;#x52C9;&amp;#x3002;&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;p&gt;Android &amp;#x5E94;&amp;#x7528;&amp;#x5F00;&amp;#x53D1;&amp;#x4E2D;&amp;#xFF0C;&amp;#x6267;&amp;#x884C;&amp;#x540E;&amp;#x53F0;&amp;#x4EFB;&amp;#x52A1;&amp;#x662F;&amp;#x5E38;&amp;#x89C1;&amp;#x9700;&amp;
    
    </summary>
    
      <category term="android" scheme="https://www.rousetime.com/categories/android/"/>
    
    
      <category term="android" scheme="https://www.rousetime.com/tags/android/"/>
    
  </entry>
  
  <entry>
    <title>深入Android多线程编程与性能优化</title>
    <link href="https://www.rousetime.com/2023/12/07/%E6%B7%B1%E5%85%A5Android%E5%A4%9A%E7%BA%BF%E7%A8%8B%E7%BC%96%E7%A8%8B%E4%B8%8E%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96/"/>
    <id>https://www.rousetime.com/2023/12/07/深入Android多线程编程与性能优化/</id>
    <published>2023-12-07T02:29:27.000Z</published>
    <updated>2023-12-07T02:30:02.005Z</updated>
    
    <content type="html">&lt;h2 id=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;a href=&quot;#&amp;#x5F15;&amp;#x8A00;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;/a&gt;&amp;#x5F15;&amp;#x8A00;&lt;/h2&gt;&lt;p&gt;&amp;#x5728;&amp;#x4E0A;&amp;#x4E00;&amp;#x7BC7;&amp;#x7684;&amp;#x5165;&amp;#x95E8;&amp;#x7BC7;&amp;#x4E2D;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x5BF9;Android&amp;#x7EBF;&amp;#x7A0B;&amp;#x7684;&amp;#x57FA;&amp;#x7840;&amp;#x6982;&amp;#x5FF5;&amp;#x548C;&amp;#x591A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7F16;&amp;#x7A0B;&amp;#x6A21;&amp;#x578B;&amp;#x6709;&amp;#x4E86;&amp;#x521D;&amp;#x6B65;&amp;#x4E86;&amp;#x89E3;&amp;#x3002;&amp;#x672C;&amp;#x7BC7;&amp;#x5C06;&amp;#x6DF1;&amp;#x5165;&amp;#x63A2;&amp;#x8BA8;&amp;#x591A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7F16;&amp;#x7A0B;&amp;#x6280;&amp;#x672F;&amp;#x548C;&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&amp;#x7B56;&amp;#x7565;&amp;#xFF0C;&amp;#x4EE5;&amp;#x63D0;&amp;#x5347;&amp;#x5E94;&amp;#x7528;&amp;#x7684;&amp;#x6548;&amp;#x7387;&amp;#x548C;&amp;#x54CD;&amp;#x5E94;&amp;#x6027;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x9AD8;&amp;#x7EA7;&amp;#x591A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7F16;&amp;#x7A0B;&amp;#x6280;&amp;#x672F;&quot;&gt;&lt;a href=&quot;#&amp;#x9AD8;&amp;#x7EA7;&amp;#x591A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7F16;&amp;#x7A0B;&amp;#x6280;&amp;#x672F;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x9AD8;&amp;#x7EA7;&amp;#x591A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7F16;&amp;#x7A0B;&amp;#x6280;&amp;#x672F;&quot;&gt;&lt;/a&gt;&amp;#x9AD8;&amp;#x7EA7;&amp;#x591A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7F16;&amp;#x7A0B;&amp;#x6280;&amp;#x672F;&lt;/h2&gt;&lt;h3 id=&quot;&amp;#x4F7F;&amp;#x7528;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7BA1;&amp;#x7406;&amp;#x7EBF;&amp;#x7A0B;&quot;&gt;&lt;a href=&quot;#&amp;#x4F7F;&amp;#x7528;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7BA1;&amp;#x7406;&amp;#x7EBF;&amp;#x7A0B;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4F7F;&amp;#x7528;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7BA1;&amp;#x7406;&amp;#x7EBF;&amp;#x7A0B;&quot;&gt;&lt;/a&gt;&amp;#x4F7F;&amp;#x7528;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7BA1;&amp;#x7406;&amp;#x7EBF;&amp;#x7A0B;&lt;/h3&gt;&lt;p&gt;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x662F;&amp;#x4E00;&amp;#x7EC4;&amp;#x9884;&amp;#x5148;&amp;#x521B;&amp;#x5EFA;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#xFF0C;&amp;#x7528;&amp;#x4E8E;&amp;#x6267;&amp;#x884C;&amp;#x4EFB;&amp;#x52A1;&amp;#x3002;&amp;#x901A;&amp;#x8FC7;&amp;#x4F7F;&amp;#x7528;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x907F;&amp;#x514D;&amp;#x4E0D;&amp;#x65AD;&amp;#x521B;&amp;#x5EFA;&amp;#x548C;&amp;#x9500;&amp;#x6BC1;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7684;&amp;#x5F00;&amp;#x9500;&amp;#xFF0C;&amp;#x63D0;&amp;#x9AD8;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7684;&amp;#x91CD;&amp;#x7528;&amp;#x7387;&amp;#xFF0C;&amp;#x540C;&amp;#x65F6;&amp;#x6709;&amp;#x6548;&amp;#x63A7;&amp;#x5236;&amp;#x5E76;&amp;#x53D1;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6570;&amp;#x91CF;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x521B;&amp;#x5EFA;&amp;#x56FA;&amp;#x5B9A;&amp;#x5927;&amp;#x5C0F;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;ExecutorService executor = Executors.newFixedThreadPool(&lt;span class=&quot;number&quot;&gt;5&lt;/span&gt;);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x63D0;&amp;#x4EA4;&amp;#x4EFB;&amp;#x52A1;&amp;#x7ED9;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x6267;&amp;#x884C;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;executor.submit(() -&amp;gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x6267;&amp;#x884C;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x4EE3;&amp;#x7801;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;});&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&amp;#x901A;&amp;#x8FC7;&lt;code&gt;Executors.newFixedThreadPool&lt;/code&gt;&amp;#x521B;&amp;#x5EFA;&amp;#x4E00;&amp;#x4E2A;&amp;#x5305;&amp;#x542B;5&amp;#x4E2A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7684;&amp;#x56FA;&amp;#x5B9A;&amp;#x5927;&amp;#x5C0F;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;executor.submit&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x7528;&amp;#x4E8E;&amp;#x5C06;&amp;#x4EFB;&amp;#x52A1;&amp;#x63D0;&amp;#x4EA4;&amp;#x7ED9;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x6267;&amp;#x884C;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;&amp;#x4F7F;&amp;#x7528;Callable&amp;#x548C;Future&amp;#x83B7;&amp;#x53D6;&amp;#x4EFB;&amp;#x52A1;&amp;#x7ED3;&amp;#x679C;&quot;&gt;&lt;a href=&quot;#&amp;#x4F7F;&amp;#x7528;Callable&amp;#x548C;Future&amp;#x83B7;&amp;#x53D6;&amp;#x4EFB;&amp;#x52A1;&amp;#x7ED3;&amp;#x679C;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4F7F;&amp;#x7528;Callable&amp;#x548C;Future&amp;#x83B7;&amp;#x53D6;&amp;#x4EFB;&amp;#x52A1;&amp;#x7ED3;&amp;#x679C;&quot;&gt;&lt;/a&gt;&amp;#x4F7F;&amp;#x7528;Callable&amp;#x548C;Future&amp;#x83B7;&amp;#x53D6;&amp;#x4EFB;&amp;#x52A1;&amp;#x7ED3;&amp;#x679C;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;Callable&lt;/code&gt;&amp;#x63A5;&amp;#x53E3;&amp;#x5141;&amp;#x8BB8;&amp;#x7EBF;&amp;#x7A0B;&amp;#x8FD4;&amp;#x56DE;&amp;#x7ED3;&amp;#x679C;&amp;#xFF0C;&amp;#x800C;&lt;code&gt;Future&lt;/code&gt;&amp;#x63A5;&amp;#x53E3;&amp;#x5141;&amp;#x8BB8;&amp;#x4E3B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x83B7;&amp;#x53D6;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7684;&amp;#x6267;&amp;#x884C;&amp;#x7ED3;&amp;#x679C;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;Callable&amp;lt;String&amp;gt; callableTask = () -&amp;gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x6267;&amp;#x884C;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x4EE3;&amp;#x7801;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;keyword&quot;&gt;return&lt;/span&gt; &lt;span class=&quot;string&quot;&gt;&amp;quot;Task completed&amp;quot;&lt;/span&gt;;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;};&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;Future&amp;lt;String&amp;gt; future = executor.submit(callableTask);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x83B7;&amp;#x53D6;&amp;#x4EFB;&amp;#x52A1;&amp;#x7ED3;&amp;#x679C;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;String result = future.get();&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;Callable&lt;/code&gt;&amp;#x63A5;&amp;#x53E3;&amp;#x76F8;&amp;#x6BD4;&lt;code&gt;Runnable&lt;/code&gt;&amp;#x63A5;&amp;#x53E3;&amp;#xFF0C;&amp;#x5141;&amp;#x8BB8;&amp;#x5728;&amp;#x6267;&amp;#x884C;&amp;#x5B8C;&amp;#x4EFB;&amp;#x52A1;&amp;#x540E;&amp;#x8FD4;&amp;#x56DE;&amp;#x4E00;&amp;#x4E2A;&amp;#x7ED3;&amp;#x679C;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;executor.submit&lt;/code&gt;&amp;#x8FD4;&amp;#x56DE;&amp;#x4E00;&amp;#x4E2A;&lt;code&gt;Future&lt;/code&gt;&amp;#x5BF9;&amp;#x8C61;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x901A;&amp;#x8FC7;&lt;code&gt;get&lt;/code&gt;&amp;#x65B9;&amp;#x6CD5;&amp;#x83B7;&amp;#x53D6;&amp;#x4EFB;&amp;#x52A1;&amp;#x6267;&amp;#x884C;&amp;#x7684;&amp;#x7ED3;&amp;#x679C;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;&amp;#x4F7F;&amp;#x7528;Lock&amp;#x548C;Condition&amp;#x8FDB;&amp;#x884C;&amp;#x66F4;&amp;#x7CBE;&amp;#x7EC6;&amp;#x7684;&amp;#x540C;&amp;#x6B65;&amp;#x63A7;&amp;#x5236;&quot;&gt;&lt;a href=&quot;#&amp;#x4F7F;&amp;#x7528;Lock&amp;#x548C;Condition&amp;#x8FDB;&amp;#x884C;&amp;#x66F4;&amp;#x7CBE;&amp;#x7EC6;&amp;#x7684;&amp;#x540C;&amp;#x6B65;&amp;#x63A7;&amp;#x5236;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4F7F;&amp;#x7528;Lock&amp;#x548C;Condition&amp;#x8FDB;&amp;#x884C;&amp;#x66F4;&amp;#x7CBE;&amp;#x7EC6;&amp;#x7684;&amp;#x540C;&amp;#x6B65;&amp;#x63A7;&amp;#x5236;&quot;&gt;&lt;/a&gt;&amp;#x4F7F;&amp;#x7528;Lock&amp;#x548C;Condition&amp;#x8FDB;&amp;#x884C;&amp;#x66F4;&amp;#x7CBE;&amp;#x7EC6;&amp;#x7684;&amp;#x540C;&amp;#x6B65;&amp;#x63A7;&amp;#x5236;&lt;/h3&gt;&lt;p&gt;&amp;#x4E0E;&lt;code&gt;synchronized&lt;/code&gt;&amp;#x5173;&amp;#x952E;&amp;#x5B57;&amp;#x76F8;&amp;#x6BD4;&amp;#xFF0C;&lt;code&gt;Lock&lt;/code&gt;&amp;#x63A5;&amp;#x53E3;&amp;#x63D0;&amp;#x4F9B;&amp;#x4E86;&amp;#x66F4;&amp;#x7075;&amp;#x6D3B;&amp;#x7684;&amp;#x9501;&amp;#x5B9A;&amp;#x673A;&amp;#x5236;&amp;#xFF0C;&lt;code&gt;Condition&lt;/code&gt;&amp;#x63A5;&amp;#x53E3;&amp;#x5141;&amp;#x8BB8;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7B49;&amp;#x5F85;&amp;#x7279;&amp;#x5B9A;&amp;#x6761;&amp;#x4EF6;&amp;#x6EE1;&amp;#x8DB3;&amp;#x540E;&amp;#x518D;&amp;#x7EE7;&amp;#x7EED;&amp;#x6267;&amp;#x884C;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;Lock lock = &lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt; ReentrantLock();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;Condition condition = lock.newCondition();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x5728;&amp;#x7EBF;&amp;#x7A0B;&amp;#x4E2D;&amp;#x4F7F;&amp;#x7528;&amp;#x9501;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;lock.lock();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;try&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x4E00;&amp;#x4E9B;&amp;#x9700;&amp;#x8981;&amp;#x540C;&amp;#x6B65;&amp;#x7684;&amp;#x4EE3;&amp;#x7801;&amp;#x5757;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    condition.await(); &lt;span class=&quot;comment&quot;&gt;// &amp;#x7B49;&amp;#x5F85;&amp;#x6761;&amp;#x4EF6;&amp;#x6EE1;&amp;#x8DB3;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;} &lt;span class=&quot;keyword&quot;&gt;finally&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    lock.unlock();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x5728;&amp;#x53E6;&amp;#x4E00;&amp;#x4E2A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x4E2D;&amp;#x53D1;&amp;#x51FA;&amp;#x4FE1;&amp;#x53F7;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;lock.lock();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;try&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    condition.signal(); &lt;span class=&quot;comment&quot;&gt;// &amp;#x53D1;&amp;#x9001;&amp;#x4FE1;&amp;#x53F7;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;} &lt;span class=&quot;keyword&quot;&gt;finally&lt;/span&gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    lock.unlock();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ReentrantLock&lt;/code&gt;&amp;#x662F;&lt;code&gt;Lock&lt;/code&gt;&amp;#x63A5;&amp;#x53E3;&amp;#x7684;&amp;#x4E00;&amp;#x79CD;&amp;#x5B9E;&amp;#x73B0;&amp;#xFF0C;&amp;#x63D0;&amp;#x4F9B;&amp;#x4E86;&amp;#x53EF;&amp;#x91CD;&amp;#x5165;&amp;#x7684;&amp;#x9501;&amp;#x3002;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;condition.await()&lt;/code&gt;&amp;#x7528;&amp;#x4E8E;&amp;#x8BA9;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7B49;&amp;#x5F85;&amp;#xFF0C;&lt;code&gt;condition.signal()&lt;/code&gt;&amp;#x7528;&amp;#x4E8E;&amp;#x5524;&amp;#x9192;&amp;#x7B49;&amp;#x5F85;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;&amp;#x5E76;&amp;#x53D1;&amp;#x6570;&amp;#x636E;&amp;#x7ED3;&amp;#x6784;&quot;&gt;&lt;a href=&quot;#&amp;#x5E76;&amp;#x53D1;&amp;#x6570;&amp;#x636E;&amp;#x7ED3;&amp;#x6784;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5E76;&amp;#x53D1;&amp;#x6570;&amp;#x636E;&amp;#x7ED3;&amp;#x6784;&quot;&gt;&lt;/a&gt;&amp;#x5E76;&amp;#x53D1;&amp;#x6570;&amp;#x636E;&amp;#x7ED3;&amp;#x6784;&lt;/h2&gt;&lt;p&gt;&amp;#x5E76;&amp;#x53D1;&amp;#x6570;&amp;#x636E;&amp;#x7ED3;&amp;#x6784;&amp;#x662F;&amp;#x5728;&amp;#x591A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7F16;&amp;#x7A0B;&amp;#x4E2D;&amp;#x81F3;&amp;#x5173;&amp;#x91CD;&amp;#x8981;&amp;#x7684;&amp;#x4E00;&amp;#x90E8;&amp;#x5206;&amp;#x3002;&amp;#x5E76;&amp;#x53D1;&amp;#x6570;&amp;#x636E;&amp;#x7ED3;&amp;#x6784;&amp;#x63D0;&amp;#x4F9B;&amp;#x4E86;&amp;#x5728;&amp;#x591A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x73AF;&amp;#x5883;&amp;#x4E0B;&amp;#x5B89;&amp;#x5168;&amp;#x8BBF;&amp;#x95EE;&amp;#x548C;&amp;#x4FEE;&amp;#x6539;&amp;#x6570;&amp;#x636E;&amp;#x7684;&amp;#x673A;&amp;#x5236;&amp;#xFF0C;&amp;#x4EE5;&amp;#x786E;&amp;#x4FDD;&amp;#x7EBF;&amp;#x7A0B;&amp;#x5B89;&amp;#x5168;&amp;#x6027;&amp;#x548C;&amp;#x907F;&amp;#x514D;&amp;#x7ADE;&amp;#x6001;&amp;#x6761;&amp;#x4EF6;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x4EE5;&amp;#x4E0B;&amp;#x662F;&amp;#x4E00;&amp;#x4E9B;&amp;#x5E38;&amp;#x89C1;&amp;#x7684;&amp;#x5E76;&amp;#x53D1;&amp;#x6570;&amp;#x636E;&amp;#x7ED3;&amp;#x6784;&amp;#x53CA;&amp;#x5176;&amp;#x5E94;&amp;#x7528;&lt;/p&gt;
&lt;h3 id=&quot;ConcurrentHashMap&quot;&gt;&lt;a href=&quot;#ConcurrentHashMap&quot; class=&quot;headerlink&quot; title=&quot;ConcurrentHashMap&quot;&gt;&lt;/a&gt;ConcurrentHashMap&lt;/h3&gt;&lt;p&gt;&lt;code&gt;ConcurrentHashMap&lt;/code&gt; &amp;#x662F; &lt;code&gt;HashMap&lt;/code&gt; &amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x5B89;&amp;#x5168;&amp;#x7248;&amp;#x672C;&amp;#xFF0C;&amp;#x5B83;&amp;#x5141;&amp;#x8BB8;&amp;#x5728;&amp;#x4E0D;&amp;#x540C;&amp;#x7684;&amp;#x90E8;&amp;#x5206;&amp;#x4E0A;&amp;#x5E76;&amp;#x53D1;&amp;#x5730;&amp;#x8BFB;&amp;#x5199;&amp;#x6570;&amp;#x636E;&amp;#xFF0C;&amp;#x63D0;&amp;#x9AD8;&amp;#x4E86;&amp;#x5E76;&amp;#x53D1;&amp;#x6027;&amp;#x80FD;&amp;#x3002;&amp;#x5728;&amp;#x591A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x73AF;&amp;#x5883;&amp;#x4E2D;&amp;#xFF0C;&amp;#x4F7F;&amp;#x7528; &lt;code&gt;ConcurrentHashMap&lt;/code&gt; &amp;#x53EF;&amp;#x4EE5;&amp;#x907F;&amp;#x514D;&amp;#x5BF9;&amp;#x6574;&amp;#x4E2A;&amp;#x6570;&amp;#x636E;&amp;#x7ED3;&amp;#x6784;&amp;#x7684;&amp;#x9501;&amp;#x5B9A;&amp;#xFF0C;&amp;#x4ECE;&amp;#x800C;&amp;#x63D0;&amp;#x9AD8;&amp;#x5E76;&amp;#x53D1;&amp;#x6027;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;ConcurrentHashMap&amp;lt;String, Integer&amp;gt; concurrentMap = &lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt; ConcurrentHashMap&amp;lt;&amp;gt;();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;concurrentMap.put(&lt;span class=&quot;string&quot;&gt;&amp;quot;key1&amp;quot;&lt;/span&gt;, &lt;span class=&quot;number&quot;&gt;1&lt;/span&gt;);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;concurrentMap.put(&lt;span class=&quot;string&quot;&gt;&amp;quot;key2&amp;quot;&lt;/span&gt;, &lt;span class=&quot;number&quot;&gt;2&lt;/span&gt;);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;int&lt;/span&gt; value = concurrentMap.get(&lt;span class=&quot;string&quot;&gt;&amp;quot;key1&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h3 id=&quot;CopyOnWriteArrayList&quot;&gt;&lt;a href=&quot;#CopyOnWriteArrayList&quot; class=&quot;headerlink&quot; title=&quot;CopyOnWriteArrayList&quot;&gt;&lt;/a&gt;CopyOnWriteArrayList&lt;/h3&gt;&lt;p&gt;&lt;code&gt;CopyOnWriteArrayList&lt;/code&gt; &amp;#x662F; &lt;code&gt;ArrayList&lt;/code&gt; &amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x5B89;&amp;#x5168;&amp;#x7248;&amp;#x672C;&amp;#xFF0C;&amp;#x5B83;&amp;#x901A;&amp;#x8FC7;&amp;#x5728;&amp;#x4FEE;&amp;#x6539;&amp;#x64CD;&amp;#x4F5C;&amp;#x65F6;&amp;#x521B;&amp;#x5EFA;&amp;#x5E95;&amp;#x5C42;&amp;#x6570;&amp;#x7EC4;&amp;#x7684;&amp;#x526F;&amp;#x672C;&amp;#x6765;&amp;#x4FDD;&amp;#x8BC1;&amp;#x7EBF;&amp;#x7A0B;&amp;#x5B89;&amp;#x5168;&amp;#x3002;&amp;#x5B83;&amp;#x9002;&amp;#x7528;&amp;#x4E8E;&amp;#x8BFB;&amp;#x591A;&amp;#x5199;&amp;#x5C11;&amp;#x7684;&amp;#x573A;&amp;#x666F;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;CopyOnWriteArrayList&amp;lt;String&amp;gt; copyOnWriteArrayList = &lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt; CopyOnWriteArrayList&amp;lt;&amp;gt;();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;copyOnWriteArrayList.add(&lt;span class=&quot;string&quot;&gt;&amp;quot;Item1&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;copyOnWriteArrayList.add(&lt;span class=&quot;string&quot;&gt;&amp;quot;Item2&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;String item = copyOnWriteArrayList.get(&lt;span class=&quot;number&quot;&gt;0&lt;/span&gt;);&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h3 id=&quot;BlockingQueue&quot;&gt;&lt;a href=&quot;#BlockingQueue&quot; class=&quot;headerlink&quot; title=&quot;BlockingQueue&quot;&gt;&lt;/a&gt;BlockingQueue&lt;/h3&gt;&lt;p&gt;&lt;code&gt;BlockingQueue&lt;/code&gt; &amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x963B;&amp;#x585E;&amp;#x961F;&amp;#x5217;&amp;#xFF0C;&amp;#x5B83;&amp;#x63D0;&amp;#x4F9B;&amp;#x4E86;&amp;#x5728;&amp;#x961F;&amp;#x5217;&amp;#x4E3A;&amp;#x7A7A;&amp;#x6216;&amp;#x5DF2;&amp;#x6EE1;&amp;#x65F6;&amp;#x963B;&amp;#x585E;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7684;&amp;#x64CD;&amp;#x4F5C;&amp;#x3002;&amp;#x8FD9;&amp;#x5728;&amp;#x751F;&amp;#x4EA7;&amp;#x8005;-&amp;#x6D88;&amp;#x8D39;&amp;#x8005;&amp;#x6A21;&amp;#x578B;&amp;#x4E2D;&amp;#x7279;&amp;#x522B;&amp;#x6709;&amp;#x7528;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;BlockingQueue&amp;lt;String&amp;gt; blockingQueue = &lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt; LinkedBlockingQueue&amp;lt;&amp;gt;(&lt;span class=&quot;number&quot;&gt;10&lt;/span&gt;);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x751F;&amp;#x4EA7;&amp;#x8005;&amp;#x7EBF;&amp;#x7A0B;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;blockingQueue.put(&lt;span class=&quot;string&quot;&gt;&amp;quot;Item&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x6D88;&amp;#x8D39;&amp;#x8005;&amp;#x7EBF;&amp;#x7A0B;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;String item = blockingQueue.take();&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h3 id=&quot;AtomicInteger&quot;&gt;&lt;a href=&quot;#AtomicInteger&quot; class=&quot;headerlink&quot; title=&quot;AtomicInteger&quot;&gt;&lt;/a&gt;AtomicInteger&lt;/h3&gt;&lt;p&gt;&lt;code&gt;AtomicInteger&lt;/code&gt; &amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x539F;&amp;#x5B50;&amp;#x6574;&amp;#x6570;&amp;#xFF0C;&amp;#x5B83;&amp;#x63D0;&amp;#x4F9B;&amp;#x4E86;&amp;#x4E00;&amp;#x7EC4;&amp;#x539F;&amp;#x5B50;&amp;#x64CD;&amp;#x4F5C;&amp;#xFF0C;&amp;#x53EF;&amp;#x786E;&amp;#x4FDD;&amp;#x5728;&amp;#x591A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x73AF;&amp;#x5883;&amp;#x4E2D;&amp;#x8FDB;&amp;#x884C;&amp;#x9012;&amp;#x589E;&amp;#x3001;&amp;#x9012;&amp;#x51CF;&amp;#x7B49;&amp;#x64CD;&amp;#x4F5C;&amp;#x65F6;&amp;#x7684;&amp;#x7EBF;&amp;#x7A0B;&amp;#x5B89;&amp;#x5168;&amp;#x6027;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;AtomicInteger atomicInteger = &lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt; AtomicInteger(&lt;span class=&quot;number&quot;&gt;0&lt;/span&gt;);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;int&lt;/span&gt; result = atomicInteger.incrementAndGet();  &lt;span class=&quot;comment&quot;&gt;// &amp;#x539F;&amp;#x5B50;&amp;#x9012;&amp;#x589E;&amp;#x64CD;&amp;#x4F5C;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h3 id=&quot;CountDownLatch&quot;&gt;&lt;a href=&quot;#CountDownLatch&quot; class=&quot;headerlink&quot; title=&quot;CountDownLatch&quot;&gt;&lt;/a&gt;CountDownLatch&lt;/h3&gt;&lt;p&gt;&lt;code&gt;CountDownLatch&lt;/code&gt; &amp;#x662F;&amp;#x4E00;&amp;#x4E2A;&amp;#x540C;&amp;#x6B65;&amp;#x5DE5;&amp;#x5177;&amp;#x7C7B;&amp;#xFF0C;&amp;#x5B83;&amp;#x5141;&amp;#x8BB8;&amp;#x4E00;&amp;#x4E2A;&amp;#x6216;&amp;#x591A;&amp;#x4E2A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7B49;&amp;#x5F85;&amp;#x5176;&amp;#x4ED6;&amp;#x7EBF;&amp;#x7A0B;&amp;#x5B8C;&amp;#x6210;&amp;#x64CD;&amp;#x4F5C;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;CountDownLatch latch = &lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt; CountDownLatch(&lt;span class=&quot;number&quot;&gt;2&lt;/span&gt;);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x7EBF;&amp;#x7A0B;1&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt; Thread(() -&amp;gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x6267;&amp;#x884C;&amp;#x67D0;&amp;#x4E9B;&amp;#x64CD;&amp;#x4F5C;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    latch.countDown();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}).start();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x7EBF;&amp;#x7A0B;2&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt; Thread(() -&amp;gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x6267;&amp;#x884C;&amp;#x67D0;&amp;#x4E9B;&amp;#x64CD;&amp;#x4F5C;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    latch.countDown();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}).start();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x4E3B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7B49;&amp;#x5F85;&amp;#x4E24;&amp;#x4E2A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x5B8C;&amp;#x6210;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;latch.await();&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h3 id=&quot;CyclicBarrier&quot;&gt;&lt;a href=&quot;#CyclicBarrier&quot; class=&quot;headerlink&quot; title=&quot;CyclicBarrier&quot;&gt;&lt;/a&gt;CyclicBarrier&lt;/h3&gt;&lt;p&gt;&lt;code&gt;CyclicBarrier&lt;/code&gt; &amp;#x662F;&amp;#x53E6;&amp;#x4E00;&amp;#x4E2A;&amp;#x540C;&amp;#x6B65;&amp;#x5DE5;&amp;#x5177;&amp;#x7C7B;&amp;#xFF0C;&amp;#x5B83;&amp;#x5141;&amp;#x8BB8;&amp;#x4E00;&amp;#x7EC4;&amp;#x7EBF;&amp;#x7A0B;&amp;#x76F8;&amp;#x4E92;&amp;#x7B49;&amp;#x5F85;&amp;#xFF0C;&amp;#x76F4;&amp;#x5230;&amp;#x6240;&amp;#x6709;&amp;#x7EBF;&amp;#x7A0B;&amp;#x90FD;&amp;#x5230;&amp;#x8FBE;&amp;#x67D0;&amp;#x4E2A;&amp;#x5C4F;&amp;#x969C;&amp;#x70B9;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;18&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;19&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;20&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;21&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;22&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;CyclicBarrier cyclicBarrier = &lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt; CyclicBarrier(&lt;span class=&quot;number&quot;&gt;3&lt;/span&gt;);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x7EBF;&amp;#x7A0B;1&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt; Thread(() -&amp;gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x6267;&amp;#x884C;&amp;#x67D0;&amp;#x4E9B;&amp;#x64CD;&amp;#x4F5C;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    cyclicBarrier.await();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}).start();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x7EBF;&amp;#x7A0B;2&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt; Thread(() -&amp;gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x6267;&amp;#x884C;&amp;#x67D0;&amp;#x4E9B;&amp;#x64CD;&amp;#x4F5C;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    cyclicBarrier.await();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}).start();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x7EBF;&amp;#x7A0B;3&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt; Thread(() -&amp;gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x6267;&amp;#x884C;&amp;#x67D0;&amp;#x4E9B;&amp;#x64CD;&amp;#x4F5C;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    cyclicBarrier.await();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}).start();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x4E3B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7B49;&amp;#x5F85;&amp;#x6240;&amp;#x6709;&amp;#x7EBF;&amp;#x7A0B;&amp;#x5230;&amp;#x8FBE;&amp;#x5C4F;&amp;#x969C;&amp;#x70B9;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;cyclicBarrier.await();&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x8FD9;&amp;#x4E9B;&amp;#x5E76;&amp;#x53D1;&amp;#x6570;&amp;#x636E;&amp;#x7ED3;&amp;#x6784;&amp;#x4E3A;&amp;#x591A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7F16;&amp;#x7A0B;&amp;#x63D0;&amp;#x4F9B;&amp;#x4E86;&amp;#x6709;&amp;#x529B;&amp;#x7684;&amp;#x652F;&amp;#x6301;&amp;#xFF0C;&amp;#x4F46;&amp;#x5728;&amp;#x4F7F;&amp;#x7528;&amp;#x5B83;&amp;#x4EEC;&amp;#x65F6;&amp;#x9700;&amp;#x8981;&amp;#x8C28;&amp;#x614E;&amp;#xFF0C;&amp;#x4EE5;&amp;#x786E;&amp;#x4FDD;&amp;#x6B63;&amp;#x786E;&amp;#x5730;&amp;#x5904;&amp;#x7406;&amp;#x5E76;&amp;#x53D1;&amp;#x8BBF;&amp;#x95EE;&amp;#x548C;&amp;#x4FEE;&amp;#x6539;&amp;#x3002;&amp;#x5728;&amp;#x5408;&amp;#x9002;&amp;#x7684;&amp;#x573A;&amp;#x666F;&amp;#x4E0B;&amp;#xFF0C;&amp;#x5408;&amp;#x7406;&amp;#x4F7F;&amp;#x7528;&amp;#x8FD9;&amp;#x4E9B;&amp;#x6570;&amp;#x636E;&amp;#x7ED3;&amp;#x6784;&amp;#x53EF;&amp;#x4EE5;&amp;#x63D0;&amp;#x9AD8;&amp;#x7A0B;&amp;#x5E8F;&amp;#x7684;&amp;#x6027;&amp;#x80FD;&amp;#x548C;&amp;#x5E76;&amp;#x53D1;&amp;#x5EA6;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x5F02;&amp;#x5E38;&amp;#x5904;&amp;#x7406;&quot;&gt;&lt;a href=&quot;#&amp;#x5F02;&amp;#x5E38;&amp;#x5904;&amp;#x7406;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5F02;&amp;#x5E38;&amp;#x5904;&amp;#x7406;&quot;&gt;&lt;/a&gt;&amp;#x5F02;&amp;#x5E38;&amp;#x5904;&amp;#x7406;&lt;/h2&gt;&lt;p&gt;&lt;code&gt;UncaughtExceptionHandler&lt;/code&gt; &amp;#x63A5;&amp;#x53E3;&amp;#x53EF;&amp;#x4EE5;&amp;#x7528;&amp;#x4E8E;&amp;#x6355;&amp;#x83B7;&amp;#x7EBF;&amp;#x7A0B;&amp;#x4E2D;&amp;#x672A;&amp;#x5904;&amp;#x7406;&amp;#x7684;&amp;#x5F02;&amp;#x5E38;&amp;#x3002;&amp;#x901A;&amp;#x8FC7;&amp;#x8BBE;&amp;#x7F6E;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7684; &lt;code&gt;UncaughtExceptionHandler&lt;/code&gt;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x5728;&amp;#x5F02;&amp;#x5E38;&amp;#x53D1;&amp;#x751F;&amp;#x65F6;&amp;#x6267;&amp;#x884C;&amp;#x81EA;&amp;#x5B9A;&amp;#x4E49;&amp;#x7684;&amp;#x5904;&amp;#x7406;&amp;#x903B;&amp;#x8F91;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;10&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;11&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;12&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;13&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;14&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;15&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;16&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;17&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;class&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;class&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;UncaughtExceptionHandlerExample&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;function&quot;&gt;&lt;span class=&quot;keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;static&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;void&lt;/span&gt; &lt;span class=&quot;title&quot;&gt;main&lt;/span&gt;&lt;span class=&quot;params&quot;&gt;(String[] args)&lt;/span&gt; &lt;/span&gt;{&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x521B;&amp;#x5EFA;&amp;#x4E00;&amp;#x4E2A;&amp;#x7EBF;&amp;#x7A0B;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        Thread thread = &lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt; Thread(() -&amp;gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;comment&quot;&gt;// &amp;#x6A21;&amp;#x62DF;&amp;#x53D1;&amp;#x751F;&amp;#x5F02;&amp;#x5E38;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;            &lt;span class=&quot;keyword&quot;&gt;throw&lt;/span&gt; &lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt; RuntimeException(&lt;span class=&quot;string&quot;&gt;&amp;quot;Simulated exception&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        });&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x8BBE;&amp;#x7F6E;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7684;UncaughtExceptionHandler&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        thread.setUncaughtExceptionHandler((t, e) -&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;                System.out.println(&lt;span class=&quot;string&quot;&gt;&amp;quot;Uncaught exception in thread &amp;quot;&lt;/span&gt; + t.getName() + &lt;span class=&quot;string&quot;&gt;&amp;quot;: &amp;quot;&lt;/span&gt; + e.getMessage()));&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        &lt;span class=&quot;comment&quot;&gt;// &amp;#x542F;&amp;#x52A8;&amp;#x7EBF;&amp;#x7A0B;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        thread.start();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    }&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;}&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x5728;&amp;#x8FD9;&amp;#x4E2A;&amp;#x4F8B;&amp;#x5B50;&amp;#x4E2D;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x521B;&amp;#x5EFA;&amp;#x4E86;&amp;#x4E00;&amp;#x4E2A;&amp;#x7EBF;&amp;#x7A0B;&amp;#xFF0C;&amp;#x5E76;&amp;#x8BBE;&amp;#x7F6E;&amp;#x4E86;&amp;#x5B83;&amp;#x7684; &lt;code&gt;UncaughtExceptionHandler&lt;/code&gt;&amp;#x3002;&amp;#x5F53;&amp;#x7EBF;&amp;#x7A0B;&amp;#x4E2D;&amp;#x53D1;&amp;#x751F;&amp;#x672A;&amp;#x6355;&amp;#x83B7;&amp;#x7684;&amp;#x5F02;&amp;#x5E38;&amp;#x65F6;&amp;#xFF0C;&lt;code&gt;UncaughtExceptionHandler&lt;/code&gt; &amp;#x7684; &lt;code&gt;uncaughtException&lt;/code&gt; &amp;#x65B9;&amp;#x6CD5;&amp;#x5C06;&amp;#x88AB;&amp;#x8C03;&amp;#x7528;&amp;#xFF0C;&amp;#x6211;&amp;#x4EEC;&amp;#x5728;&amp;#x8FD9;&amp;#x91CC;&amp;#x7B80;&amp;#x5355;&amp;#x5730;&amp;#x8F93;&amp;#x51FA;&amp;#x4E86;&amp;#x5F02;&amp;#x5E38;&amp;#x4FE1;&amp;#x606F;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&amp;#x8BF7;&amp;#x6CE8;&amp;#x610F;&amp;#xFF0C;&amp;#x8FD9;&amp;#x79CD;&amp;#x673A;&amp;#x5236;&amp;#x5BF9;&amp;#x4E8E;&amp;#x6355;&amp;#x83B7;&amp;#x4E3B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7684;&amp;#x5F02;&amp;#x5E38;&amp;#x53EF;&amp;#x80FD;&amp;#x4E0D;&amp;#x592A;&amp;#x9002;&amp;#x7528;&amp;#x3002;&amp;#x5BF9;&amp;#x4E8E;&amp;#x4E3B;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7684;&amp;#x5F02;&amp;#x5E38;&amp;#x5904;&amp;#x7406;&amp;#xFF0C;&amp;#x66F4;&amp;#x597D;&amp;#x7684;&amp;#x65B9;&amp;#x5F0F;&amp;#x662F;&amp;#x4F7F;&amp;#x7528; &lt;code&gt;Thread.setDefaultUncaughtExceptionHandler&lt;/code&gt; &amp;#x6765;&amp;#x8BBE;&amp;#x7F6E;&amp;#x9ED8;&amp;#x8BA4;&amp;#x7684;&amp;#x5F02;&amp;#x5E38;&amp;#x5904;&amp;#x7406;&amp;#x5668;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;Thread.setDefaultUncaughtExceptionHandler((t, e) -&amp;gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;        System.out.println(&lt;span class=&quot;string&quot;&gt;&amp;quot;Uncaught exception in thread &amp;quot;&lt;/span&gt; + t.getName() + &lt;span class=&quot;string&quot;&gt;&amp;quot;: &amp;quot;&lt;/span&gt; + e.getMessage()));&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;p&gt;&amp;#x8FD9;&amp;#x5C06;&amp;#x5F71;&amp;#x54CD;&amp;#x6240;&amp;#x6709;&amp;#x7EBF;&amp;#x7A0B;&amp;#xFF0C;&amp;#x9664;&amp;#x975E;&amp;#x5B83;&amp;#x4EEC;&amp;#x663E;&amp;#x5F0F;&amp;#x5730;&amp;#x8BBE;&amp;#x7F6E;&amp;#x4E86;&amp;#x81EA;&amp;#x5DF1;&amp;#x7684; &lt;code&gt;UncaughtExceptionHandler&lt;/code&gt;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;Android&amp;#x4E2D;&amp;#x7684;&amp;#x5F02;&amp;#x6B65;&amp;#x4EFB;&amp;#x52A1;&amp;#x4E0E;HandlerThread&quot;&gt;&lt;a href=&quot;#Android&amp;#x4E2D;&amp;#x7684;&amp;#x5F02;&amp;#x6B65;&amp;#x4EFB;&amp;#x52A1;&amp;#x4E0E;HandlerThread&quot; class=&quot;headerlink&quot; title=&quot;Android&amp;#x4E2D;&amp;#x7684;&amp;#x5F02;&amp;#x6B65;&amp;#x4EFB;&amp;#x52A1;&amp;#x4E0E;HandlerThread&quot;&gt;&lt;/a&gt;Android&amp;#x4E2D;&amp;#x7684;&amp;#x5F02;&amp;#x6B65;&amp;#x4EFB;&amp;#x52A1;&amp;#x4E0E;HandlerThread&lt;/h2&gt;&lt;h3 id=&quot;AsyncTask&amp;#x7684;&amp;#x66FF;&amp;#x4EE3;&amp;#x65B9;&amp;#x6848;&quot;&gt;&lt;a href=&quot;#AsyncTask&amp;#x7684;&amp;#x66FF;&amp;#x4EE3;&amp;#x65B9;&amp;#x6848;&quot; class=&quot;headerlink&quot; title=&quot;AsyncTask&amp;#x7684;&amp;#x66FF;&amp;#x4EE3;&amp;#x65B9;&amp;#x6848;&quot;&gt;&lt;/a&gt;AsyncTask&amp;#x7684;&amp;#x66FF;&amp;#x4EE3;&amp;#x65B9;&amp;#x6848;&lt;/h3&gt;&lt;p&gt;&amp;#x7531;&amp;#x4E8E;&lt;code&gt;AsyncTask&lt;/code&gt;&amp;#x5DF2;&amp;#x88AB;&amp;#x5E9F;&amp;#x5F03;&amp;#xFF0C;&amp;#x63A8;&amp;#x8350;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;Executor&lt;/code&gt;&amp;#x548C;&lt;code&gt;Handler&lt;/code&gt;&amp;#x7684;&amp;#x7ED3;&amp;#x5408;&amp;#xFF0C;&amp;#x6216;&amp;#x8005;&amp;#x4F7F;&amp;#x7528;Kotlin&amp;#x534F;&amp;#x7A0B;&amp;#xFF08;&amp;#x5728;&amp;#x5165;&amp;#x95E8;&amp;#x7BC7;&amp;#x4E2D;&amp;#x5DF2;&amp;#x6709;&amp;#x4ECB;&amp;#x7ECD;&amp;#xFF09;&amp;#x6765;&amp;#x6267;&amp;#x884C;&amp;#x5F02;&amp;#x6B65;&amp;#x4EFB;&amp;#x52A1;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x4F7F;&amp;#x7528;Executor&amp;#x6267;&amp;#x884C;&amp;#x5F02;&amp;#x6B65;&amp;#x4EFB;&amp;#x52A1;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;Executor executor = Executors.newSingleThreadExecutor();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;executor.execute(() -&amp;gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x6267;&amp;#x884C;&amp;#x5F02;&amp;#x6B65;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x4EE3;&amp;#x7801;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;});&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h3 id=&quot;HandlerThread&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&quot;&gt;&lt;a href=&quot;#HandlerThread&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&quot; class=&quot;headerlink&quot; title=&quot;HandlerThread&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&quot;&gt;&lt;/a&gt;HandlerThread&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&lt;/h3&gt;&lt;p&gt;&lt;code&gt;HandlerThread&lt;/code&gt;&amp;#x662F;Android&amp;#x4E2D;&amp;#x7684;&amp;#x4E00;&amp;#x4E2A;&amp;#x8F85;&amp;#x52A9;&amp;#x7C7B;&amp;#xFF0C;&amp;#x5B83;&amp;#x5C01;&amp;#x88C5;&amp;#x4E86;&amp;#x4E0E;Looper&amp;#x76F8;&amp;#x5173;&amp;#x7684;&amp;#x64CD;&amp;#x4F5C;&amp;#xFF0C;&amp;#x4F7F;&amp;#x5F97;&amp;#x5728;&amp;#x540E;&amp;#x53F0;&amp;#x7EBF;&amp;#x7A0B;&amp;#x4E2D;&amp;#x6267;&amp;#x884C;&amp;#x4EFB;&amp;#x52A1;&amp;#x66F4;&amp;#x4E3A;&amp;#x65B9;&amp;#x4FBF;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;7&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;8&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;9&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;HandlerThread handlerThread = &lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt; HandlerThread(&lt;span class=&quot;string&quot;&gt;&amp;quot;MyHandlerThread&amp;quot;&lt;/span&gt;);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;handlerThread.start();&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;Handler handler = &lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt; Handler(handlerThread.getLooper());&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x5728;&amp;#x540E;&amp;#x53F0;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6267;&amp;#x884C;&amp;#x4EFB;&amp;#x52A1;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;handler.post(() -&amp;gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x6267;&amp;#x884C;&amp;#x4EFB;&amp;#x52A1;&amp;#x7684;&amp;#x4EE3;&amp;#x7801;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;});&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h2 id=&quot;&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&amp;#x7B56;&amp;#x7565;&quot;&gt;&lt;a href=&quot;#&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&amp;#x7B56;&amp;#x7565;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&amp;#x7B56;&amp;#x7565;&quot;&gt;&lt;/a&gt;&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&amp;#x7B56;&amp;#x7565;&lt;/h2&gt;&lt;h3 id=&quot;&amp;#x4F7F;&amp;#x7528;Systrace&amp;#x8FDB;&amp;#x884C;&amp;#x6027;&amp;#x80FD;&amp;#x5206;&amp;#x6790;&quot;&gt;&lt;a href=&quot;#&amp;#x4F7F;&amp;#x7528;Systrace&amp;#x8FDB;&amp;#x884C;&amp;#x6027;&amp;#x80FD;&amp;#x5206;&amp;#x6790;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4F7F;&amp;#x7528;Systrace&amp;#x8FDB;&amp;#x884C;&amp;#x6027;&amp;#x80FD;&amp;#x5206;&amp;#x6790;&quot;&gt;&lt;/a&gt;&amp;#x4F7F;&amp;#x7528;Systrace&amp;#x8FDB;&amp;#x884C;&amp;#x6027;&amp;#x80FD;&amp;#x5206;&amp;#x6790;&lt;/h3&gt;&lt;p&gt;Systrace&amp;#x662F;Android&amp;#x7CFB;&amp;#x7EDF;&amp;#x63D0;&amp;#x4F9B;&amp;#x7684;&amp;#x4E00;&amp;#x79CD;&amp;#x6027;&amp;#x80FD;&amp;#x5206;&amp;#x6790;&amp;#x5DE5;&amp;#x5177;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x7528;&amp;#x6765;&amp;#x68C0;&amp;#x67E5;&amp;#x5E94;&amp;#x7528;&amp;#x4E2D;&amp;#x7684;&amp;#x6027;&amp;#x80FD;&amp;#x74F6;&amp;#x9888;&amp;#xFF0C;&amp;#x627E;&amp;#x5230;&amp;#x8017;&amp;#x65F6;&amp;#x64CD;&amp;#x4F5C;&amp;#xFF0C;&amp;#x4F18;&amp;#x5316;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6267;&amp;#x884C;&amp;#x65F6;&amp;#x95F4;&amp;#x3002;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&amp;#x901A;&amp;#x8FC7;Android Studio&amp;#x4E2D;&amp;#x7684;Profiler&amp;#x5DE5;&amp;#x5177;&amp;#xFF0C;&amp;#x9009;&amp;#x62E9;Systrace&amp;#x8FDB;&amp;#x884C;&amp;#x6027;&amp;#x80FD;&amp;#x5206;&amp;#x6790;&amp;#x3002;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;&amp;#x907F;&amp;#x514D;UI&amp;#x7EBF;&amp;#x7A0B;&amp;#x963B;&amp;#x585E;&quot;&gt;&lt;a href=&quot;#&amp;#x907F;&amp;#x514D;UI&amp;#x7EBF;&amp;#x7A0B;&amp;#x963B;&amp;#x585E;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x907F;&amp;#x514D;UI&amp;#x7EBF;&amp;#x7A0B;&amp;#x963B;&amp;#x585E;&quot;&gt;&lt;/a&gt;&amp;#x907F;&amp;#x514D;UI&amp;#x7EBF;&amp;#x7A0B;&amp;#x963B;&amp;#x585E;&lt;/h3&gt;&lt;p&gt;&amp;#x5C06;&amp;#x8017;&amp;#x65F6;&amp;#x4EFB;&amp;#x52A1;&amp;#x8F6C;&amp;#x79FB;&amp;#x5230;&amp;#x540E;&amp;#x53F0;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6267;&amp;#x884C;&amp;#xFF0C;&amp;#x786E;&amp;#x4FDD;UI&amp;#x7EBF;&amp;#x7A0B;&amp;#x4E0D;&amp;#x4F1A;&amp;#x56E0;&amp;#x4E3A;&amp;#x8017;&amp;#x65F6;&amp;#x64CD;&amp;#x4F5C;&amp;#x800C;&amp;#x963B;&amp;#x585E;&amp;#xFF0C;&amp;#x63D0;&amp;#x9AD8;&amp;#x5E94;&amp;#x7528;&amp;#x7684;&amp;#x54CD;&amp;#x5E94;&amp;#x6027;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;4&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;5&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;6&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x4F7F;&amp;#x7528;Handler&amp;#x5C06;&amp;#x4EFB;&amp;#x52A1;&amp;#x63D0;&amp;#x4EA4;&amp;#x5230;&amp;#x540E;&amp;#x53F0;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6267;&amp;#x884C;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;Handler handler = &lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt; Handler(Looper.getMainLooper());&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;handler.post(() -&amp;gt; {&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;    &lt;span class=&quot;comment&quot;&gt;// &amp;#x6267;&amp;#x884C;&amp;#x8017;&amp;#x65F6;&amp;#x4EFB;&amp;#x52A1;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;});&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h3 id=&quot;&amp;#x4F7F;&amp;#x7528;&amp;#x8F7B;&amp;#x91CF;&amp;#x7EA7;&amp;#x7684;&amp;#x540C;&amp;#x6B65;&amp;#x673A;&amp;#x5236;&quot;&gt;&lt;a href=&quot;#&amp;#x4F7F;&amp;#x7528;&amp;#x8F7B;&amp;#x91CF;&amp;#x7EA7;&amp;#x7684;&amp;#x540C;&amp;#x6B65;&amp;#x673A;&amp;#x5236;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4F7F;&amp;#x7528;&amp;#x8F7B;&amp;#x91CF;&amp;#x7EA7;&amp;#x7684;&amp;#x540C;&amp;#x6B65;&amp;#x673A;&amp;#x5236;&quot;&gt;&lt;/a&gt;&amp;#x4F7F;&amp;#x7528;&amp;#x8F7B;&amp;#x91CF;&amp;#x7EA7;&amp;#x7684;&amp;#x540C;&amp;#x6B65;&amp;#x673A;&amp;#x5236;&lt;/h3&gt;&lt;p&gt;&amp;#x907F;&amp;#x514D;&amp;#x8FC7;&amp;#x591A;&amp;#x4F7F;&amp;#x7528;&amp;#x91CD;&amp;#x91CF;&amp;#x7EA7;&amp;#x7684;&amp;#x540C;&amp;#x6B65;&amp;#x673A;&amp;#x5236;&amp;#xFF0C;&amp;#x5982;&lt;code&gt;synchronized&lt;/code&gt;&amp;#x5173;&amp;#x952E;&amp;#x5B57;&amp;#xFF0C;&amp;#x53EF;&amp;#x4EE5;&amp;#x9009;&amp;#x62E9;&amp;#x4F7F;&amp;#x7528;&lt;code&gt;java.util.concurrent&lt;/code&gt;&amp;#x5305;&amp;#x4E2D;&amp;#x7684;&amp;#x66F4;&amp;#x8F7B;&amp;#x91CF;&amp;#x7EA7;&amp;#x7684;&amp;#x673A;&amp;#x5236;&amp;#xFF0C;&amp;#x4F8B;&amp;#x5982;&lt;code&gt;ReentrantLock&lt;/code&gt;&amp;#x3002;&lt;/p&gt;
&lt;h3 id=&quot;&amp;#x4F18;&amp;#x5316;&amp;#x5185;&amp;#x5B58;&amp;#x7BA1;&amp;#x7406;&quot;&gt;&lt;a href=&quot;#&amp;#x4F18;&amp;#x5316;&amp;#x5185;&amp;#x5B58;&amp;#x7BA1;&amp;#x7406;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x4F18;&amp;#x5316;&amp;#x5185;&amp;#x5B58;&amp;#x7BA1;&amp;#x7406;&quot;&gt;&lt;/a&gt;&amp;#x4F18;&amp;#x5316;&amp;#x5185;&amp;#x5B58;&amp;#x7BA1;&amp;#x7406;&lt;/h3&gt;&lt;p&gt;&amp;#x53CA;&amp;#x65F6;&amp;#x91CA;&amp;#x653E;&amp;#x4E0D;&amp;#x518D;&amp;#x9700;&amp;#x8981;&amp;#x7684;&amp;#x5BF9;&amp;#x8C61;&amp;#xFF0C;&amp;#x907F;&amp;#x514D;&amp;#x5185;&amp;#x5B58;&amp;#x6CC4;&amp;#x6F0F;&amp;#x3002;&amp;#x53EF;&amp;#x4EE5;&amp;#x4F7F;&amp;#x7528;&amp;#x5DE5;&amp;#x5177;&amp;#x5982;&lt;code&gt;LeakCanary&lt;/code&gt;&amp;#x6765;&amp;#x5E2E;&amp;#x52A9;&amp;#x68C0;&amp;#x6D4B;&amp;#x5185;&amp;#x5B58;&amp;#x6CC4;&amp;#x6F0F;&amp;#x95EE;&amp;#x9898;&amp;#x3002;&lt;/p&gt;
&lt;figure class=&quot;highlight java&quot;&gt;&lt;table&gt;&lt;tr&gt;&lt;td class=&quot;gutter&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;1&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;2&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;3&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;td class=&quot;code&quot;&gt;&lt;pre&gt;&lt;span class=&quot;line&quot;&gt;&lt;span class=&quot;comment&quot;&gt;// &amp;#x4F7F;&amp;#x7528;WeakReference&amp;#x6765;&amp;#x6301;&amp;#x6709;&amp;#x5BF9;&amp;#x8C61;&amp;#x7684;&amp;#x5F31;&amp;#x5F15;&amp;#x7528;&amp;#xFF0C;&amp;#x6709;&amp;#x52A9;&amp;#x4E8E;&amp;#x53CA;&amp;#x65F6;&amp;#x91CA;&amp;#x653E;&amp;#x4E0D;&amp;#x518D;&amp;#x9700;&amp;#x8981;&amp;#x7684;&amp;#x5BF9;&amp;#x8C61;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;WeakReference&amp;lt;MyObject&amp;gt; weakReference = &lt;span class=&quot;keyword&quot;&gt;new&lt;/span&gt; WeakReference&amp;lt;&amp;gt;(myObject);&lt;/span&gt;&lt;br&gt;&lt;span class=&quot;line&quot;&gt;myObject = &lt;span class=&quot;keyword&quot;&gt;null&lt;/span&gt;; &lt;span class=&quot;comment&quot;&gt;// &amp;#x91CA;&amp;#x653E;&amp;#x5F3A;&amp;#x5F15;&amp;#x7528;&lt;/span&gt;&lt;/span&gt;&lt;br&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;&lt;/figure&gt;
&lt;h2 id=&quot;&amp;#x603B;&amp;#x7ED3;&quot;&gt;&lt;a href=&quot;#&amp;#x603B;&amp;#x7ED3;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x603B;&amp;#x7ED3;&quot;&gt;&lt;/a&gt;&amp;#x603B;&amp;#x7ED3;&lt;/h2&gt;&lt;p&gt;&amp;#x6211;&amp;#x4EEC;&amp;#x6DF1;&amp;#x5165;&amp;#x4E86;&amp;#x89E3;&amp;#x4E86;Android&amp;#x4E2D;&amp;#x66F4;&amp;#x9AD8;&amp;#x7EA7;&amp;#x7684;&amp;#x591A;&amp;#x7EBF;&amp;#x7A0B;&amp;#x7F16;&amp;#x7A0B;&amp;#x6280;&amp;#x672F;&amp;#xFF0C;&amp;#x5305;&amp;#x62EC;&amp;#x7EBF;&amp;#x7A0B;&amp;#x6C60;&amp;#x7684;&amp;#x4F7F;&amp;#x7528;&amp;#x3001;&amp;#x9501;&amp;#x4E0E;&amp;#x6761;&amp;#x4EF6;&amp;#x7684;&amp;#x7075;&amp;#x6D3B;&amp;#x5E94;&amp;#x7528;&amp;#x3001;&amp;#x5E76;&amp;#x53D1;&amp;#x6570;&amp;#x636E;&amp;#x7ED3;&amp;#x6784;&amp;#x4EE5;&amp;#x53CA;&amp;#x4E00;&amp;#x4E9B;&amp;#x6027;&amp;#x80FD;&amp;#x4F18;&amp;#x5316;&amp;#x7684;&amp;#x7B56;&amp;#x7565;&amp;#x3002;&amp;#x5E0C;&amp;#x671B;&amp;#x8BFB;&amp;#x8005;&amp;#x80FD;&amp;#x591F;&amp;#x5728;&amp;#x5B9E;&amp;#x9645;&amp;#x9879;&amp;#x76EE;&amp;#x4E2D;&amp;#x7075;&amp;#x6D3B;&amp;#x8FD0;&amp;#x7528;&amp;#x8FD9;&amp;#x4E9B;&amp;#x77E5;&amp;#x8BC6;&amp;#xFF0C;&amp;#x6784;&amp;#x5EFA;&amp;#x9AD8;&amp;#x6548;&amp;#x7A33;&amp;#x5B9A;&amp;#x7684;Android&amp;#x5E94;&amp;#x7528;&amp;#x3002;&lt;/p&gt;
&lt;h2 id=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;a href=&quot;#&amp;#x63A8;&amp;#x8350;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x63A8;&amp;#x8350;&quot;&gt;&lt;/a&gt;&amp;#x63A8;&amp;#x8350;&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-startup&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android_startup&lt;/a&gt;: &amp;#x63D0;&amp;#x4F9B;&amp;#x4E00;&amp;#x79CD;&amp;#x5728;&amp;#x5E94;&amp;#x7528;&amp;#x542F;&amp;#x52A8;&amp;#x65F6;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x52A0;&amp;#x7B80;&amp;#x5355;&amp;#x3001;&amp;#x9AD8;&amp;#x6548;&amp;#x7684;&amp;#x65B9;&amp;#x5F0F;&amp;#x6765;&amp;#x521D;&amp;#x59CB;&amp;#x5316;&amp;#x7EC4;&amp;#x4EF6;&amp;#xFF0C;&amp;#x4F18;&amp;#x5316;&amp;#x542F;&amp;#x52A8;&amp;#x901F;&amp;#x5EA6;&amp;#x3002;&amp;#x4E0D;&amp;#x4EC5;&amp;#x652F;&amp;#x6301;Jetpack App Startup&amp;#x7684;&amp;#x5168;&amp;#x90E8;&amp;#x529F;&amp;#x80FD;&amp;#xFF0C;&amp;#x8FD8;&amp;#x63D0;&amp;#x4F9B;&amp;#x989D;&amp;#x5916;&amp;#x7684;&amp;#x540C;&amp;#x6B65;&amp;#x4E0E;&amp;#x5F02;&amp;#x6B65;&amp;#x7B49;&amp;#x5F85;&amp;#x3001;&amp;#x7EBF;&amp;#x7A0B;&amp;#x63A7;&amp;#x5236;&amp;#x4E0E;&amp;#x591A;&amp;#x8FDB;&amp;#x7A0B;&amp;#x652F;&amp;#x6301;&amp;#x7B49;&amp;#x529F;&amp;#x80FD;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/AwesomeGithub&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;AwesomeGithub&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Github&amp;#x7684;&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x7EAF;&amp;#x7EC3;&amp;#x4E60;&amp;#x9879;&amp;#x76EE;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x7EC4;&amp;#x4EF6;&amp;#x5316;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x652F;&amp;#x6301;&amp;#x8D26;&amp;#x6237;&amp;#x5BC6;&amp;#x7801;&amp;#x4E0E;&amp;#x8BA4;&amp;#x8BC1;&amp;#x767B;&amp;#x9646;&amp;#x3002;&amp;#x4F7F;&amp;#x7528;Kotlin&amp;#x8BED;&amp;#x8A00;&amp;#x8FDB;&amp;#x884C;&amp;#x5F00;&amp;#x53D1;&amp;#xFF0C;&amp;#x9879;&amp;#x76EE;&amp;#x67B6;&amp;#x6784;&amp;#x662F;&amp;#x57FA;&amp;#x4E8E;JetPack\&amp;amp;DataBinding&amp;#x7684;MVVM&amp;#xFF1B;&amp;#x9879;&amp;#x76EE;&amp;#x4E2D;&amp;#x4F7F;&amp;#x7528;&amp;#x4E86;Arouter&amp;#x3001;Retrofit&amp;#x3001;Coroutine&amp;#x3001;Glide&amp;#x3001;Dagger&amp;#x4E0E;Hilt&amp;#x7B49;&amp;#x6D41;&amp;#x884C;&amp;#x5F00;&amp;#x6E90;&amp;#x6280;&amp;#x672F;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/flutter_github&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;flutter_github&lt;/a&gt;: &amp;#x57FA;&amp;#x4E8E;Flutter&amp;#x7684;&amp;#x8DE8;&amp;#x5E73;&amp;#x53F0;&amp;#x7248;&amp;#x672C;Github&amp;#x5BA2;&amp;#x6237;&amp;#x7AEF;&amp;#xFF0C;&amp;#x4E0E;AwesomeGithub&amp;#x76F8;&amp;#x5BF9;&amp;#x5E94;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/android-api-analysis&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;android-api-analysis&lt;/a&gt;: &amp;#x7ED3;&amp;#x5408;&amp;#x8BE6;&amp;#x7EC6;&amp;#x7684;Demo&amp;#x6765;&amp;#x5168;&amp;#x9762;&amp;#x89E3;&amp;#x6790;Android&amp;#x76F8;&amp;#x5173;&amp;#x7684;&amp;#x77E5;&amp;#x8BC6;&amp;#x70B9;, &amp;#x5E2E;&amp;#x52A9;&amp;#x8BFB;&amp;#x8005;&amp;#x80FD;&amp;#x591F;&amp;#x66F4;&amp;#x5FEB;&amp;#x7684;&amp;#x638C;&amp;#x63E1;&amp;#x4E0E;&amp;#x7406;&amp;#x89E3;&amp;#x6240;&amp;#x9610;&amp;#x8FF0;&amp;#x7684;&amp;#x8981;&amp;#x70B9;&amp;#x3002;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/idisfkj/daily_algorithm&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot;&gt;daily_algorithm&lt;/a&gt;: &amp;#x6BCF;&amp;#x65E5;&amp;#x4E00;&amp;#x7B97;&amp;#x6CD5;&amp;#xFF0C;&amp;#x7531;&amp;#x6D45;&amp;#x5165;&amp;#x6DF1;&amp;#xFF0C;&amp;#x6B22;&amp;#x8FCE;&amp;#x52A0;&amp;#x5165;&amp;#x4E00;&amp;#x8D77;&amp;#x5171;&amp;#x52C9;&amp;#x3002;&lt;/p&gt;
</content>
    
    <summary type="html">
    
      &lt;h2 id=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;a href=&quot;#&amp;#x5F15;&amp;#x8A00;&quot; class=&quot;headerlink&quot; title=&quot;&amp;#x5F15;&amp;#x8A00;&quot;&gt;&lt;/a&gt;&amp;#x5F15;&amp;#x8A00;&lt;/h2&gt;&lt;p&gt;&amp;#x5728;&amp;#x4E0
    
    </summary>
    
      <category term="android" scheme="https://www.rousetime.com/categories/android/"/>
    
    
      <category term="android" scheme="https://www.rousetime.com/tags/android/"/>
    
  </entry>
  
</feed>
