<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/"><channel><title><![CDATA[扔物线]]></title><description><![CDATA[帮助 Android 工程师进阶成长]]></description><link>https://rengwuxian.com/</link><image><url>https://rengwuxian.com/favicon.png</url><title>扔物线</title><link>https://rengwuxian.com/</link></image><generator>Ghost 5.78</generator><lastBuildDate>Wed, 15 Apr 2026 10:17:44 GMT</lastBuildDate><atom:link href="https://rengwuxian.com/rss/" rel="self" type="application/rss+xml"/><ttl>60</ttl><item><title><![CDATA[【性能优化】真有那么慢？Java 和 Kotlin 的反射]]></title><description><![CDATA[<h2 id="%E8%A7%86%E9%A2%91%E5%85%88%E8%A1%8C"><strong>&#x89C6;&#x9891;&#x5148;&#x884C;</strong></h2><h3 id="%E5%93%94%E5%93%A9%E5%93%94%E5%93%A9"><strong>&#x54D4;&#x54E9;&#x54D4;&#x54E9;</strong></h3><figure class="kg-card kg-embed-card"><iframe width="100%" height="480" src="//player.bilibili.com/player.html?isOutside=true&amp;aid=113720097245487&amp;bvid=BV1DtCCYREgn&amp;cid=27549369244&amp;p=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true" data-tool="mdnice&#x7F16;&#x8F91;&#x5668;"></iframe></figure><h3 id="youtube"><strong>YouTube</strong></h3><figure class="kg-card kg-embed-card"><iframe width="560" height="315" src="https://www.youtube.com/embed/4qeeyPFhbaM?si=E791C7PeqlQQhoxD" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen data-tool="mdnice&#x7F16;&#x8F91;&#x5668;"></iframe></figure><blockquote>&#x4E0B;&#x9762;&#x662F;&#x89C6;&#x9891;&#x5185;&#x5BB9;&#x7684;&#x811A;&#x672C;&#x6587;&#x6848;&#x539F;&#x7A3F;&#x5206;&#x4EAB;&#x3002;</blockquote><figure class="kg-card kg-image-card"><img src="http://image.rengwuxian.com/2023/12/27/210647777b3c9.jpg" class="kg-image" alt="210647777b3c9" loading="lazy" width="900" height="500"></figure><h2 id="%E5%BC%80%E5%9C%BA"><strong>&#x5F00;&#x573A;</strong></h2><p>&#x5927;&#x5BB6;&#x597D;&#xFF01;&#x6211;&#x662F;&#x6254;&#x7269;&#x7EBF;&#x6731;&#x51EF;&#x3002;</p><p>Java &#x548C; Kotlin &#x7684;&#x53CD;&#x5C04;&#x6211;&#x4EEC;&#x90FD;&#x77E5;</p>]]></description><link>https://rengwuxian.com/reflection/</link><guid isPermaLink="false">676e5e86ab2cfb3d008dbe8f</guid><category><![CDATA[Android]]></category><dc:creator><![CDATA[扔物线]]></dc:creator><pubDate>Fri, 27 Dec 2024 10:02:13 GMT</pubDate><media:content url="https://rengwuxian.com/content/images/2024/12/24.01------.jpg" medium="image"/><content:encoded><![CDATA[<h2 id="%E8%A7%86%E9%A2%91%E5%85%88%E8%A1%8C"><strong>&#x89C6;&#x9891;&#x5148;&#x884C;</strong></h2><h3 id="%E5%93%94%E5%93%A9%E5%93%94%E5%93%A9"><strong>&#x54D4;&#x54E9;&#x54D4;&#x54E9;</strong></h3><figure class="kg-card kg-embed-card"><iframe width="100%" height="480" src="//player.bilibili.com/player.html?isOutside=true&amp;aid=113720097245487&amp;bvid=BV1DtCCYREgn&amp;cid=27549369244&amp;p=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true" data-tool="mdnice&#x7F16;&#x8F91;&#x5668;"></iframe></figure><h3 id="youtube"><strong>YouTube</strong></h3><figure class="kg-card kg-embed-card"><iframe width="560" height="315" src="https://www.youtube.com/embed/4qeeyPFhbaM?si=E791C7PeqlQQhoxD" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen data-tool="mdnice&#x7F16;&#x8F91;&#x5668;"></iframe></figure><blockquote>&#x4E0B;&#x9762;&#x662F;&#x89C6;&#x9891;&#x5185;&#x5BB9;&#x7684;&#x811A;&#x672C;&#x6587;&#x6848;&#x539F;&#x7A3F;&#x5206;&#x4EAB;&#x3002;</blockquote><figure class="kg-card kg-image-card"><img src="http://image.rengwuxian.com/2023/12/27/210647777b3c9.jpg" class="kg-image" alt="&#x3010;&#x6027;&#x80FD;&#x4F18;&#x5316;&#x3011;&#x771F;&#x6709;&#x90A3;&#x4E48;&#x6162;&#xFF1F;Java &#x548C; Kotlin &#x7684;&#x53CD;&#x5C04;" loading="lazy" width="900" height="500"></figure><h2 id="%E5%BC%80%E5%9C%BA"><strong>&#x5F00;&#x573A;</strong></h2><img src="https://rengwuxian.com/content/images/2024/12/24.01------.jpg" alt="&#x3010;&#x6027;&#x80FD;&#x4F18;&#x5316;&#x3011;&#x771F;&#x6709;&#x90A3;&#x4E48;&#x6162;&#xFF1F;Java &#x548C; Kotlin &#x7684;&#x53CD;&#x5C04;"><p>&#x5927;&#x5BB6;&#x597D;&#xFF01;&#x6211;&#x662F;&#x6254;&#x7269;&#x7EBF;&#x6731;&#x51EF;&#x3002;</p><p>Java &#x548C; Kotlin &#x7684;&#x53CD;&#x5C04;&#x6211;&#x4EEC;&#x90FD;&#x77E5;&#x9053;&#x554A;&#xFF0C;&#x9AD8;&#x7EA7;&#x7279;&#x6027;&#xFF0C;&#x5B83;&#x80FD;&#x5E2E;&#x6211;&#x4EEC;&#x7A81;&#x7834;&#x7981;&#x5FCC;&#xFF0C;&#x53BB;&#x505A;&#x4E00;&#x4E9B;&#x6B63;&#x5E38;&#x60C5;&#x51B5;&#x4E0B;&#x505A;&#x4E0D;&#x5230;&#x7684;&#x4E8B;&#xFF0C;&#x5F88;&#x5F3A;&#x3002;</p><p>&#x53E6;&#x5916;&#x5B83;&#x4E5F;&#x6709;&#x52A3;&#x52BF;&#xFF0C;&#x6BD4;&#x5982;&#x6027;&#x80FD;&#x548C;&#x517C;&#x5BB9;&#x6027;&#x3002;&#x5C24;&#x5176;&#x662F;&#x6027;&#x80FD;&#xFF0C;&#x5BF9;&#x4E8E; Android &#x8FD9;&#x79CD;&#x6027;&#x80FD;&#x53D7;&#x9650;&#x7684;&#x573A;&#x666F;&#xFF0C;&#x6211;&#x4EEC;&#x5BF9;&#x6240;&#x6709;&#x300C;&#x6027;&#x80FD;&#x5DEE;&#x300D;&#x7684;&#x65B9;&#x6848;&#x90FD;&#x662F;&#x975E;&#x5E38;&#x8C28;&#x614E;&#x7684;&#x3002;&#x6709;&#x4E2A;&#x5178;&#x578B;&#x7684;&#x4F8B;&#x5B50;&#x5C31;&#x662F; Dagger&#xFF1A;Google &#x5F88;&#x65E9;&#x5C31;&#x6709;&#x4E00;&#x4E2A;&#x57FA;&#x4E8E;&#x6CE8;&#x89E3;&#x7684;&#x4F9D;&#x8D56;&#x6CE8;&#x5165;&#x5E93; Guice&#xFF0C;&#x4F46;&#x662F; Square &#x5374;&#x53C8;&#x521B;&#x5EFA;&#x4E86;&#x4E00;&#x4E2A;&#x7528;&#x9014;&#x548C;&#x7528;&#x6CD5;&#x90FD;&#x5DEE;&#x4E0D;&#x591A;&#x7684;&#x5E93;&#x2014;&#x2014;Dagger&#x3002;&#x533A;&#x522B;&#x4E3B;&#x8981;&#x5728;&#x4E8E;&#x5E95;&#x5C42;&#x5B9E;&#x73B0;&#xFF0C;Guice &#x662F;&#x901A;&#x8FC7;&#x8FD0;&#x884C;&#x65F6;&#x7528;&#x53CD;&#x5C04;&#x8BFB;&#x53D6;&#x6CE8;&#x89E3;&#x6765;&#x5B9E;&#x73B0;&#x7684;&#xFF0C;&#x800C; Dagger &#x57FA;&#x672C;&#x4E0A;&#x6CA1;&#x6709;&#x7528;&#x53CD;&#x5C04;&#xFF0C;&#x800C;&#x662F;&#x7528;&#x7684; Annotation Processor&#x3002;&#x4F60;&#x770B;&#xFF0C;&#x5E9F;&#x4E86;&#x4E00;&#x5927;&#x756A;&#x5DE5;&#x592B;&#xFF0C;&#x505A;&#x4E86;&#x4E2A;&#x4E00;&#x6837;&#x7684;&#x4E1C;&#x897F;&#xFF0C;&#x53EA;&#x662F;&#x4E3A;&#x4E86;&#x907F;&#x514D;&#x53CD;&#x5C04;&#x6240;&#x5E26;&#x6765;&#x7684;&#x6027;&#x80FD;&#x635F;&#x8017;&#xFF0C;&#x8DB3;&#x4EE5;&#x8BF4;&#x660E;&#x53CD;&#x5C04;&#x7684;&#x53EF;&#x6015;&#x3002;&#x53E6;&#x5916;&#x7F51;&#x4E0A;&#x4E5F;&#x6709;&#x5F88;&#x591A;&#x6587;&#x7AE0;&#xFF0C;&#x544A;&#x8BC9;&#x6211;&#x4EEC;&#x53CD;&#x5C04;&#x7684;&#x6027;&#x80FD;&#x975E;&#x5E38;&#x5DEE;&#xFF0C;&#x4E00;&#x5B9A;&#x8981;&#x8C28;&#x614E;&#x4F7F;&#x7528;&#x3002;</p><p>&#x90A3;&#x4E48;&#x8FD9;&#x513F;&#x5176;&#x5B9E;&#x5C31;&#x6709;&#x4E2A;&#x95EE;&#x9898;&#xFF1A;&#x5B83;&#x7684;&#x6027;&#x80FD;&#x5230;&#x5E95;&#x6709;&#x591A;&#x5DEE;&#xFF1F;&#x6478;&#x5230;&#x5B83;&#x7684;&#x8FB9;&#x754C;&#xFF0C;&#x6211;&#x4EEC;&#x624D;&#x77E5;&#x9053;&#x4EC0;&#x4E48;&#x65F6;&#x5019;&#x7528;&#x5B83;&#x3001;&#x7528;&#x5230;&#x4EC0;&#x4E48;&#x7A0B;&#x5EA6;&#xFF0C;&#x5BF9;&#x5427;&#xFF1F;&#x8FD9;&#x5C31;&#x662F;&#x4ECA;&#x5929;&#x54B1;&#x8981;&#x804A;&#x7684;&#x8BDD;&#x9898;&#x3002;</p><h2 id="%E5%8F%8D%E5%B0%84%E6%98%AF%E5%95%A5"><strong>&#x53CD;&#x5C04;&#x662F;&#x5565;</strong></h2><p>&#x53CD;&#x5C04;&#x4E4B;&#x6240;&#x4EE5;&#x6162;&#xFF0C;&#x8DDF;&#x5B83;&#x7684;&#x539F;&#x7406;&#x662F;&#x76F4;&#x63A5;&#x76F8;&#x5173;&#x7684;&#x3002;&#xA0;</p><p>&#x5927;&#x5BB6;&#x60F3;&#x8FC7;&#x4E3A;&#x4EC0;&#x4E48;&#x8FD9;&#x4E2A;&#x529F;&#x80FD;&#x53EB;&#x300C;&#x53CD;&#x5C04;&#x300D;&#x5417;&#xFF1F;&#x5B83;&#x539F;&#x672C;&#x7684;&#x82F1;&#x6587;&#x53EB; reflection&#x3002;&#x8FD9;&#x4E2A;&#x8BCD;&#x6709;&#x300C;&#x53CD;&#x5C04;&#x300D;&#x7684;&#x610F;&#x601D;&#xFF0C;&#x4F46;&#x662F;&#x5B83;&#x7528;&#x5728;&#x7F16;&#x7A0B;&#x91CC;&#x7684;&#x65F6;&#x5019;&#x7684;&#x672C;&#x610F;&#x5176;&#x5B9E;&#x4E0D;&#x662F;&#x53CD;&#x5C04;&#xFF0C;&#x800C;&#x662F;&#x300C;&#x81EA;&#x7701;&#x300D;&#xFF0C;&#x6307;&#x7684;&#x662F;&#x4EBA;&#x5BF9;&#x4E8E;&#x81EA;&#x5DF1;&#x7684;&#x884C;&#x4E3A;&#x554A;&#x3001;&#x53D1;&#x751F;&#x8FC7;&#x7684;&#x4E8B;&#x554A;&#x8FDB;&#x884C;&#x6DF1;&#x523B;&#x7684;&#x53CD;&#x601D;&#xFF0C;&#x5E76;&#x4E14;&#x671F;&#x671B;&#x901A;&#x8FC7;&#x8FD9;&#x4E9B;&#x53CD;&#x601D;&#x6765;&#x8BA9;&#x81EA;&#x5DF1;&#x4EE5;&#x540E;&#x53EF;&#x4EE5;&#x505A;&#x5F97;&#x66F4;&#x597D;&#x6216;&#x8005;&#x907F;&#x514D;&#x540C;&#x6837;&#x7684;&#x95EE;&#x9898;&#x4E4B;&#x7C7B;&#x7684;&#xFF0C;&#x8FD9;&#x79CD;&#x884C;&#x4E3A;&#x5728;&#x82F1;&#x6587;&#x91CC;&#x4E5F;&#x53EB; reflection&#x3002;&#x800C;&#x8FD9;&#x4E2A;&#xFF0C;&#x624D;&#x662F;&#x7F16;&#x7A0B;&#x91CC;&#x7684; reflection&#x2014;&#x2014;&#x4E5F;&#x5C31;&#x662F;&#x53CD;&#x5C04;&#x2014;&#x2014;&#x7684;&#x672C;&#x610F;&#x3002;&#x5728; Java &#x91CC;&#x9762;&#xFF0C;reflection &#x7684;&#x610F;&#x601D;&#x5C31;&#x662F;&#x300C;&#x7A0B;&#x5E8F;&#x8FDB;&#x884C;&#x81EA;&#x6211;&#x63A2;&#x67E5;&#xFF0C;&#x770B;&#x5230;&#x81EA;&#x5DF1;&#x6DF1;&#x5904;&#x7684;&#x3001;&#x6CA1;&#x6709;&#x76F4;&#x63A5;&#x901A;&#x8FC7; API &#x66B4;&#x9732;&#x51FA;&#x6765;&#x7684;&#x6027;&#x8D28;&#x300D;&#xFF0C;&#x6BD4;&#x5982;&#x5217;&#x51FA;&#x81EA;&#x5DF1;&#x5185;&#x90E8;&#x7684;&#x6240;&#x6709;&#x65B9;&#x6CD5;&#xFF0C;&#x6216;&#x8005;&#x6839;&#x636E;&#x65B9;&#x6CD5;&#x540D;&#x7684;&#x5B57;&#x7B26;&#x4E32;&#x6765;&#x83B7;&#x53D6;&#x6307;&#x5B9A;&#x7684;&#x65B9;&#x6CD5;&#xFF1B;&#x53E6;&#x5916;&#x5728;&#x5B9E;&#x9645;&#x7684;&#x529F;&#x80FD;&#x4E0A;&#xFF0C;Java &#x8FD8;&#x505A;&#x4E86;&#x5EF6;&#x4F38;&#xFF0C;Java &#x7684;&#x53CD;&#x5C04;&#x8FD8;&#x5141;&#x8BB8;&#x7A0B;&#x5E8F;&#x5BF9;&#x81EA;&#x5DF1;&#x8FDB;&#x884C;&#x6027;&#x8D28;&#x548C;&#x529F;&#x80FD;&#x7684;&#x52A8;&#x6001;&#x4FEE;&#x6539;&#x3002;reflection &#x8FD9;&#x4E2A;&#x8BCD;&#x7684;&#x672C;&#x610F;&#x53EA;&#x6709;&#x81EA;&#x7701;&#xFF0C;&#x6CA1;&#x6709;&#x81EA;&#x6211;&#x4FEE;&#x6539;&#x7684;&#x610F;&#x601D;&#x2014;&#x2014;&#x4EBA;&#x600E;&#x4E48;&#x81EA;&#x6211;&#x4FEE;&#x6539;&#x554A;&#xFF0C;&#x957F;&#x51FA;&#x7B2C;&#x4E09;&#x6761;&#x817F;&#xFF1F;&#x662F;&#x5427;&#x3002;&#x4F46;&#x662F; Java &#x7684;&#x53CD;&#x5C04;&#x662F;&#x652F;&#x6301;&#x7684;&#x3002;&#xA0;</p><p>&#x6240;&#x4EE5;&#x300C;&#x53CD;&#x5C04;&#x300D;&#x8FD9;&#x4E2A;&#x8BCD;&#xFF0C;&#x5B83;&#x5B9E;&#x8D28;&#x4E0A;&#x662F;&#x300C;&#x81EA;&#x7701;&#x300D;&#x6216;&#x8005;&#x8BF4;&#x300C;&#x81EA;&#x6211;&#x63A2;&#x67E5;&#x300D;&#x7684;&#x610F;&#x601D;&#x2014;&#x2014;&#x5982;&#x679C;&#x4ECE;&#x8FD9;&#x4E2A;&#x7FFB;&#x8BD1;&#x6765;&#x89E3;&#x91CA;&#xFF0C;&#x5B83;&#x7684;&#x540D;&#x5B57;&#x5C31;&#x6BD4;&#x8F83;&#x76F4;&#x89C2;&#x4E86;&#x5427;&#xFF1F;</p><h2 id="%E5%8F%8D%E5%B0%84%E6%9C%89%E4%BB%80%E4%B9%88%E7%94%A8"><strong>&#x53CD;&#x5C04;&#x6709;&#x4EC0;&#x4E48;&#x7528;</strong></h2><p>&#x53CD;&#x5C04;&#x5177;&#x4F53;&#x7684;&#x7528;&#x9014;&#x6709;&#x5F88;&#x591A;&#xFF0C;&#x5927;&#x81F4;&#x53EF;&#x4EE5;&#x5F52;&#x4E3A;&#x4E24;&#x7C7B;&#xFF1A;&#x4E00;&#x7C7B;&#x662F;&#x7528;&#x6765;&#x8BBF;&#x95EE;&#x90A3;&#x4E9B;&#x672C;&#x6765;&#x8BBF;&#x95EE;&#x4E0D;&#x5230;&#x7684; API&#xFF0C;&#x4E00;&#x7C7B;&#x662F;&#x52A8;&#x6001;&#x7684;&#x529F;&#x80FD;&#x62D3;&#x5C55;&#x3002;&#xA0;</p><p>&#x6709;&#x4E9B; API &#x7531;&#x4E8E;&#x52A0;&#x4E86; private &#x7684;&#x9650;&#x5236;&#xFF0C;&#x4E0D;&#x80FD;&#x88AB;&#x516C;&#x5F00;&#x8BBF;&#x95EE;&#xFF0C;&#x4F46;&#x662F;&#x6211;&#x4EEC;&#x53C8;&#x9700;&#x8981;&#x5728;&#x67D0;&#x4E9B;&#x60C5;&#x51B5;&#x53BB;&#x8BBF;&#x95EE;&#x5B83;&#x4EEC;&#x2014;&#x2014;&#x6BD4;&#x5982;&#x5728;&#x6D4B;&#x8BD5;&#x6D41;&#x7A0B;&#x91CC;&#x6211;&#x4EEC;&#x53EF;&#x80FD;&#x9700;&#x8981;&#x901A;&#x8FC7;&#x4E00;&#x4E9B;&#x79C1;&#x6709; API &#x6765;&#x505A;&#x6D4B;&#x8BD5;&#x573A;&#x666F;&#x7684;&#x521D;&#x59CB;&#x5316;&#x2014;&#x2014;&#x4F46;&#x5E76;&#x4E0D;&#x5E0C;&#x671B;&#x771F;&#x7684;&#x628A;&#x8FD9;&#x4E9B; API &#x7ED9;&#x5199;&#x6210; public &#x7684;&#xFF0C;&#x90A3;&#x4E48;&#x5C31;&#x53EF;&#x4EE5;&#x7528;&#x53CD;&#x5C04;&#x6765;&#x5728;&#x7A0B;&#x5E8F;&#x8FD0;&#x884C;&#x8FC7;&#x7A0B;&#x4E2D;&#x5F3A;&#x884C;&#x8FDB;&#x884C;&#x8FD9;&#x4E9B;&#x8BBF;&#x95EE;&#x3002;</p><p>&#x53CD;&#x5C04;&#x8FD8;&#x6709;&#x4E2A;&#x7ECF;&#x5178;&#x7684;&#x5E94;&#x7528;&#x573A;&#x666F;&#x662F;&#x52A8;&#x6001;&#x4EE3;&#x7406;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x5728;&#x8FD0;&#x884C;&#x65F6;&#x6839;&#x636E;&#x5B9E;&#x65F6;&#x9700;&#x6C42;&#x6765;&#x52A8;&#x6001;&#x5730;&#x521B;&#x5EFA;&#x65B0;&#x7684;&#x7C7B;&#x578B;&#xFF0C;&#x4EE5;&#x53CA;&#x8FD9;&#x4E9B;&#x7C7B;&#x578B;&#x7684;&#x5B9E;&#x4F8B;&#x5316;&#x5BF9;&#x8C61;&#x3002;&#x6BD4;&#x5982; Retrofit &#x7684;&#x7F51;&#x7EDC;&#x8BBF;&#x95EE;&#x5C31;&#x662F;&#x901A;&#x8FC7;&#x52A8;&#x6001;&#x4EE3;&#x7406;&#x6765;&#x5B9E;&#x73B0;&#x7684;&#x3002;</p><h2 id="%E5%8F%8D%E5%B0%84%E4%B8%BA%E4%BB%80%E4%B9%88%E6%85%A2"><strong>&#x53CD;&#x5C04;&#x4E3A;&#x4EC0;&#x4E48;&#x6162;</strong></h2><p>&#x53CD;&#x5C04;&#x7684;&#x529F;&#x80FD;&#x548C;&#x5B9A;&#x4F4D;&#x5927;&#x6982;&#x5C31;&#x662F;&#x8FD9;&#x4E48;&#x56DE;&#x4E8B;&#x3002;&#x7136;&#x540E;&#xFF0C;&#x6211;&#x4EEC;&#x66F4;&#x6DF1;&#x5165;&#x4E00;&#x6B65;&#xFF1A;&#x53CD;&#x5C04;&#x4E3A;&#x4EC0;&#x4E48;&#x6162;&#xFF1F;&#x2014;&#x2014;&#x5F88;&#x7B80;&#x5355;&#xFF0C;&#x56E0;&#x4E3A;&#x5B83;&#x662F;&#x52A8;&#x6001;&#x7684;&#x3002;</p><p>Java &#x7684; JIT&#xFF08;Just-In-Time&#xFF09;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x5373;&#x65F6;&#x7F16;&#x8BD1;&#x7684;&#x4F18;&#x5316;&#xFF0C;&#x53CD;&#x5C04;&#x7EDD;&#x5927;&#x591A;&#x6570;&#x60C5;&#x51B5;&#x4E0B;&#x662F;&#x7528;&#x4E0D;&#x4E86;&#x7684;&#x3002;&#x56E0;&#x4E3A; JIT &#x9700;&#x8981;&#x4ECE;&#x5B57;&#x8282;&#x7801;&#x91CC;&#x83B7;&#x53D6;&#x8DB3;&#x591F;&#x591A;&#x7684;&#x4E0A;&#x4E0B;&#x6587;&#x4FE1;&#x606F;&#x624D;&#x80FD;&#x505A;&#x4F18;&#x5316;&#xFF0C;&#x800C;&#x53CD;&#x5C04;&#x90FD;&#x662F;&#x52A8;&#x6001;&#x7684;&#xFF0C;&#x6CA1;&#x4EC0;&#x4E48;&#x4E0A;&#x4E0B;&#x6587;&#xFF0C;&#x5C31;&#x5F88;&#x96BE;&#x4F18;&#x5316;&#x3002;&#xA0;</p><p>&#x53E6;&#x5916;&#xFF0C;&#x7531;&#x4E8E;&#x53CD;&#x5C04;&#x662F;&#x901A;&#x8FC7;&#x300C;&#x81EA;&#x6211;&#x63A2;&#x67E5;&#x300D;&#x7684;&#x65B9;&#x5F0F;&#x6765;&#x52A8;&#x6001;&#x83B7;&#x53D6;&#x4FE1;&#x606F;&#xFF0C;&#x8FD9;&#x79CD;&#x52A8;&#x6001;&#x83B7;&#x53D6;&#x6240;&#x5305;&#x542B;&#x7684;&#x4FE1;&#x606F;&#x67E5;&#x627E;&#x8FC7;&#x7A0B;&#x2014;&#x2014;&#x4F8B;&#x5982;&#x901A;&#x8FC7;&#x65B9;&#x6CD5;&#x540D;&#x6765;&#x67E5;&#x627E;&#x65B9;&#x6CD5;&#x2014;&#x2014;&#x4E5F;&#x9700;&#x8981;&#x8017;&#x65F6;&#x3002;&#x76F8;&#x6BD4;&#x8D77;&#x6765;&#xFF0C;&#x6B63;&#x5E38;&#x7684;&#x4EE3;&#x7801;&#x662F;&#x6211;&#x4EEC;&#x8981;&#x8BBF;&#x95EE;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x865A;&#x62DF;&#x673A;&#x5DF2;&#x7ECF;&#x77E5;&#x9053;&#x6211;&#x4EEC;&#x8981;&#x8BBF;&#x95EE;&#x7684;&#x5BF9;&#x8C61;&#x5728;&#x4EC0;&#x4E48;&#x4F4D;&#x7F6E;&#x4E86;&#xFF0C;&#x8FD0;&#x884C;&#x65F6;&#x5C31;&#x4E0D;&#x7528;&#x518D;&#x67E5;&#x627E;&#x4E86;&#x3002;</p><p>&#x8FD8;&#x6709;&#x66F4;&#x591A;&#x7684;&#x539F;&#x56E0;&#xFF0C;&#x6BD4;&#x5982;&#x53CD;&#x5C04;&#x7684;&#x8C03;&#x7528;&#x8FD8;&#x9700;&#x8981;&#x7A0B;&#x5E8F;&#x5BF9;&#x8BBF;&#x95EE;&#x6743;&#x9650;&#x505A;&#x52A8;&#x6001;&#x68C0;&#x67E5;&#xFF0C;&#x4EE5;&#x53CA;&#x9700;&#x8981;&#x6211;&#x4EEC;&#x5728;&#x4EE3;&#x7801;&#x91CC;&#x589E;&#x52A0;&#x5F02;&#x5E38;&#x5904;&#x7406;&#xFF0C;&#x7B49;&#x7B49;&#x7B49;&#x7B49;&#xFF0C;&#x8FD9;&#x4E9B;&#x90FD;&#x662F;&#x4F1A;&#x8017;&#x65F6;&#x7684;&#x3002;&#x6211;&#x4EEC;&#x4E0D;&#x9700;&#x8981;&#x5BF9;&#x5B83;&#x4EEC;&#x505A;&#x5B8C;&#x6574;&#x4E86;&#x89E3;&#xFF0C;&#x53EA;&#x8981;&#x77E5;&#x9053;&#x53CD;&#x5C04;&#x7684;&#x300C;&#x52A8;&#x6001;&#x81EA;&#x6211;&#x63A2;&#x67E5;&#x300D;&#x8FD9;&#x4E2A;&#x672C;&#x8D28;&#xFF0C;&#x7684;&#x786E;&#x5BFC;&#x81F4;&#x4E86;&#x5B83;&#x662F;&#x4E00;&#x5B9A;&#x6BD4;&#x666E;&#x901A;&#x4EE3;&#x7801;&#x8981;&#x6162;&#x7684;&#xFF0C;&#x8FD9;&#x662F;&#x4E2A;&#x8131;&#x4E0D;&#x6389;&#x7684;&#x672C;&#x8D28;&#x5F31;&#x70B9;&#x3002;&#x7531;&#x4E8E;&#x52A8;&#x6001;&#xFF0C;&#x6240;&#x4EE5;&#x7075;&#x6D3B;&#xFF1B;&#x4F46;&#x540C;&#x6837;&#x7531;&#x4E8E;&#x52A8;&#x6001;&#xFF0C;&#x6240;&#x4EE5;&#x6027;&#x80FD;&#x5DEE;&#x3002;</p><h2 id="%E6%9C%89%E5%A4%9A%E6%85%A2%EF%BC%9F"><strong>&#x6709;&#x591A;&#x6162;&#xFF1F;</strong></h2><p>&#x4E0D;&#x8FC7;&#xFF0C;&#x5230;&#x5E95;&#x6709;&#x591A;&#x6162;&#x5462;&#xFF1F; &#x6211;&#x505A;&#x4E86;&#x4E00;&#x4E2A;&#x6D4B;&#x8BD5;&#xFF1A;&#x5728;&#x6211;&#x7684;&#x4E09;&#x661F; S20 &#x4E0A;&#x9762;&#xFF0C;&#x6267;&#x884C;&#x4E00;&#x4E2A;&#x76F4;&#x63A5;&#x8FD4;&#x56DE;&#x6570;&#x503C; 1 &#x7684; Java &#x65B9;&#x6CD5;&#xFF1A;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/12/640.png" class="kg-image" alt="&#x3010;&#x6027;&#x80FD;&#x4F18;&#x5316;&#x3011;&#x771F;&#x6709;&#x90A3;&#x4E48;&#x6162;&#xFF1F;Java &#x548C; Kotlin &#x7684;&#x53CD;&#x5C04;" loading="lazy" width="1080" height="315"></figure><p>&#x6211;&#x5206;&#x522B;&#x7528;&#x76F4;&#x63A5;&#x8C03;&#x7528;&#x548C;&#x53CD;&#x5C04;&#x8C03;&#x7528;&#x7684;&#x65B9;&#x5F0F;&#x6765;&#x6267;&#x884C;&#x5B83;&#xFF1A;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/12/640-1.png" class="kg-image" alt="&#x3010;&#x6027;&#x80FD;&#x4F18;&#x5316;&#x3011;&#x771F;&#x6709;&#x90A3;&#x4E48;&#x6162;&#xFF1F;Java &#x548C; Kotlin &#x7684;&#x53CD;&#x5C04;" loading="lazy" width="1080" height="643"></figure><p>&#x6267;&#x884C;&#x4E00;&#x5343;&#x4E07;&#x6B21;&#xFF0C;&#x6B63;&#x5E38;&#x8C03;&#x7528;&#x7684;&#x8017;&#x65F6;&#x662F; 24 ms&#xFF0C;&#x800C;&#x53CD;&#x5C04;&#x7684;&#x8017;&#x65F6;&#x662F; 4716 ms&#xFF0C;&#x4E5F;&#x5C31;&#x662F; 4 &#x79D2;&#x591A;&#x3002;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/12/640-1.jpg" class="kg-image" alt="&#x3010;&#x6027;&#x80FD;&#x4F18;&#x5316;&#x3011;&#x771F;&#x6709;&#x90A3;&#x4E48;&#x6162;&#xFF1F;Java &#x548C; Kotlin &#x7684;&#x53CD;&#x5C04;" loading="lazy" width="1080" height="385"></figure><p>&#x53EF;&#x4EE5;&#x770B;&#x51FA;&#x6765;&#x4EC0;&#x4E48;&#xFF1F;</p><p>&#x5F88;&#x660E;&#x663E;&#xFF0C;&#x53CD;&#x5C04;&#x7684;&#x6027;&#x80FD;&#x6BD4;&#x6B63;&#x5E38;&#x8C03;&#x7528;&#x662F;&#x5DEE;&#x5F88;&#x591A;&#x7684;&#x3002;&#x5BF9;&#x5427;&#xFF1F;&#x6240;&#x4EE5;&#x76F8;&#x6BD4;&#x8D77;&#x666E;&#x901A;&#x7684;&#x4EE3;&#x7801;&#xFF0C;&#x6211;&#x4EEC;&#x5728;&#x4F7F;&#x7528;&#x53CD;&#x5C04;&#x7684;&#x65F6;&#x5019;&#x7684;&#x786E;&#x4F1A;&#x8017;&#x65F6;&#x66F4;&#x4E45;&#xFF0C;&#x4ECE;&#x800C;&#x66F4;&#x5BB9;&#x6613;&#x5BFC;&#x81F4;&#x754C;&#x9762;&#x7684;&#x5361;&#x987F;&#xFF0C;&#x751A;&#x81F3;&#x662F; ANR&#xFF08;&#x7A0B;&#x5E8F;&#x65E0;&#x54CD;&#x5E94;&#xFF09;&#x3002;&#x5927;&#x81F4;&#x4F30;&#x4E00;&#x4E0B;&#xFF0C;&#x4E00;&#x767E;&#x591A;&#x500D;&#x7684;&#x5DEE;&#x8DDD;&#xFF0C;&#x5F88;&#x5927;&#x4E86;&#x3002;</p><p>&#x6211;&#x4E0D;&#x6B62;&#x5728;&#x8FD9;&#x90E8;&#x771F;&#x673A;&#x4E0A;&#xFF0C;&#x8FD8;&#x5728;&#x4E24;&#x4E2A;&#x865A;&#x62DF;&#x673A;&#x4E0A;&#x505A;&#x4E86;&#x6D4B;&#x8BD5;&#xFF0C;&#x7ED3;&#x679C;&#x662F;&#x5DEE;&#x4E0D;&#x591A;&#x7684;&#xFF1A;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/12/640-2.png" class="kg-image" alt="&#x3010;&#x6027;&#x80FD;&#x4F18;&#x5316;&#x3011;&#x771F;&#x6709;&#x90A3;&#x4E48;&#x6162;&#xFF1F;Java &#x548C; Kotlin &#x7684;&#x53CD;&#x5C04;" loading="lazy" width="1080" height="630"></figure><p>&#x8FD9;&#x4E2A;&#x300C;&#x4E00;&#x767E;&#x591A;&#x500D;&#x300D;&#x7684;&#x6BD4;&#x503C;&#xFF0C;&#x5176;&#x5B9E;&#x5E76;&#x6CA1;&#x6709;&#x7ECF;&#x8FC7;&#x592A;&#x7CBE;&#x7EC6;&#x7684;&#x8003;&#x7A76;&#xFF0C;&#x6BD4;&#x5982;&#x8FD9;&#x4E24;&#x884C;&#x4EE3;&#x7801;&#x5B9E;&#x9645;&#x4E0A;&#x662F;&#x505A;&#x4E86;&#x4E24;&#x6B21;&#x7684;&#x53CD;&#x5C04;&#x64CD;&#x4F5C;&#x7684;&#xFF0C;&#x4E00;&#x6B21;&#x65B9;&#x6CD5;&#x83B7;&#x53D6;&#xFF0C;&#x4E00;&#x6B21;&#x65B9;&#x6CD5;&#x8C03;&#x7528;&#xFF1A;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/12/640-1-1.jpg" class="kg-image" alt="&#x3010;&#x6027;&#x80FD;&#x4F18;&#x5316;&#x3011;&#x771F;&#x6709;&#x90A3;&#x4E48;&#x6162;&#xFF1F;Java &#x548C; Kotlin &#x7684;&#x53CD;&#x5C04;" loading="lazy" width="1072" height="110"></figure><p>&#x5982;&#x679C;&#x53EA;&#x628A;&#x7B2C;&#x4E8C;&#x6B65;&#x7684;&#x65B9;&#x6CD5;&#x8C03;&#x7528;&#x653E;&#x8FDB;&#x5FAA;&#x73AF;&#x91CC;&#xFF0C;&#x5F97;&#x51FA;&#x7684;&#x8017;&#x65F6;&#x5C31;&#x4F1A;&#x51CF;&#x5C11;&#xFF1A;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/12/640-3.png" class="kg-image" alt="&#x3010;&#x6027;&#x80FD;&#x4F18;&#x5316;&#x3011;&#x771F;&#x6709;&#x90A3;&#x4E48;&#x6162;&#xFF1F;Java &#x548C; Kotlin &#x7684;&#x53CD;&#x5C04;" loading="lazy" width="1080" height="639"></figure><p>&#x53E6;&#x5916;&#xFF0C;&#x6211;&#x6D4B;&#x8BD5;&#x7684;&#x662F;&#x65B9;&#x6CD5;&#x8C03;&#x7528;&#x7684;&#x6027;&#x80FD;&#xFF0C;&#x4F46;&#x53CD;&#x5C04;&#x8FD8;&#x6709;&#x5176;&#x4ED6;&#x7684;&#x529F;&#x80FD;&#xFF0C;&#x90A3;&#x4E9B;&#x6211;&#x90FD;&#x6CA1;&#x6D4B;&#x3002;&#x5230;&#x5E95;&#x8981;&#x600E;&#x4E48;&#x5236;&#x5B9A;&#x6D4B;&#x91CF;&#x89C4;&#x5219;&#x624D;&#x66F4;&#x7CBE;&#x51C6;&#xFF0C;&#x5176;&#x5B9E;&#x53D6;&#x51B3;&#x4E8E;&#x6700;&#x7EC8;&#x6211;&#x8981;&#x8003;&#x67E5;&#x7684;&#x662F;&#x4EC0;&#x4E48;&#x3002;&#x800C;&#x6211;&#x73B0;&#x5728;&#x53EA;&#x662F;&#x60F3;&#x505A;&#x5927;&#x81F4;&#x7684;&#x6027;&#x80FD;&#x5BF9;&#x6BD4;&#xFF0C;&#x90A3;&#x4E48;&#x59D1;&#x4E14;&#x5C31;&#x8FD9;&#x4E48;&#x6D4B;&#xFF0C;&#x7136;&#x540E;&#x53D6;&#x4E2A;&#x5927;&#x81F4;&#x7684;&#x4E2D;&#x95F4;&#x503C;&#xFF1A;&#x4E00;&#x767E;&#x500D;&#x3002;&#x81F3;&#x5C11;&#x5728;&#x6570;&#x91CF;&#x7EA7;&#x4E0A;&#xFF0C;&#x8FD9;&#x4E48;&#x4F30;&#x7B97;&#x95EE;&#x9898;&#x4E0D;&#x5927;&#x5427;&#xFF1F;&#xA0;</p><p>&#x7136;&#x540E;&#xFF0C;&#x6211;&#x4EEC;&#x8FD8;&#x9700;&#x8981;&#x5177;&#x4F53;&#x770B;&#x4E00;&#x4E0B;&#xFF0C;&#x8FD9;&#x4E2A;&#x770B;&#x8D77;&#x6765;&#x300C;&#x76F8;&#x5F53;&#x5DEE;&#x300D;&#x7684;&#x53CD;&#x5C04;&#xFF0C;&#x5B83;&#x5177;&#x4F53;&#x7684;&#x6027;&#x80FD;&#x662F;&#x591A;&#x5C11;&#x3002;</p><p>&#x6211;&#x628A; 4716 ms &#x9664;&#x4EE5; 1 &#x5343;&#x4E07;&#x4E4B;&#x540E;&#xFF0C;&#x5F97;&#x5230;&#x7684;&#x7ED3;&#x679C;&#x662F;&#x6BCF;&#x6B21;&#x8017;&#x65F6;&#x5927;&#x7EA6; 0.0004716 &#x6BEB;&#x79D2;&#x3002;&#x8FD9;&#x662F;&#x4E2A;&#x4EC0;&#x4E48;&#x6982;&#x5FF5;&#xFF1F;&#x6309;&#x7167; Android &#x8BBE;&#x5907;&#x901A;&#x5E38;&#x7684; 60-120 Hz &#x7684;&#x5237;&#x65B0;&#x7387;&#x6765;&#x8BF4;&#xFF0C;&#x4E00;&#x5E27;&#x7684;&#x8017;&#x65F6;&#x5728; 8.3 &#x5230; 16.7 &#x6BEB;&#x79D2;&#x5DE6;&#x53F3;&#xFF0C;&#x6211;&#x4EEC;&#x5728;&#x4E00;&#x5E27;&#x5185;&#x505A;&#x7684;&#x6240;&#x6709;&#x4E8B;&#x60C5;&#x52A0;&#x8D77;&#x6765;&#x7684;&#x8017;&#x65F6;&#x4E0D;&#x80FD;&#x8D85;&#x8FC7;&#x8FD9;&#x4E2A;&#x6570;&#x503C;&#xFF0C;&#x624D;&#x80FD;&#x786E;&#x4FDD;&#x4E0D;&#x6389;&#x5E27;&#x3002;&#x90A3;&#x4E48; 0.0004716 &#x6BEB;&#x79D2;&#x4E00;&#x6B21;&#x7684;&#x64CD;&#x4F5C;&#xFF0C;&#x6211;&#x4EEC;&#x8981;&#x505A;&#x591A;&#x5C11;&#x6B21;&#x4F1A;&#x8FBE;&#x5230; 8.3 &#x6BEB;&#x79D2;&#x5462;&#xFF1F;&#x81F3;&#x5C11;&#x8981; 17000 &#x591A;&#x6B21;&#xFF1A;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/12/640-3.jpg" class="kg-image" alt="&#x3010;&#x6027;&#x80FD;&#x4F18;&#x5316;&#x3011;&#x771F;&#x6709;&#x90A3;&#x4E48;&#x6162;&#xFF1F;Java &#x548C; Kotlin &#x7684;&#x53CD;&#x5C04;" loading="lazy" width="1080" height="115"></figure><p>&#x8FD9;&#x4E0D;&#x662F;&#x4E2A;&#x7CBE;&#x786E;&#x7684;&#x503C;&#xFF0C;&#x4F46;&#x5C31;&#x50CF;&#x6211;&#x521A;&#x624D;&#x8BF4;&#x7684;&#xFF0C;&#x5728;&#x6570;&#x91CF;&#x7EA7;&#x7684;&#x5C42;&#x9762;&#xFF0C;&#x8FD9;&#x4E2A;&#x503C;&#x662F;&#x5B8C;&#x5168;&#x53EF;&#x4EE5;&#x53C2;&#x8003;&#x7684;&#xFF0C;&#x5BF9;&#x5427;&#xFF1F;&#x90A3;&#x4E48;&#xFF0C;&#x4EC0;&#x4E48;&#x4E8B;&#x4F1A;&#x9700;&#x8981;&#x6211;&#x4EEC;&#x5728;&#x4E00;&#x5E27;&#x91CC;&#x9762;&#x505A; 17000 &#x6B21;&#x53CD;&#x5C04;&#xFF1F;&#x9664;&#x4E86;&#x5FAA;&#x73AF;&#x4E4B;&#x5916;&#xFF0C;&#x57FA;&#x672C;&#x4E0D;&#x4F1A;&#x53D1;&#x751F;&#x8FD9;&#x79CD;&#x4E8B;&#x3002;&#x5F53;&#x7136;&#x4E86;&#x6211;&#x4EEC;&#x4E0D;&#x53EF;&#x80FD;&#x628A;&#x4E00;&#x5E27;&#x7684;&#x6240;&#x6709;&#x65F6;&#x95F4;&#x90FD;&#x8BA9;&#x7ED9;&#x53CD;&#x5C04;&#xFF0C;&#x6211;&#x4EEC;&#x6709;&#x5F88;&#x591A;&#x522B;&#x7684;&#x4E8B;&#x8981;&#x505A;&#xFF0C;&#x6BD4;&#x5982;&#x52A8;&#x753B;&#x7684;&#x8BA1;&#x7B97;&#x3002;&#x4F46;&#x662F;&#x6211;&#x5C31;&#x7B97;&#x9664;&#x4EE5; 10&#xFF0C;&#x53EA;&#x7ED9;&#x53CD;&#x5C04;&#x7559; 10% &#x7684;&#x65F6;&#x95F4;&#xFF0C;&#x90A3;&#x4E5F;&#x6709; 1700 &#x6B21;&#x4E86;&#x5427;&#xFF1F;&#x6709;&#x4EC0;&#x4E48;&#x9700;&#x8981;&#x6211;&#x53CD;&#x5C04; 1700 &#x4E0B;&#xFF1F;&#x4F9D;&#x7136;&#x662F;&#x9664;&#x4E86;&#x5FAA;&#x73AF;&#xFF0C;&#x57FA;&#x672C;&#x4E0D;&#x53EF;&#x80FD;&#x3002;</p><p>&#x6240;&#x4EE5;&#x7ED3;&#x8BBA;&#x662F;&#x4EC0;&#x4E48;&#xFF1F;&#x53CD;&#x5C04;&#x867D;&#x7136;&#x6162;&#xFF0C;&#x4F46;&#x662F;&#x4F60;&#x6B63;&#x5E38;&#x5730;&#x7528;&#xFF0C;&#x6709;&#x5173;&#x7CFB;&#x5417;&#xFF1F;&#x5B8C;&#x5168;&#x6CA1;&#x5173;&#x7CFB;&#x3002;</p><p>&#x9664;&#x975E;&#x50CF;&#x521A;&#x624D;&#x8BF4;&#x7684;&#xFF1A;&#x5982;&#x679C;&#x4F60;&#x5728;&#x5FAA;&#x73AF;&#x91CC;&#x2014;&#x2014;&#x6216;&#x8005;&#x4EFB;&#x4F55;&#x9AD8;&#x9891;&#x8C03;&#x7528;&#x7684;&#x573A;&#x666F;&#x91CC;&#x4F7F;&#x7528;&#x53CD;&#x5C04;&#x2014;&#x2014;&#x90A3;&#x8FD8;&#x662F;&#x8981;&#x5C0F;&#x5FC3;&#x7684;&#xFF0C;&#x4E00;&#x4E0D;&#x7559;&#x795E;&#x4E5F;&#x8BB8;&#x5C31;&#x8017;&#x65F6;&#x8FC7;&#x4E45;&#xFF0C;&#x628A;&#x754C;&#x9762;&#x641E;&#x6389;&#x5E27;&#x4E86;&#x3002;&#x81F3;&#x4E8E;&#x5177;&#x4F53;&#x4EC0;&#x4E48;&#x65F6;&#x5019;&#x4F1A;&#x7528;&#x5FAA;&#x73AF;&#x6216;&#x8005;&#x9AD8;&#x9891;&#x8C03;&#x7528;&#xFF0C;&#x90A3;&#x6211;&#x5C31;&#x6CA1;&#x6CD5;&#x544A;&#x8BC9;&#x4F60;&#x4E86;&#xFF0C;&#x53EA;&#x6709;&#x54B1;&#x81EA;&#x5DF1;&#x77E5;&#x9053;&#x81EA;&#x5DF1;&#x7684;&#x4EE3;&#x7801;&#x7684;&#x903B;&#x8F91;&#xFF0C;&#x662F;&#x5427;&#xFF1F;&#x8FD9;&#x4E2A;&#x5F97;&#x81EA;&#x5DF1;&#x5224;&#x65AD;&#x3002;</p><p>&#x6240;&#x4EE5;&#x8FD9;&#x4EFD;&#x6D4B;&#x8BD5;&#x7ED3;&#x679C;&#xFF0C;&#x5B9E;&#x9645;&#x4E0A;&#x7ED9;&#x4E86;&#x6211;&#x4EEC;&#x4E24;&#x4E2A;&#x4FE1;&#x606F;&#xFF1A;</p><p>&#x25CF; &#x4E00;&#xFF0C;&#x53CD;&#x5C04;&#x7684;&#x786E;&#x6BD4;&#x6B63;&#x5E38;&#x8C03;&#x7528;&#x8981;&#x66F4;&#x6162;&#xFF0C;&#x800C;&#x4E14;&#x6162;&#x5F88;&#x591A;&#x3002;</p><p>&#x25CF; &#x4E8C;&#xFF0C;&#x867D;&#x7136;&#x6162;&#x5F88;&#x591A;&#xFF0C;&#x4F46;&#x5B83;&#x8FD8;&#x662F;&#x5F88;&#x5FEB;&#x3002;&#x6240;&#x4EE5;&#x6B63;&#x5E38;&#x60C5;&#x51B5;&#x4E0B;&#x4F9D;&#x7136;&#x53EF;&#x4EE5;&#x653E;&#x5FC3;&#x7528;&#x800C;&#x4E0D;&#x81F3;&#x4E8E;&#x9020;&#x6210;&#x53EF;&#x89C1;&#x7684;&#x5F71;&#x54CD;&#xFF1B;&#x53EA;&#x662F;&#x5BF9;&#x4E8E;&#x9AD8;&#x9891;&#x8C03;&#x7528;&#x7684;&#x573A;&#x666F;&#xFF0C;&#x5C31;&#x771F;&#x7684;&#x9700;&#x8981;&#x6CE8;&#x610F;&#x4E00;&#x4E0B;&#xFF0C;&#x7528;&#x5F97;&#x592A;&#x731B;&#x8FD8;&#x662F;&#x6709;&#x53EF;&#x80FD;&#x628A;&#x754C;&#x9762;&#x641E;&#x5361;&#x987F;&#x7684;&#x3002;</p><p>&#x6574;&#x4F53;&#x6765;&#x8BF4;&#xFF0C;&#x4E0D;&#x7B97;&#x53EF;&#x6015;&#x3002;</p><h2 id="%E6%97%A7%E7%89%88%E6%9C%AC-android-%E7%9A%84%E8%A1%A8%E7%8E%B0"><strong>&#x65E7;&#x7248;&#x672C; Android &#x7684;&#x8868;&#x73B0;</strong></h2><p>&#x4F46;&#x662F;&#xFF0C;&#x65E2;&#x7136;&#x5E76;&#x4E0D;&#x53EF;&#x6015;&#xFF0C;&#x90A3;&#x4E3A;&#x4EC0;&#x4E48;&#x6C5F;&#x6E56;&#x4E0A;&#x6709;&#x90A3;&#x4E48;&#x591A;&#x300C;&#x53CD;&#x5C04;&#x7684;&#x6027;&#x80FD;&#x5F88;&#x5DEE;&#x300D;&#x7684;&#x4F20;&#x8A00;&#x5462;&#xFF1F;&#x96BE;&#x9053;&#x53C8;&#x662F;&#x4E00;&#x4E2A;&#x4EE5;&#x8BB9;&#x4F20;&#x8BB9;&#x7684;&#x5047;&#x77E5;&#x8BC6;&#xFF1F;</p><p>&#x5982;&#x679C;&#x4F60;&#x5728;&#x641C;&#x7D22;&#x5F15;&#x64CE;&#x628A;&#x65F6;&#x95F4;&#x505A;&#x4E00;&#x4E0B;&#x9650;&#x5236;&#xFF0C;&#x4F60;&#x4F1A;&#x53D1;&#x73B0;&#x4ECE;&#x5341;&#x51E0;&#x5E74;&#x524D;&#x5F00;&#x59CB;&#xFF0C;&#x7F51;&#x4E0A;&#x5C31;&#x5DF2;&#x7ECF;&#x6709;&#x4E86;&#x5BF9;&#x4E8E;&#x53CD;&#x5C04;&#x5728; Android &#x8BBE;&#x5907;&#x4E0A;&#x6BD4;&#x8F83;&#x6162;&#x7684;&#x8BA8;&#x8BBA;&#x4E86;&#xFF1A;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/12/640-4.jpg" class="kg-image" alt="&#x3010;&#x6027;&#x80FD;&#x4F18;&#x5316;&#x3011;&#x771F;&#x6709;&#x90A3;&#x4E48;&#x6162;&#xFF1F;Java &#x548C; Kotlin &#x7684;&#x53CD;&#x5C04;" loading="lazy" width="1080" height="915"></figure><p>&#x5341;&#x51E0;&#x5E74;&#x524D;&#xFF0C;&#x8FD8;&#x6CA1;&#x6709;&#x8FDB;&#x5165;&#x5BF9; Android &#x8FDB;&#x884C;&#x6781;&#x81F4;&#x6027;&#x80FD;&#x4F18;&#x5316;&#x7684;&#x65F6;&#x4EE3;&#xFF0C;&#x6240;&#x4EE5;&#x5982;&#x679C;&#x90A3;&#x65F6;&#x5019;&#x5C31;&#x6709;&#x4EBA;&#x5728;&#x8BA8;&#x8BBA;&#x53CD;&#x5C04;&#x6027;&#x80FD;&#x5DEE;&#xFF0C;&#x90A3;&#x4E48;&#x8FC7;&#x5EA6;&#x62C5;&#x5FE7;&#x6216;&#x8005;&#x5371;&#x8A00;&#x8038;&#x542C;&#x7684;&#x53EF;&#x80FD;&#x6027;&#x5C31;&#x5F88;&#x5C0F;&#x4E86;&#x3002;&#x90A3;&#x4E3A;&#x4EC0;&#x4E48;&#x5927;&#x5BB6;&#x90FD;&#x8BF4;&#x53CD;&#x5C04;&#x6027;&#x80FD;&#x5F88;&#x5DEE;&#xFF0C;&#x4F46;&#x6211;&#x5B9E;&#x9645;&#x7684;&#x6D4B;&#x8BD5;&#x7ED3;&#x679C;&#x5374;&#x8FD8;&#x884C;&#x5462;&#xFF1F;</p><p>&#x4F1A;&#x4E0D;&#x4F1A;&#x2026;&#x2026;&#x8DDF;&#x65F6;&#x4EE3;&#x6709;&#x5173;&#xFF1F;&#x6211;&#x53BB;&#x8BD5;&#x8BD5;&#x3002;</p><p>&#x5F53;&#x6211;&#x628A;&#x540C;&#x6837;&#x7684;&#x4EE3;&#x7801;&#xFF0C;&#x5728;&#x66F4;&#x65E9;&#x671F;&#x7248;&#x672C;&#x7684; Android &#x8BBE;&#x5907;&#x4E0A;&#x4E00;&#x4E2A;&#x4E2A;&#x8FDB;&#x884C;&#x6D4B;&#x8BD5;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x6211;&#x53D1;&#x73B0;&#x5728; API 19&#x2014;&#x2014;&#x4E5F;&#x5C31;&#x662F; Android 4.4&#x2014;&#x2014;&#x4EE5;&#x53CA;&#x66F4;&#x65E9;&#x7248;&#x672C;&#x7684;&#x8BBE;&#x5907;&#x4E0A;&#xFF0C;&#x6027;&#x80FD;&#x51FA;&#x73B0;&#x4E86;&#x4E25;&#x91CD;&#x7684;&#x4E0B;&#x964D;&#x3002;&#x964D;&#x5230;&#x4E86;&#x4EC0;&#x4E48;&#x7A0B;&#x5EA6;&#x5462;&#xFF0C;&#x6211;&#x9700;&#x8981;&#x8BA9;&#x5FAA;&#x73AF;&#x4ECE;&#x4E00;&#x5343;&#x4E07;&#x6B21;&#x51CF;&#x5C11;&#x5230;&#x5341;&#x4E07;&#x6B21;&#xFF0C;&#x624D;&#x80FD;&#x6B63;&#x5E38;&#x5730;&#x6D4B;&#x8BD5;&#xFF0C;&#x4E0D;&#x7136;&#x6211;&#x6BCF;&#x6B21;&#x7B49;&#x6D4B;&#x8BD5;&#x7ED3;&#x679C;&#x90FD;&#x8981;&#x7B49;&#x8001;&#x534A;&#x5929;&#xFF1A;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/12/640-4.png" class="kg-image" alt="&#x3010;&#x6027;&#x80FD;&#x4F18;&#x5316;&#x3011;&#x771F;&#x6709;&#x90A3;&#x4E48;&#x6162;&#xFF1F;Java &#x548C; Kotlin &#x7684;&#x53CD;&#x5C04;" loading="lazy" width="1080" height="650"></figure><p>&#x53E6;&#x5916;&#xFF0C;&#x6211;&#x53D1;&#x73B0;&#x5E76;&#x4E0D;&#x662F;&#x53EA;&#x6709;&#x53CD;&#x5C04;&#xFF0C;&#x8FDE;&#x6B63;&#x5E38;&#x7684;&#x51FD;&#x6570;&#x8C03;&#x7528;&#x7684;&#x6027;&#x80FD;&#x4E5F;&#x4E25;&#x91CD;&#x4E0B;&#x964D;&#x4E86;&#x3002;<br>&#x5B9E;&#x9645;&#x7684;&#x8017;&#x65F6;&#x7B97;&#x4E0B;&#x6765;&#xFF0C;&#x5355;&#x6B21;&#x53CD;&#x5C04;&#x8C03;&#x7528;&#x7684;&#x8017;&#x65F6;&#x4ECE; 0.0003-0.0004 &#x6BEB;&#x79D2;&#x589E;&#x52A0;&#x5230;&#x4E86; 0.008-0.09 &#x6BEB;&#x79D2;&#xFF0C;&#x5927;&#x6982;&#x662F; 20-300 &#x500D;&#x7684;&#x5DEE;&#x8DDD;&#x2014;&#x2014;&#x6D6E;&#x52A8;&#x6709;&#x70B9;&#x5927;&#xFF0C;&#x4E0D;&#x8FC7;&#x54B1;&#x770B;&#x4E2A;&#x5927;&#x6982;&#x7684;&#x6570;&#x91CF;&#x7EA7;&#xFF0C;&#x5C31;&#x53D6;&#x4E2A;&#x7C97;&#x7565;&#x7684;&#x4E2D;&#x95F4;&#x503C;&#xFF1A;&#x4E5F;&#x59D1;&#x4E14;&#x6309;&#x7167; 100 &#x500D;&#x5427;&#x3002;&#x521A;&#x770B;&#x7684;&#x662F;&#x53CD;&#x5C04;&#x548C;&#x666E;&#x901A;&#x8C03;&#x7528;&#x7684;&#x6027;&#x80FD;&#x5DEE;&#x8DDD;&#xFF0C;100 &#x500D;&#xFF1B;&#x73B0;&#x5728;&#x770B;&#x7684;&#x662F;&#x65E7;&#x7248;&#x548C;&#x65B0;&#x7248; Android &#x7684;&#x53CD;&#x5C04;&#x7684;&#x6027;&#x80FD;&#x5DEE;&#x8DDD;&#xFF0C;&#x4E5F;&#x662F; 100 &#x500D;&#x3002;&#x90A3;&#x4E48;&#x5982;&#x679C;&#x4F9D;&#x7136;&#x53EA;&#x7ED9;&#x53CD;&#x5C04;&#x5206;&#x914D; 10% &#x7684;&#x5355;&#x5E27;&#x65F6;&#x95F4;&#xFF0C;&#x5355;&#x6B21;&#x8017;&#x65F6;&#x6309;&#x7167; 100 &#x500D;&#x7684;&#x8BDD;&#x5C31;&#x662F; 0.04 &#x6BEB;&#x79D2;&#xFF0C;&#x8FD9;&#x6837;&#x7684;&#x8BDD;&#x5C31;&#x7B97;&#x662F;&#x6309;&#x7167;&#x65E7;&#x7248; Android &#x7684; 60 &#x5E27;&#x7684;&#x5237;&#x65B0;&#x7387;&#x2014;&#x2014;&#x6BCF;&#x5E27;&#x53EF;&#x4EE5;&#x6709; 16.7 &#x6BEB;&#x79D2;&#xFF0C;&#x662F; 8.3 &#x6BEB;&#x79D2;&#x7684;&#x4E24;&#x500D;&#x4E86;&#x2014;&#x2014;&#x4F46;&#x6BCF;&#x5E27;&#x4E5F;&#x53EA;&#x6709; 41 &#x6B21;&#x8C03;&#x7528;&#x7684;&#x673A;&#x4F1A;&#xFF1A;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/12/640-5.jpg" class="kg-image" alt="&#x3010;&#x6027;&#x80FD;&#x4F18;&#x5316;&#x3011;&#x771F;&#x6709;&#x90A3;&#x4E48;&#x6162;&#xFF1F;Java &#x548C; Kotlin &#x7684;&#x53CD;&#x5C04;" loading="lazy" width="1038" height="128"></figure><p>&#x8FD9;&#x5C31;&#x660E;&#x663E;&#x6709;&#x70B9;&#x6349;&#x895F;&#x89C1;&#x8098;&#x4E86;&#xFF0C;&#x662F;&#x5427;&#xFF1F;</p><p>&#x6240;&#x4EE5;&#xFF0C;&#x300C;&#x53CD;&#x5C04;&#x6027;&#x80FD;&#x5F88;&#x5DEE;&#x300D;&#x8FD9;&#x4E2A;&#x8BF4;&#x6CD5;&#x662F;&#x6709;&#x4F9D;&#x636E;&#x7684;&#xFF0C;&#x5BF9;&#x4E8E;&#x65E7;&#x7248;&#x7684; Android &#x6765;&#x8BF4;&#xFF0C;&#x53CD;&#x5C04;&#x7684;&#x6027;&#x80FD;&#x771F;&#x7684;&#x662F;&#x5F88;&#x5DEE;&#x7684;&#x3002;</p><h2 id="%E4%B8%BA%E4%BB%80%E4%B9%88%E5%B7%AE%E8%B7%9D%E8%BF%99%E4%B9%88%E5%A4%A7%EF%BC%9F"><strong>&#x4E3A;&#x4EC0;&#x4E48;&#x5DEE;&#x8DDD;&#x8FD9;&#x4E48;&#x5927;&#xFF1F;</strong></h2><p>&#x4E3A;&#x4EC0;&#x4E48;&#x5462;&#xFF1F;&#x4E3A;&#x4EC0;&#x4E48;&#x4E0D;&#x540C;&#x7248;&#x672C; Android &#x4E4B;&#x95F4;&#x7684;&#x5DEE;&#x8DDD;&#x8FD9;&#x4E48;&#x5927;&#xFF1F;</p><p>&#x8FD9;&#x662F;&#x6709;&#x591A;&#x65B9;&#x9762;&#x539F;&#x56E0;&#x7684;&#x3002;&#x6BD4;&#x5982; Android 5.0 &#x63A8;&#x51FA;&#x7684; ART &#x865A;&#x62DF;&#x673A;&#xFF0C;&#x6027;&#x80FD;&#x662F;&#x5F3A;&#x8FC7;&#x65E7;&#x7248;&#x7684; Dalvik &#x7684;&#x3002;&#x8FD9;&#x4E2A;&#x5F88;&#x597D;&#x8BC1;&#x660E;&#xFF1A;Android &#x662F;&#x5728; 4.4 &#x63A8;&#x51FA;&#x7684;&#x6D4B;&#x8BD5;&#x7248; ART&#xFF0C;&#x8FD9;&#x662F;&#x552F;&#x4E00;&#x4E00;&#x4E2A;&#x5141;&#x8BB8;&#x8BBE;&#x5907;&#x5728; Dalvik &#x548C; ART &#x4E4B;&#x95F4;&#x5207;&#x6362;&#x7684;&#x7248;&#x672C;&#x3002;&#x6211;&#x628A;&#x6211; API 19 &#x7684;&#x6D4B;&#x8BD5;&#x865A;&#x62DF;&#x673A;&#x5207;&#x6362;&#x5230; ART &#x4E4B;&#x540E;&#xFF0C;&#x5B83;&#x7684;&#x6027;&#x80FD;&#x8868;&#x73B0;&#x5C31;&#x63D0;&#x5347;&#x4E86;&#x5F88;&#x591A;&#xFF1A;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/12/640-5.png" class="kg-image" alt="&#x3010;&#x6027;&#x80FD;&#x4F18;&#x5316;&#x3011;&#x771F;&#x6709;&#x90A3;&#x4E48;&#x6162;&#xFF1F;Java &#x548C; Kotlin &#x7684;&#x53CD;&#x5C04;" loading="lazy" width="1080" height="570"></figure><p>&#x6240;&#x4EE5; ART &#x7684;&#x5F15;&#x5165;&#xFF0C;&#x80AF;&#x5B9A;&#x5BF9;&#x6027;&#x80FD;&#x63D0;&#x5347;&#x6709;&#x5E2E;&#x52A9;&#x3002;</p><p>&#x53E6;&#x5916;&#xFF0C;&#x65B0;&#x7248; Android &#x5BF9;&#x5783;&#x573E;&#x56DE;&#x6536;&#x7684;&#x5904;&#x7406;&#x673A;&#x5236;&#x4E5F;&#x505A;&#x4E86;&#x5927;&#x5E45;&#x4F18;&#x5316;&#xFF0C;&#x8FD9;&#x4E2A;&#x4E5F;&#x4F1A;&#x5BF9;&#x6027;&#x80FD;&#x8868;&#x73B0;&#x6709;&#x5F88;&#x597D;&#x7684;&#x5F71;&#x54CD;&#x3002;</p><p>&#x5B8C;&#x6574;&#x7684;&#x539F;&#x56E0;&#x6709;&#x5F88;&#x591A;&#xFF0C;&#x6211;&#x4E5F;&#x8BF4;&#x4E0D;&#x5168;&#xFF0C;&#x6CA1;&#x6B63;&#x7ECF;&#x7814;&#x7A76;&#x8FC7;&#x3002;&#x4F46;&#x54B1;&#x80FD;&#x770B;&#x5230;&#x7684;&#x7ED3;&#x679C;&#x662F;&#xFF0C;&#x65B0;&#x7248; Android &#x7684;&#x6027;&#x80FD;&#x6BD4;&#x65E7;&#x7248;&#x662F;&#x5F3A;&#x5F88;&#x591A;&#x500D;&#x7684;&#xFF0C;&#x662F;&#x5427;&#xFF1F;</p><p>&#x8FD9;&#x6837;&#x6765;&#x770B;&#xFF0C;&#x4F3C;&#x4E4E;&#x5C31;&#x8BF4;&#x5F97;&#x901A;&#x4E86;&#xFF1A;&#x4E3A;&#x4EC0;&#x4E48;&#x7F51;&#x4E0A;&#x5F88;&#x591A;&#x8BF4;&#x300C;&#x53CD;&#x5C04;&#x6027;&#x80FD;&#x5DEE;&#x300D;&#x7684;&#x6587;&#x7AE0;&#xFF0C;&#x4F46;&#x6211;&#x4EEC;&#x7684;&#x5B9E;&#x6D4B;&#x7ED3;&#x679C;&#x867D;&#x7136;&#x4E5F;&#x662F;&#x5DEE;&#xFF0C;&#x4F46;&#x8FDC;&#x8FDC;&#x6CA1;&#x5230;&#x4E0D;&#x53EF;&#x7528;&#x7684;&#x7A0B;&#x5EA6;&#xFF1F;&#x2014;&#x2014;&#x56E0;&#x4E3A;&#x65F6;&#x4EE3;&#x53D8;&#x4E86;&#xFF0C;&#x65E7;&#x65F6;&#x4EE3;&#x5B83;&#x771F;&#x7684;&#x5DEE;&#x5F97;&#x53EF;&#x6015;&#xFF0C;&#x800C;&#x65B0;&#x65F6;&#x4EE3;&#x91CC;&#xFF0C;&#x5176;&#x5B9E;&#x8FD8;&#x597D;&#x3002;</p><h2 id="%E6%80%BB%E7%BB%93"><strong>&#x603B;&#x7ED3;</strong></h2><p>&#x90A3;&#x4E48;&#x5230;&#x8FD9;&#x91CC;&#xFF0C;&#x5DEE;&#x4E0D;&#x591A;&#x53EF;&#x4EE5;&#x603B;&#x7ED3;&#x4E00;&#x4E0B;&#x4E86;&#xFF1A;</p><p>&#x25CF; &#x53CD;&#x5C04;&#x7684;&#x6027;&#x80FD;&#x5DEE;&#x5417;&#xFF1F;&#x5DEE;&#xFF0C;&#x6BD4;&#x4E0D;&#x7528;&#x53CD;&#x5C04;&#x6765;&#x8BF4;&#xFF0C;&#x5DEE;&#x5F88;&#x591A;&#xFF1B;</p><p>&#x25CF; &#x4E3A;&#x4EC0;&#x4E48;&#xFF1F;&#x56E0;&#x4E3A;&#x5B83;&#x7684;&#x52A8;&#x6001;&#x7279;&#x6027;&#xFF0C;&#x8BA9;&#x5B83;&#x6CE8;&#x5B9A;&#x4F1A;&#x5931;&#x53BB;&#x5404;&#x79CD;&#x4F18;&#x5316;&#xFF0C;&#x6240;&#x4EE5;&#x5FC5;&#x7136;&#x4F1A;&#x6162;&#x5F97;&#x591A;&#xFF0C;&#x8FD9;&#x662F;&#x4E0D;&#x53EF;&#x6539;&#x53D8;&#x7684;&#x4E8B;&#x5B9E;&#xFF1B;</p><p>&#x25CF; &#x4ECE;&#x7EDD;&#x5BF9;&#x8868;&#x73B0;&#x6765;&#x8BF4;&#xFF0C;&#x5B83;&#x7684;&#x6027;&#x80FD;&#x5DEE;&#x5230;&#x4E0D;&#x53EF;&#x7528;&#x4E86;&#x5417;&#xFF1F;&#x5176;&#x5B9E;&#x8FD8;&#x884C;&#xFF0C;&#x53EA;&#x8981;&#x4E0D;&#x5728;&#x5927;&#x89C4;&#x6A21;&#x8C03;&#x7528;&#x7684;&#x573A;&#x666F;&#x4E0B;&#x4F7F;&#x7528;&#x53CD;&#x5C04;&#xFF0C;&#x4E00;&#x822C;&#x662F;&#x4E0D;&#x4F1A;&#x5F71;&#x54CD;&#x8F6F;&#x4EF6;&#x7684;&#x6027;&#x80FD;&#x8868;&#x73B0;&#x7684;&#xFF1B;</p><p>&#x25CF; &#x4F46;&#xFF0C;&#x5982;&#x679C;&#x4F60;&#x5F00;&#x53D1;&#x7684;&#x8F6F;&#x4EF6;&#x4F1A;&#x5728;&#x65E7;&#x7248;&#x672C;&#x7684; Android&#x2014;&#x2014;&#x5C24;&#x5176;&#x662F; 5.0 &#x4E4B;&#x524D;&#x2014;&#x2014;&#x7684;&#x8BBE;&#x5907;&#x4E0A;&#x8FD0;&#x884C;&#xFF0C;&#x90A3;&#x4F60;&#x8FD8;&#x662F;&#x9700;&#x8981;&#x975E;&#x5E38;&#x8C28;&#x614E;&#x5730;&#x4F7F;&#x7528;&#x53CD;&#x5C04;&#x3002;&#x5728;&#x65E7;&#x7248;&#x672C;&#x8BBE;&#x5907;&#x4E0A;&#x7528;&#x53CD;&#x5C04;&#xFF0C;&#x8FD8;&#x662F;&#x6709;&#x70B9;&#x5BB9;&#x6613;&#x628A;&#x8F6F;&#x4EF6;&#x641E;&#x5361;&#x987F;&#x7684;&#x3002;</p><p>&#x6211;&#x53EA;&#x505A;&#x4E86; Java &#x7684;&#x53CD;&#x5C04;&#x7684;&#x6D4B;&#x8BD5;&#xFF0C;&#x4F46;&#x5BF9;&#x4E8E; Kotlin &#x6765;&#x8BF4;&#x9053;&#x7406;&#x662F;&#x4E00;&#x6837;&#x7684;&#xFF0C;&#x56E0;&#x4E3A; Kotlin &#x7684;&#x53CD;&#x5C04;&#x5B9E;&#x8D28;&#x4E0A;&#x4E5F;&#x662F;&#x57FA;&#x4E8E; Java &#x7684;&#x53CD;&#x5C04;&#x6765;&#x505A;&#x7684;&#x3002;&#x4EE5;&#x4E0A;&#x7684;&#x7ED3;&#x8BBA;&#xFF0C;&#x4E0D;&#x4EC5;&#x9002;&#x7528;&#x4E8E; Java&#xFF0C;&#x4E5F;&#x9002;&#x7528;&#x4E8E; Kotlin &#x7684;&#x53CD;&#x5C04;&#x3002;</p><p>&#x53CD;&#x5C04;&#x662F; Java &#x548C; Kotlin &#x4E0A;&#x975E;&#x5E38;&#x6709;&#x7528;&#x7684;&#x4E00;&#x5957;&#x673A;&#x5236;&#xFF0C;&#x5B83;&#x80FD;&#x7ED9;&#x6211;&#x4EEC;&#x5E26;&#x6765;&#x5F88;&#x5927;&#x7684;&#x5E2E;&#x52A9;&#x3002;&#x4F46;&#x662F;&#xFF0C;&#x5B83;&#x7684;&#x6027;&#x80FD;&#x9677;&#x9631;&#x4E5F;&#x8BA9;&#x6211;&#x4EEC;&#x7ECF;&#x5E38;&#x5BF9;&#x5B83;&#x6709;&#x6240;&#x5FCC;&#x60EE;&#xFF0C;&#x751A;&#x81F3;&#x4E0D;&#x6562;&#x8F7B;&#x6613;&#x4F7F;&#x7528;&#x5B83;&#x3002;&#x6B63;&#x662F;&#x56E0;&#x4E3A;&#x8FD9;&#x4E2A;&#x539F;&#x56E0;&#xFF0C;&#x6211;&#x505A;&#x4E86;&#x8FD9;&#x4E2A;&#x89C6;&#x9891;&#xFF0C;&#x5E0C;&#x671B;&#x80FD;&#x5E2E;&#x52A9;&#x5927;&#x5BB6;&#x5BF9;&#x4E8E;&#x53CD;&#x5C04;&#x7684;&#x6027;&#x80FD;&#x6709;&#x66F4;&#x6E05;&#x695A;&#x7684;&#x7406;&#x89E3;&#x548C;&#x8BA4;&#x8BC6;&#xFF0C;&#x80FD;&#x8BA9;&#x4F60;&#x5728;&#x5F00;&#x53D1;&#x91CC;&#x53EF;&#x4EE5;&#x66F4;&#x6E05;&#x695A;&#x53CD;&#x5C04;&#x4EE3;&#x7801;&#x7684;&#x6027;&#x80FD;&#x8868;&#x73B0;&#xFF0C;&#x4ECE;&#x800C;&#x66F4;&#x597D;&#x5730;&#x5224;&#x65AD;&#x80FD;&#x4E0D;&#x80FD;&#x3001;&#x8981;&#x4E0D;&#x8981;&#x7528;&#x53CD;&#x5C04;&#x3002;</p><p>&#x884C;&#xFF0C;&#x5C31;&#x8FD9;&#x4E48;&#x591A;&#xFF01;&#x5173;&#x6CE8;&#x6211;&#xFF0C;&#x4E86;&#x89E3;&#x66F4;&#x591A; Android &#x5F00;&#x53D1;&#x76F8;&#x5173;&#x7684;&#x77E5;&#x8BC6;&#x548C;&#x6280;&#x80FD;&#x3002;&#x6211;&#x662F;&#x6254;&#x7269;&#x7EBF;&#xFF0C;&#x6211;&#x4E0D;&#x548C;&#x4F60;&#x6BD4;&#x9AD8;&#x4F4E;&#xFF0C;&#x6211;&#x53EA;&#x52A9;&#x4F60;&#x6210;&#x957F;&#x3002;&#x6211;&#x4EEC;&#x4E0B;&#x671F;&#x89C1;&#xFF01;</p><figure class="kg-card kg-image-card"><img src="http://image.rengwuxian.com/2023/12/27/210647777b3c9.jpg" class="kg-image" alt="&#x3010;&#x6027;&#x80FD;&#x4F18;&#x5316;&#x3011;&#x771F;&#x6709;&#x90A3;&#x4E48;&#x6162;&#xFF1F;Java &#x548C; Kotlin &#x7684;&#x53CD;&#x5C04;" loading="lazy" width="900" height="500"></figure>]]></content:encoded></item><item><title><![CDATA[【泛型 Plus】Kotlin 的加强版类型推断：@BuilderInference]]></title><description><![CDATA[<h2 id="%E8%A7%86%E9%A2%91%E5%85%88%E8%A1%8C">&#x89C6;&#x9891;&#x5148;&#x884C;</h2><h3 id="%E5%93%94%E5%93%A9%E5%93%94%E5%93%A9">&#x54D4;&#x54E9;&#x54D4;&#x54E9;</h3><figure class="kg-card kg-embed-card"><iframe src="//player.bilibili.com/player.html?isOutside=true&amp;aid=113428274349755&amp;bvid=BV1XBDbYTEFG&amp;cid=26622691439&amp;p=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true" data-tool="mdnice&#x7F16;&#x8F91;&#x5668;"></iframe></figure><h3 id="youtube">Youtube</h3><figure class="kg-card kg-embed-card"><iframe width="560" height="315" src="https://www.youtube.com/embed/RBdJ3CtNQJQ?si=UTXeO3E9ArOi2zep" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen data-tool="mdnice&#x7F16;&#x8F91;&#x5668;"></iframe></figure><blockquote>&#x4E0B;&#x9762;&#x662F;&#x89C6;&#x9891;&#x5185;&#x5BB9;&#x7684;&#x811A;&#x672C;&#x6587;&#x6848;&#x539F;&#x7A3F;&#x5206;&#x4EAB;&#x3002;</blockquote><figure class="kg-card kg-image-card"><img src="http://image.rengwuxian.com/2023/05/08/fe402c850832a.jpg" class="kg-image" alt loading="lazy" width="900" height="500"></figure><h2 id="%E5%B0%8F%E5%89%A7%E5%9C%BA">&#x5C0F;&#x5267;&#x573A;</h2><p>&#x9762;&#x8BD5;&#x5B98;&#xFF1A;&#x300C;&#x65E2;&#x7136;&#x534F;&#x7A0B;&#x548C;&#x6CDB;&#x578B;&#x4F60;&#x90FD;&#x719F;&#x6089;&#xFF0C;flow() &#x51FD;&#x6570;&#x662F;</p>]]></description><link>https://rengwuxian.com/fan-xing-plus-kotlin-de-jia-qiang-ban-lei-xing-tui-duan-builderinference/</link><guid isPermaLink="false">673593f9ab2cfb3d008dbe0e</guid><category><![CDATA[Kotlin]]></category><category><![CDATA[Kotlin 泛型]]></category><category><![CDATA[Kotlin 协程]]></category><dc:creator><![CDATA[扔物线]]></dc:creator><pubDate>Thu, 14 Nov 2024 08:21:06 GMT</pubDate><media:content url="https://rengwuxian.com/content/images/2024/11/24.02-BuilderReference---.jpg" medium="image"/><content:encoded><![CDATA[<h2 id="%E8%A7%86%E9%A2%91%E5%85%88%E8%A1%8C">&#x89C6;&#x9891;&#x5148;&#x884C;</h2><h3 id="%E5%93%94%E5%93%A9%E5%93%94%E5%93%A9">&#x54D4;&#x54E9;&#x54D4;&#x54E9;</h3><figure class="kg-card kg-embed-card"><iframe src="//player.bilibili.com/player.html?isOutside=true&amp;aid=113428274349755&amp;bvid=BV1XBDbYTEFG&amp;cid=26622691439&amp;p=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true" data-tool="mdnice&#x7F16;&#x8F91;&#x5668;"></iframe></figure><h3 id="youtube">Youtube</h3><figure class="kg-card kg-embed-card"><iframe width="560" height="315" src="https://www.youtube.com/embed/RBdJ3CtNQJQ?si=UTXeO3E9ArOi2zep" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" referrerpolicy="strict-origin-when-cross-origin" allowfullscreen data-tool="mdnice&#x7F16;&#x8F91;&#x5668;"></iframe></figure><blockquote>&#x4E0B;&#x9762;&#x662F;&#x89C6;&#x9891;&#x5185;&#x5BB9;&#x7684;&#x811A;&#x672C;&#x6587;&#x6848;&#x539F;&#x7A3F;&#x5206;&#x4EAB;&#x3002;</blockquote><figure class="kg-card kg-image-card"><img src="http://image.rengwuxian.com/2023/05/08/fe402c850832a.jpg" class="kg-image" alt="&#x3010;&#x6CDB;&#x578B; Plus&#x3011;Kotlin &#x7684;&#x52A0;&#x5F3A;&#x7248;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;@BuilderInference" loading="lazy" width="900" height="500"></figure><h2 id="%E5%B0%8F%E5%89%A7%E5%9C%BA">&#x5C0F;&#x5267;&#x573A;</h2><img src="https://rengwuxian.com/content/images/2024/11/24.02-BuilderReference---.jpg" alt="&#x3010;&#x6CDB;&#x578B; Plus&#x3011;Kotlin &#x7684;&#x52A0;&#x5F3A;&#x7248;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;@BuilderInference"><p>&#x9762;&#x8BD5;&#x5B98;&#xFF1A;&#x300C;&#x65E2;&#x7136;&#x534F;&#x7A0B;&#x548C;&#x6CDB;&#x578B;&#x4F60;&#x90FD;&#x719F;&#x6089;&#xFF0C;flow() &#x51FD;&#x6570;&#x662F;&#x600E;&#x4E48;&#x5B9E;&#x73B0;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#x7684;&#x6709;&#x4E86;&#x89E3;&#x8FC7;&#x5417;&#xFF1F;&#x300D;</p><p>&#x6C42;&#x804C;&#x8005;&#xFF1A;&#x300C;&#x55EF;&#x2026;&#x2026;&#x300D;</p><p>&#x6C42;&#x804C;&#x8005;&#xFF1A;&#x300C;&#x55EF;&#x2026;&#x2026;&#x5728;Kotlin&#x534F;&#x7A0B;&#x4E2D;&#xFF0C;flow &#x662F;&#x4E00;&#x79CD;&#x6784;&#x5EFA;&#x5668;&#xFF0C;&#x7528;&#x4E8E;&#x521B;&#x5EFA; Flow &#x7C7B;&#x578B;&#x7684;&#x5B9E;&#x4F8B;&#x3002;Flow &#x662F; Kotlin &#x4E2D;&#x5904;&#x7406;&#x5F02;&#x6B65;&#x6570;&#x636E;&#x6D41;&#x7684;&#x2014;&#x2014;&#x300D;</p><p>&#x9762;&#x8BD5;&#x5B98;&#xFF1A;&#x300C;&#x4F60;&#x5728; ChatGPT &#x5417;&#xFF1F;&#x300D;</p><p>&#x6C42;&#x804C;&#x8005;&#xFF1A;&#x300C;&#x6CA1;&#x6709;&#x554A;&#x2014;&#x2014;&#x4EC0;&#x4E48;&#x662F; ChatGPT&#xFF1F;&#x300D;</p><p>&#x9762;&#x8BD5;&#x5B98;&#x5FFD;&#x7136;&#x4ECE;&#x89C6;&#x9891;&#x804A;&#x5929;&#x754C;&#x9762;&#x91CC;&#x628A;&#x5934;&#x4F38;&#x51FA;&#x5C4F;&#x5E55;&#xFF0C;&#x6C42;&#x804C;&#x8005;&#x5413;&#x4E00;&#x5927;&#x8DF3;&#xFF0C;&#x6276;&#x8D77;&#x6905;&#x5B50;&#x5411;&#x540E;&#x9000;&#x4E00;&#x4E0B;&#xFF1A;&#x300C;&#x8BF6;&#xFF01;&#x300D;&#x9762;&#x8BD5;&#x5B98;&#x4F38;&#x51FA;&#x6765;&#x4EE5;&#x540E;&#xFF0C;&#x56DE;&#x5934;&#x770B;&#x5C4F;&#x5E55;&#x91CC;&#x7684; ChatGPT&#x3002;&#x6C42;&#x804C;&#x8005;&#x5728;&#x65C1;&#x8FB9;&#x5B89;&#x9759;&#x5730;&#x3001;&#x4E0D;&#x77E5;&#x6240;&#x63AA;&#x5730;&#x9759;&#x9759;&#x770B;&#x7740;&#x9762;&#x8BD5;&#x5B98;&#x3002;&#x770B;&#x4E86;&#x4E00;&#x4F1A;&#x513F;&#xFF0C;&#x9762;&#x8BD5;&#x5B98;&#x82E5;&#x6709;&#x6240;&#x601D;&#x5730;&#x3001;&#x4E0D;&#x7F6E;&#x53EF;&#x5426;&#x5730;&#xFF1A;&#x300C;Huh&#x3002;&#x300D;</p><h2 id="%E5%BC%80%E5%9C%BA">&#x5F00;&#x573A;</h2><p>&#x5927;&#x5BB6;&#x597D;&#xFF0C;&#x6211;&#x662F;&#x6254;&#x7269;&#x7EBF;&#x6731;&#x51EF;&#x3002;</p><p>&#x6CDB;&#x578B;&#x662F; Java &#x91CC;&#x4E00;&#x4E2A;&#x5F88;&#x65B9;&#x4FBF;&#x7684;&#x7279;&#x6027;&#xFF0C;&#x5B83;&#x7684;&#x4F18;&#x52BF;&#x5F88;&#x591A;&#xFF0C;&#x5176;&#x4E2D;&#x4E4B;&#x4E00;&#x5C31;&#x662F;&#x63D0;&#x9AD8;&#x4E86;&#x4EE3;&#x7801;&#x7684;&#x590D;&#x7528;&#x80FD;&#x529B;&#xFF0C;&#x8BA9;&#x6211;&#x4EEC;&#x53EA;&#x7528;&#x5199;&#x4E00;&#x4E2A;&#x7C7B;&#x6216;&#x8005;&#x63A5;&#x53E3;&#x6216;&#x8005;&#x65B9;&#x6CD5;&#xFF0C;&#x5C31;&#x80FD;&#x5728;&#x8C03;&#x7528;&#x65F6;&#x53BB;&#x5E94;&#x7528;&#x5230;&#x4E0D;&#x540C;&#x7684;&#x7C7B;&#x578B;&#xFF1A;</p><pre><code>List&lt;String&gt; list1 = new ArrayList&lt;&gt;(); // String
List&lt;Integer&gt; list2 = new ArrayList&lt;&gt;(); // Integer
List&lt;Service&gt; list3 = new ArrayList&lt;&gt;(); // Service
TextView textView = findViewById(R.id.textView); // TextView
ImageView imageView = findViewById(R.id.imageView); // ImageView</code></pre><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/11/1---.webp" class="kg-image" alt="&#x3010;&#x6CDB;&#x578B; Plus&#x3011;Kotlin &#x7684;&#x52A0;&#x5F3A;&#x7248;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;@BuilderInference" loading="lazy" width="676" height="154"></figure><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/11/2-1.webp" class="kg-image" alt="&#x3010;&#x6CDB;&#x578B; Plus&#x3011;Kotlin &#x7684;&#x52A0;&#x5F3A;&#x7248;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;@BuilderInference" loading="lazy" width="862" height="122"></figure><p>&#x8FD9;&#x79CD;&#x52A8;&#x6001;&#x5E94;&#x7528;&#x672C;&#x6765;&#x5C31;&#x5F88;&#x65B9;&#x4FBF;&#x4E86;&#xFF0C;&#x6CDB;&#x578B;&#x8FD8;&#x5141;&#x8BB8;&#x6211;&#x4EEC;&#x5728;&#x8C03;&#x7528;&#x65F6;&#x8FDE;&#x7C7B;&#x578B;&#x90FD;&#x4E0D;&#x7528;&#x6307;&#x5B9A;&#xFF0C;&#x800C;&#x662F;&#x8BA9;&#x4EE3;&#x7801;&#x81EA;&#x52A8;&#x63A8;&#x65AD;&#xFF1A;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/11/3-2.webp" class="kg-image" alt="&#x3010;&#x6CDB;&#x578B; Plus&#x3011;Kotlin &#x7684;&#x52A0;&#x5F3A;&#x7248;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;@BuilderInference" loading="lazy" width="676" height="154"></figure><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/11/4-1.webp" class="kg-image" alt="&#x3010;&#x6CDB;&#x578B; Plus&#x3011;Kotlin &#x7684;&#x52A0;&#x5F3A;&#x7248;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;@BuilderInference" loading="lazy" width="862" height="122"></figure><p>&#x800C; Kotlin &#x5728;&#x6CBF;&#x88AD;&#x4E86; Java &#x6CDB;&#x578B;&#x7684;&#x8FD9;&#x4E9B;&#x529F;&#x80FD;&#x7684;&#x540C;&#x65F6;&#xFF0C;&#x8FD8;&#x8FDB;&#x884C;&#x4E86;&#x591A;&#x9879;&#x8FDB;&#x5316;&#xFF0C;&#x5176;&#x4E2D;&#x5C31;&#x5305;&#x62EC;&#x54B1;&#x8FD9;&#x671F;&#x8981;&#x804A;&#x7684;&#x8BDD;&#x9898;&#xFF1A;&#x5B83;&#x652F;&#x6301;&#x4E00;&#x79CD;&#x66F4;&#x5F3A;&#x3001;&#x66F4;&#x6DF1;&#x7684;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#x3002;</p><h2 id="flow-%E7%9A%84%E7%B1%BB%E5%9E%8B%E6%8E%A8%E6%96%AD">flow() &#x7684;&#x7C7B;&#x578B;&#x63A8;&#x65AD;</h2><p>Java &#x7684;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF0C;&#x662F;&#x901A;&#x8FC7;&#x4E0A;&#x4E0B;&#x6587;&#x4FE1;&#x606F;&#x6765;&#x63A8;&#x65AD;&#x7C7B;&#x578B;&#x7684;&#x3002;&#x6BD4;&#x5982;&#x901A;&#x8FC7;&#x65B9;&#x6CD5;&#x53C2;&#x6570;&#x7684;&#x7C7B;&#x578B;&#x6765;&#x63A8;&#x65AD;&#xFF0C;&#x6216;&#x8005;&#x901A;&#x8FC7;&#x8D4B;&#x503C;&#x7684;&#x76EE;&#x6807;&#x53D8;&#x91CF;&#x7684;&#x7C7B;&#x578B;&#x6765;&#x63A8;&#x65AD;&#xFF1A;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/11/5-1.webp" class="kg-image" alt="&#x3010;&#x6CDB;&#x578B; Plus&#x3011;Kotlin &#x7684;&#x52A0;&#x5F3A;&#x7248;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;@BuilderInference" loading="lazy" width="842" height="158"></figure><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/11/6-1.webp" class="kg-image" alt="&#x3010;&#x6CDB;&#x578B; Plus&#x3011;Kotlin &#x7684;&#x52A0;&#x5F3A;&#x7248;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;@BuilderInference" loading="lazy" width="818" height="64"></figure><p></p><p>Kotlin &#x4E5F;&#x53EF;&#x4EE5;&#x505A;&#x8FD9;&#x7C7B;&#x63A8;&#x65AD;&#xFF1A;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/11/7-1.webp" class="kg-image" alt="&#x3010;&#x6CDB;&#x578B; Plus&#x3011;Kotlin &#x7684;&#x52A0;&#x5F3A;&#x7248;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;@BuilderInference" loading="lazy" width="740" height="208"></figure><p>&#x53E6;&#x5916;&#xFF0C;Kotlin &#x8FD8;&#x80FD;&#x505A;&#x4E00;&#x79CD;&#x52A0;&#x5F3A;&#x7684;&#x63A8;&#x65AD;&#xFF1A;&#x5B83;&#x4E0D;&#x4EC5;&#x80FD;&#x770B;&#x51FD;&#x6570;&#x7684;&#x53C2;&#x6570;&#x7C7B;&#x578B;&#xFF0C;&#x8FD8;&#x80FD;&#x94BB;&#x8FDB;&#x53C2;&#x6570;&#x91CC;&#xFF0C;&#x901A;&#x8FC7;&#x53C2;&#x6570;&#x5185;&#x90E8;&#x7684;&#x5185;&#x5BB9;&#x6765;&#x505A;&#x66F4;&#x6DF1;&#x7684;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#x3002;&#x4EC0;&#x4E48;&#x53EB;&#x53C2;&#x6570;&#x5185;&#x90E8;&#x5462;&#xFF1F;&#x5C31;&#x662F;&#x5F53;&#x4F60;&#x7684;&#x53C2;&#x6570;&#x662F;&#x51FD;&#x6570;&#x7C7B;&#x578B;&#x7684;&#x65F6;&#x5019;&#xFF1A;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/11/8-1.webp" class="kg-image" alt="&#x3010;&#x6CDB;&#x578B; Plus&#x3011;Kotlin &#x7684;&#x52A0;&#x5F3A;&#x7248;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;@BuilderInference" loading="lazy" width="194" height="98"></figure><p>Kotlin &#x6709;&#x80FD;&#x529B;&#x94BB;&#x5230;&#x5B83;&#x7684;&#x5927;&#x62EC;&#x53F7;&#x7684;&#x91CC;&#x9762;&#xFF0C;&#x53BB;&#x4E00;&#x884C;&#x884C;&#x5206;&#x6790;&#x91CC;&#x9762;&#x7684;&#x4EE3;&#x7801;&#xFF0C;&#x6765;&#x8FDB;&#x884C;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#x3002; &#x6BD4;&#x5982;&#x6211;&#x5982;&#x679C;&#x53EA;&#x8C03;&#x7528; flow {}&#xFF0C;&#x5B83;&#x4F1A;&#x62A5;&#x9519;&#xFF0C;&#x8FD9;&#x662F;&#x56E0;&#x4E3A; flow() &#x662F;&#x4E2A;&#x6CDB;&#x578B;&#x51FD;&#x6570;&#xFF1A;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/11/9.webp" class="kg-image" alt="&#x3010;&#x6CDB;&#x578B; Plus&#x3011;Kotlin &#x7684;&#x52A0;&#x5F3A;&#x7248;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;@BuilderInference" loading="lazy" width="478" height="80"></figure><p>&#x800C;&#x6211;&#x65E2;&#x6CA1;&#x6709;&#x6307;&#x660E;&#x7C7B;&#x578B;&#x53C2;&#x6570;&#x7684;&#x7C7B;&#x578B;&#xFF0C;&#x4E5F;&#x6CA1;&#x6709;&#x7ED9;&#x51FA;&#x8DB3;&#x591F;&#x7684;&#x4E0A;&#x4E0B;&#x6587;&#x8BA9;&#x5B83;&#x53BB;&#x505A;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#x3002; &#x5982;&#x679C;&#x6211;&#x76F4;&#x63A5;&#x5199;&#x660E;&#xFF1A;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/11/10.webp" class="kg-image" alt="&#x3010;&#x6CDB;&#x578B; Plus&#x3011;Kotlin &#x7684;&#x52A0;&#x5F3A;&#x7248;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;@BuilderInference" loading="lazy" width="478" height="82"></figure><p>&#x5B83;&#x5C31;&#x4E0D;&#x62A5;&#x9519;&#x4E86;&#x3002; &#x6216;&#x8005;&#xFF0C;&#x6211;&#x4E5F;&#x53EF;&#x4EE5;&#x5728;&#x5927;&#x62EC;&#x53F7;&#x91CC;&#x751F;&#x4EA7;&#x4E00;&#x4E2A; Flow &#x7684;&#x5143;&#x7D20;&#xFF1A;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/11/11.webp" class="kg-image" alt="&#x3010;&#x6CDB;&#x578B; Plus&#x3011;Kotlin &#x7684;&#x52A0;&#x5F3A;&#x7248;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;@BuilderInference" loading="lazy" width="736" height="100"></figure><p>Kotlin &#x4E5F;&#x53EF;&#x4EE5;&#x4ECE;&#x4E2D;&#x63A8;&#x65AD;&#x51FA;&#x7C7B;&#x578B;&#xFF0C;&#x6240;&#x4EE5;&#x4E5F;&#x4E0D;&#x4F1A;&#x62A5;&#x9519;&#x3002; &#x800C;&#x8FD9;&#x79CD;&#x63A8;&#x65AD;&#xFF0C;&#x662F; Java &#x6240;&#x6CA1;&#x6709;&#x7684;&#x3002;</p><h2 id="builderinference">@BuilderInference</h2><p>&#x5B83;&#x662F;&#x600E;&#x4E48;&#x63A8;&#x65AD;&#x7684;&#x5462;&#xFF1F;</p><p> &#x5B83;&#x5E76;&#x4E0D;&#x662F;&#x5BF9;&#x6BCF;&#x4E00;&#x884C;&#x4EE3;&#x7801;&#x90FD;&#x68C0;&#x67E5;&#xFF0C;&#x800C;&#x662F;&#x53EA;&#x67E5;&#x770B;&#x5BF9; this &#x7684;&#x6BCF;&#x4E00;&#x6B21;&#x51FD;&#x6570;&#x8C03;&#x7528;&#xFF0C;&#x901A;&#x8FC7;&#x8FD9;&#x4E9B;&#x8C03;&#x7528;&#x6765;&#x8FDB;&#x884C;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF0C;&#x7136;&#x540E;&#x628A;&#x63A8;&#x65AD;&#x51FA;&#x7684;&#x7C7B;&#x578B;&#x6C47;&#x603B;&#x4E4B;&#x540E;&#x5F97;&#x5230;&#x5916;&#x90E8;&#x51FD;&#x6570;&#x7684;&#x63A8;&#x65AD;&#x7C7B;&#x578B;&#x3002;</p><p> &#x6211;&#x8FD9;&#x4E48;&#x8BF4;&#x53EF;&#x80FD;&#x6BD4;&#x8F83;&#x7ED5;&#xFF0C;&#x6211;&#x6765;&#x4E3E;&#x5B9E;&#x9645;&#x7684;&#x4F8B;&#x5B50;&#x3002;&#x5C31;&#x8FD8;&#x4EE5; flow() &#x51FD;&#x6570;&#x4E3A;&#x4F8B;&#xFF0C;&#x5B83;&#x8FD9;&#x4E2A;&#x5927;&#x62EC;&#x53F7;&#xFF0C;&#x5B9E;&#x9645;&#x4E0A;&#x662F;&#x4E00;&#x4E2A;&#x51FD;&#x6570;&#x7C7B;&#x578B;&#x7684;&#x53C2;&#x6570;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x8FD9;&#x4E2A;&#xFF1A;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/11/12.webp" class="kg-image" alt="&#x3010;&#x6CDB;&#x578B; Plus&#x3011;Kotlin &#x7684;&#x52A0;&#x5F3A;&#x7248;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;@BuilderInference" loading="lazy" width="1344" height="96"></figure><p>&#x8FD9;&#x4E2A;&#x51FD;&#x6570;&#x7C7B;&#x578B;&#x7684;&#x53C2;&#x6570;&#xFF0C;&#x5B83;&#x7684;&#x53C2;&#x6570;&#x7C7B;&#x578B;&#x3001;&#x8FD4;&#x56DE;&#x503C;&#x7C7B;&#x578B;&#x3001;&#x662F;&#x4E0D;&#x662F;&#x6302;&#x8D77;&#x51FD;&#x6570;&#xFF0C;&#x8FD9;&#x4E9B;&#x5BF9;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#x90FD;&#x4E0D;&#x91CD;&#x8981;&#xFF1A;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/11/13.webp" class="kg-image" alt="&#x3010;&#x6CDB;&#x578B; Plus&#x3011;Kotlin &#x7684;&#x52A0;&#x5F3A;&#x7248;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;@BuilderInference" loading="lazy" width="1338" height="82"></figure><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/11/14.webp" class="kg-image" alt="&#x3010;&#x6CDB;&#x578B; Plus&#x3011;Kotlin &#x7684;&#x52A0;&#x5F3A;&#x7248;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;@BuilderInference" loading="lazy" width="1338" height="82"></figure><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/11/15.webp" class="kg-image" alt="&#x3010;&#x6CDB;&#x578B; Plus&#x3011;Kotlin &#x7684;&#x52A0;&#x5F3A;&#x7248;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;@BuilderInference" loading="lazy" width="1338" height="82"></figure><p>&#x5173;&#x952E;&#x5728;&#x4E8E;&#xFF0C;&#x5B83;&#x8BBE;&#x7F6E;&#x4E86;&#x4E00;&#x4E2A; receiver &#x7C7B;&#x578B;&#xFF1A;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/11/16.webp" class="kg-image" alt="&#x3010;&#x6CDB;&#x578B; Plus&#x3011;Kotlin &#x7684;&#x52A0;&#x5F3A;&#x7248;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;@BuilderInference" loading="lazy" width="1338" height="82"></figure><p>&#x8FD9;&#x4E48;&#x5199;&#xFF0C;&#x53EF;&#x4EE5;&#x8BA9;&#x5927;&#x62EC;&#x53F7;&#x91CC;&#x6709;&#x4E00;&#x4E2A;&#x8FD9;&#x4E2A;&#x7C7B;&#x578B;&#x7684; this&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x6240;&#x8C13;&#x7684; implicit receiver&#xFF0C;&#x9690;&#x5F0F;&#x7684; receiver&#x2014;&#x2014;&#x5173;&#x4E8E;&#x300C;&#x9690;&#x5F0F;&#x7684; receiver&#x300D;&#x8FD9;&#x4E2A;&#x6982;&#x5FF5;&#xFF0C;&#x6211;&#x4E0A;&#x4E0A;&#x6761;&#x89C6;&#x9891;&#x4E13;&#x95E8;&#x8BB2;&#x8FC7;&#xFF0C;&#x5982;&#x679C;&#x4F60;&#x6CA1;&#x4E86;&#x89E3;&#x8FC7;&#x53EF;&#x4EE5;&#x53BB;&#x770B;&#x4E00;&#x4E0B;&#x2014;&#x2014;&#x90A3;&#x4E48;&#x5927;&#x62EC;&#x53F7;&#x91CC;&#x6709;&#x4E86;&#x8FD9;&#x4E2A; FlowCollector &#x7C7B;&#x578B;&#x7684; this&#xFF0C;&#x6211;&#x5C31;&#x53EF;&#x4EE5;&#x5728;&#x91CC;&#x9762;&#x8C03;&#x7528;&#x5B83;&#x7684;&#x51FD;&#x6570;&#xFF0C;&#x6BD4;&#x5982;&#x6211;&#x8FD9;&#x4E2A; emit()&#xFF0C;&#x751F;&#x4EA7; Flow &#x5143;&#x7D20;&#x7684;&#x51FD;&#x6570;&#xFF0C;&#x5176;&#x5B9E;&#x5C31;&#x662F;&#x5B83;&#x4E0B;&#x9762;&#x7684;&#xFF1A;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/11/17.webp" class="kg-image" alt="&#x3010;&#x6CDB;&#x578B; Plus&#x3011;Kotlin &#x7684;&#x52A0;&#x5F3A;&#x7248;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;@BuilderInference" loading="lazy" width="736" height="100"></figure><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/11/18.webp" class="kg-image" alt="&#x3010;&#x6CDB;&#x578B; Plus&#x3011;Kotlin &#x7684;&#x52A0;&#x5F3A;&#x7248;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;@BuilderInference" loading="lazy" width="762" height="318"></figure><p>&#x7136;&#x540E;&#x5462;&#xFF0C;&#x8FD9;&#x4E2A; FlowCollector &#x662F;&#x4E00;&#x4E2A;&#x6CDB;&#x578B;&#x7C7B;&#x578B;&#xFF1A;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/11/19.webp" class="kg-image" alt="&#x3010;&#x6CDB;&#x578B; Plus&#x3011;Kotlin &#x7684;&#x52A0;&#x5F3A;&#x7248;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;@BuilderInference" loading="lazy" width="1332" height="98"></figure><p>&#x800C; emit() &#x7684;&#x53C2;&#x6570;&#x5C31;&#x662F;&#x5B83;&#x7684;&#x7C7B;&#x578B;&#x53C2;&#x6570;&#x7684;&#x7C7B;&#x578B;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x8FD9;&#x4E2A; T&#xFF1A;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/11/20.webp" class="kg-image" alt="&#x3010;&#x6CDB;&#x578B; Plus&#x3011;Kotlin &#x7684;&#x52A0;&#x5F3A;&#x7248;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;@BuilderInference" loading="lazy" width="746" height="338"></figure><p>&#x90A3;&#x4E48;&#xFF0C;Kotlin &#x5C31;&#x4F1A;&#x5728;&#x5B9E;&#x9645;&#x7684;&#x8C03;&#x7528;&#x4E2D;&#x5229;&#x7528; emit() &#x7684;&#x4F20;&#x5165;&#x53C2;&#x6570;&#x6765;&#x4F5C;&#x4E3A;&#x63A8;&#x65AD;&#x51FA;&#x7684;&#x5B9E;&#x4F8B;&#x5316;&#x7C7B;&#x578B;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x5916;&#x9762;&#x7684; FlowCollector &#x7684; T &#x7684;&#x7C7B;&#x578B;&#x3002;&#x6BD4;&#x5982;&#x6211;&#x8FD9;&#x91CC;&#x586B;&#x5165;&#x7684;&#x662F;&#x4E2A;&#x5B57;&#x7B26;&#x4E32;&#xFF1A;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/11/21.webp" class="kg-image" alt="&#x3010;&#x6CDB;&#x578B; Plus&#x3011;Kotlin &#x7684;&#x52A0;&#x5F3A;&#x7248;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;@BuilderInference" loading="lazy" width="572" height="72"></figure><p>&#x90A3;&#x4E48; Kotlin &#x5C31;&#x4F1A;&#x63A8;&#x65AD;&#x51FA;&#x8FD9;&#x4E2A; T &#x7684;&#x7C7B;&#x578B;&#x662F; String&#xFF1A;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/11/22.webp" class="kg-image" alt="&#x3010;&#x6CDB;&#x578B; Plus&#x3011;Kotlin &#x7684;&#x52A0;&#x5F3A;&#x7248;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;@BuilderInference" loading="lazy" width="1332" height="98"></figure><p>&#x8FD9;&#x79CD;&#x63A8;&#x65AD;&#x5176;&#x5B9E;&#x6BD4;&#x8F83;&#x7279;&#x6B8A;&#xFF1A;&#x5178;&#x578B;&#x7684;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF0C;&#x662F;&#x7528;&#x5BF9;&#x8C61;&#x7684;&#x7C7B;&#x578B;&#x6765;&#x5F97;&#x51FA;&#x51FD;&#x6570;&#x7684;&#x53C2;&#x6570;&#x548C;&#x8FD4;&#x56DE;&#x503C;&#x7C7B;&#x578B;&#xFF0C;&#x6BD4;&#x5982;&#x7528; FlowCollector &#x5BF9;&#x8C61;&#x7684;&#x5B9E;&#x4F8B;&#x5316;&#x7C7B;&#x578B;&#x6765;&#x63A8;&#x65AD;&#x51FA; emit() &#x7684;&#x53C2;&#x6570;&#x7C7B;&#x578B;&#xFF1B;&#x800C;&#x8FD9;&#x4E2A;&#xFF0C;&#x5B83;&#x662F;&#x53CD;&#x8FC7;&#x6765;&#x7684;&#xFF0C;&#x5B83;&#x662F;&#x7531;&#x51FD;&#x6570;&#x8C03;&#x7528;&#x6765;&#x63A8;&#x65AD;&#x51FA;&#x5BF9;&#x8C61;&#x7684;&#x5B9E;&#x4F8B;&#x5316;&#x7C7B;&#x578B;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x7531; emit() &#x7684;&#x53C2;&#x6570;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#x51FA; FlowCollector &#x7684; T &#x7684;&#x7C7B;&#x578B;&#x3002; &#x8FD9;&#x4E2A; FlowCollector &#x7684; T&#xFF0C;&#x5176;&#x5B9E;&#x662F;&#x7528;&#x7684; flow() &#x51FD;&#x6570;&#x7684;&#x7C7B;&#x578B;&#x53C2;&#x6570;&#x3002;&#x6240;&#x4EE5;&#x63A8;&#x65AD;&#x51FA;&#x4E86;&#x5B83;&#x7684; T&#xFF0C;&#x4E5F;&#x5C31;&#x7B49;&#x4E8E;&#x63A8;&#x65AD;&#x51FA;&#x4E86; flow() &#x51FD;&#x6570;&#x7684; T&#x3002;&#x4E5F;&#x5C31;&#x662F;&#x5BF9;&#x54B1;&#x8FD9;&#x4E2A;&#x4F8B;&#x5B50;&#x6765;&#x8BF4;&#xFF0C;flow() &#x51FD;&#x6570;&#x7684;&#x5B9E;&#x4F8B;&#x5316;&#x7C7B;&#x578B;&#x5C31;&#x662F; String&#xFF1A;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/11/23.webp" class="kg-image" alt="&#x3010;&#x6CDB;&#x578B; Plus&#x3011;Kotlin &#x7684;&#x52A0;&#x5F3A;&#x7248;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;@BuilderInference" loading="lazy" width="1346" height="78"></figure><p>&#x6574;&#x4E2A;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#x7684;&#x903B;&#x8F91;&#xFF0C;&#x5C31;&#x662F;&#x8FD9;&#x6837;&#x7684;&#x3002;&#x5B83;&#x4E0D;&#x662F;&#x76F4;&#x63A5;&#x770B;&#x51FD;&#x6570;&#x8C03;&#x7528;&#x65F6;&#x7684;&#x4F20;&#x5165;&#x53C2;&#x6570;&#x7684;&#x7C7B;&#x578B;&#xFF0C;&#x800C;&#x662F;&#x8981;&#x6C42;&#x53C2;&#x6570;&#x5FC5;&#x987B;&#x662F;&#x51FD;&#x6570;&#x7C7B;&#x578B;&#x7684;&#xFF0C;&#x7136;&#x540E;&#x53BB;&#x770B;&#x8FD9;&#x4E2A;&#x51FD;&#x6570;&#x7C7B;&#x578B;&#x7684;&#x53C2;&#x6570;&#x7684;&#x5185;&#x90E8;&#x4EE3;&#x7801;&#xFF0C;&#x53BB;&#x8FDB;&#x884C;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/11/24.webp" class="kg-image" alt="&#x3010;&#x6CDB;&#x578B; Plus&#x3011;Kotlin &#x7684;&#x52A0;&#x5F3A;&#x7248;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;@BuilderInference" loading="lazy" width="708" height="82"></figure><p>&#x53E6;&#x5916;&#xFF0C;Kotlin &#x8FD8;&#x8981;&#x6C42;&#x6211;&#x4EEC;&#x5FC5;&#x987B;&#x7ED9;&#x8FD9;&#x4E2A;&#x53C2;&#x6570;&#x8BBE;&#x7F6E;&#x4E00;&#x4E2A; receiver &#x7C7B;&#x578B;&#xFF1A;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/11/25.webp" class="kg-image" alt="&#x3010;&#x6CDB;&#x578B; Plus&#x3011;Kotlin &#x7684;&#x52A0;&#x5F3A;&#x7248;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;@BuilderInference" loading="lazy" width="694" height="82"></figure><p>&#x5E76;&#x4E14;&#xFF0C;&#x8FD9;&#x4E2A; receiver &#x8FD8;&#x9700;&#x8981;&#x662F;&#x6CDB;&#x578B;&#x7C7B;&#x578B;&#x7684;&#xFF0C;&#x540C;&#x65F6;&#x6211;&#x4EEC;&#x8FD8;&#x8981;&#x7528;&#x51FD;&#x6570;&#x7684;&#x7C7B;&#x578B;&#x53C2;&#x6570;&#x6765;&#x4F5C;&#x4E3A;&#x5B83;&#x7684;&#x5B9E;&#x4F8B;&#x5316;&#x7C7B;&#x578B;&#x2014;&#x2014;&#x6216;&#x8005;&#x76F4;&#x767D;&#x5730;&#x8BF4;&#xFF0C;&#x5C31;&#x662F;&#x8981;&#x628A;&#x8FD9;&#x4E2A; T &#x5199;&#x5728;&#x8FD9;&#x91CC;&#xFF1A;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/11/26.webp" class="kg-image" alt="&#x3010;&#x6CDB;&#x578B; Plus&#x3011;Kotlin &#x7684;&#x52A0;&#x5F3A;&#x7248;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;@BuilderInference" loading="lazy" width="1330" height="88"></figure><p>&#x8FD9;&#x6837;&#xFF0C;&#x6574;&#x4E2A;&#x94FE;&#x6761;&#x5C31;&#x5168;&#x90FD;&#x63A5;&#x4E0A;&#x4E86;&#xFF0C;&#x4ECE;&#x6280;&#x672F;&#x7684;&#x89D2;&#x5EA6;&#xFF0C;&#x6211;&#x4EEC;&#x5C31;&#x53EF;&#x4EE5;&#x8BA9; Kotlin &#x901A;&#x8FC7;&#x5728;&#x5927;&#x62EC;&#x53F7;&#x91CC;&#x5BF9; this &#x7684;&#x8C03;&#x7528;&#x6765;&#x63A8;&#x65AD;&#x7C7B;&#x578B;&#x4E86;&#x3002; &#x800C;&#x5728;&#x5B9E;&#x64CD;&#x7684;&#x89D2;&#x5EA6;&#xFF0C;Kotlin &#x8FD8;&#x6709;&#x4E00;&#x4E2A;&#x8BED;&#x6CD5;&#x4E0A;&#x7684;&#x989D;&#x5916;&#x8981;&#x6C42;&#xFF1A;&#x6211;&#x4EEC;&#x8FD8;&#x8981;&#x7ED9;&#x53C2;&#x6570;&#x52A0;&#x4E0A;&#x4E00;&#x4E2A;&#x53EB; BuilderInference &#x7684;&#x6CE8;&#x89E3;&#xFF1A;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/11/27.webp" class="kg-image" alt="&#x3010;&#x6CDB;&#x578B; Plus&#x3011;Kotlin &#x7684;&#x52A0;&#x5F3A;&#x7248;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;@BuilderInference" loading="lazy" width="982" height="60"></figure><p>&#x56E0;&#x4E3A;&#x8FD9;&#x79CD;&#x63A8;&#x65AD;&#x9ED8;&#x8BA4;&#x662F;&#x4E0D;&#x5F00;&#x542F;&#x7684;&#xFF0C;&#x6211;&#x4EEC;&#x9700;&#x8981;&#x52A0;&#x4E0A;&#x8FD9;&#x4E2A; @BuilderInference &#x6765;&#x624B;&#x52A8;&#x5F00;&#x542F;&#x5B83;&#x3002;&#x4E3A;&#x4EC0;&#x4E48;&#x8FD9;&#x4E48;&#x8BBE;&#x8BA1;&#xFF1F;&#x4E00;&#x822C;&#x662F;&#x51FA;&#x4E8E;&#x5411;&#x524D;&#x517C;&#x5BB9;&#x6027;&#x3001;&#x4EE3;&#x7801;&#x7684;&#x590D;&#x6742;&#x6027;&#x548C;&#x53EF;&#x8BFB;&#x6027;&#x4EE5;&#x53CA;&#x7F16;&#x8BD1;&#x6027;&#x80FD;&#x4E4B;&#x7C7B;&#x7684;&#x7EFC;&#x5408;&#x8003;&#x8651;&#x2014;&#x2014;&#x5177;&#x4F53;&#x6211;&#x4E0D;&#x77E5;&#x9053;&#xFF0C;&#x6CA1;&#x8003;&#x8BC1;&#x8FC7;&#x3002;</p><h2 id="%E5%A4%9A%E6%AC%A1%E8%B0%83%E7%94%A8%E5%92%8C%E7%BB%BC%E5%90%88%E6%8E%A8%E6%96%AD">&#x591A;&#x6B21;&#x8C03;&#x7528;&#x548C;&#x7EFC;&#x5408;&#x63A8;&#x65AD;</h2><p>&#x54B1;&#x5199;&#x7684;&#x662F;&#x5927;&#x62EC;&#x53F7;&#x91CC;&#x53EA;&#x6709;&#x4E00;&#x6B21;&#x51FD;&#x6570;&#x8C03;&#x7528;&#xFF0C;&#x90A3;&#x4E48;&#x5C31;&#x53EA;&#x6709;&#x4E00;&#x6B21;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/11/28.webp" class="kg-image" alt="&#x3010;&#x6CDB;&#x578B; Plus&#x3011;Kotlin &#x7684;&#x52A0;&#x5F3A;&#x7248;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;@BuilderInference" loading="lazy" width="734" height="98"></figure><p>&#x800C;&#x5982;&#x679C;&#x6211;&#x4EEC;&#x8FDB;&#x884C;&#x591A;&#x6B21;&#x8C03;&#x7528;&#xFF0C;Kotlin &#x4F1A;&#x5BF9;&#x591A;&#x6B21;&#x8C03;&#x7528;&#x7684;&#x7ED3;&#x679C;&#x8FDB;&#x884C;&#x7EFC;&#x5408;&#x4E4B;&#x540E;&#xFF0C;&#x5F97;&#x51FA;&#x7EDF;&#x4E00;&#x7684;&#x63A8;&#x65AD;&#x7C7B;&#x578B;&#xFF1A;</p><figure class="kg-card kg-image-card"><img src="https://rengwuxian.com/content/images/2024/11/29.webp" class="kg-image" alt="&#x3010;&#x6CDB;&#x578B; Plus&#x3011;Kotlin &#x7684;&#x52A0;&#x5F3A;&#x7248;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#xFF1A;@BuilderInference" loading="lazy" width="482" height="208"></figure><h2 id="%E6%80%BB%E7%BB%93">&#x603B;&#x7ED3;</h2><p>Kotlin &#x8DDF; Java &#x76F8;&#x6BD4;&#xFF0C;&#x6700;&#x5927;&#x7684;&#x6539;&#x52A8;&#x4E4B;&#x4E00;&#x5C31;&#x662F;&#x5B83;&#x589E;&#x52A0;&#x4E86;&#x300C;&#x51FD;&#x6570;&#x7C7B;&#x578B;&#x300D;&#x7684;&#x6982;&#x5FF5;&#xFF0C;&#x8FD9;&#x79CD;&#x6982;&#x5FF5;&#x4E0A;&#x7684;&#x7A81;&#x7834;&#x7ED9;&#x8BED;&#x8A00;&#x589E;&#x52A0;&#x4E86;&#x5F88;&#x591A;&#x7075;&#x6D3B;&#x6027;&#x3002;&#x6BD4;&#x5982;&#x8FD9;&#x4E2A; BuilderInference&#xFF0C;&#x5B83;&#x672C;&#x8D28;&#x4E0A;&#x662F;&#x501F;&#x52A9;&#x5BF9;&#x51FD;&#x6570;&#x7C7B;&#x578B;&#x7684;&#x5BF9;&#x8C61;&#x7684;&#x5185;&#x90E8;&#x4EE3;&#x7801;&#x8FDB;&#x884C;&#x67E5;&#x770B;&#xFF0C;&#x6765;&#x5B9E;&#x73B0;&#x7684;&#x4E00;&#x79CD;&#x95F4;&#x63A5;&#x7684;&#x2014;&#x2014;&#x6216;&#x8005;&#x8BF4;&#x8DEF;&#x5F84;&#x66F4;&#x957F;&#x7684;&#x2014;&#x2014;&#x7C7B;&#x578B;&#x63A8;&#x65AD;&#x3002; Kotlin &#x7684;&#x6807;&#x51C6;&#x5E93;&#x3001;&#x534F;&#x7A0B;&#x4EE5;&#x53CA;&#x5404;&#x79CD;&#x7B2C;&#x4E09;&#x65B9;&#x5E93;&#x2014;&#x2014;&#x6BD4;&#x5982; Jetpack Compose&#x2014;&#x2014;&#x90FD;&#x6709;&#x4E0D;&#x5C11;&#x5BF9;&#x4E8E;&#x8FD9;&#x4E2A;&#x7279;&#x6027;&#x7684;&#x4F7F;&#x7528;&#xFF0C;&#x5B83;&#x53EF;&#x4EE5;&#x8BA9;&#x6211;&#x4EEC;&#x5F88;&#x65B9;&#x4FBF;&#x5730;&#x5199;&#x4E00;&#x4E9B;&#x901A;&#x7528;&#x7684;&#x529F;&#x80FD;&#x51FD;&#x6570;&#x3002;&#x5982;&#x679C;&#x4F60;&#x5728;&#x516C;&#x53F8;&#x6216;&#x8005;&#x56E2;&#x961F;&#x91CC;&#x8D1F;&#x8D23;&#x57FA;&#x7840;&#x67B6;&#x6784;&#x7684;&#x642D;&#x5EFA;&#xFF0C;&#x6216;&#x8005;&#x4F60;&#x662F;&#x67D0;&#x4E9B;&#x5F00;&#x6E90;&#x5E93;&#x7684;&#x4F5C;&#x8005;&#xFF0C;&#x5B83;&#x5F88;&#x53EF;&#x80FD;&#x4F1A;&#x5BF9;&#x4F60;&#x6709;&#x5E2E;&#x52A9;&#x3002; &#x884C;&#xFF0C;&#x4ECA;&#x5929;&#x5C31;&#x8FD9;&#x4E48;&#x591A;&#x3002;&#x5173;&#x6CE8;&#x6211;&#xFF0C;&#x4E86;&#x89E3;&#x66F4;&#x591A;&#x5F00;&#x53D1;&#x77E5;&#x8BC6;&#x548C;&#x6280;&#x80FD;&#x3002;&#x6211;&#x662F;&#x6254;&#x7269;&#x7EBF;&#xFF0C;&#x6211;&#x4E0D;&#x548C;&#x4F60;&#x6BD4;&#x9AD8;&#x4F4E;&#xFF0C;&#x6211;&#x53EA;&#x52A9;&#x4F60;&#x6210;&#x957F;&#x3002;&#x6211;&#x4EEC;&#x4E0B;&#x671F;&#x89C1;&#xFF01;</p>]]></content:encoded></item><item><title><![CDATA[【榨干 Kotlin】把函数当类用，Compose 风骚的作用域机制]]></title><description><![CDATA[Compose 的某些 API 只能在指定的组件内部才能使用，在它的外部、甚至它的子组件里，都是被禁止的。
但这其实有点超出了 Kotlin 函数的能力范围。Compose 之所以能做到，是因为它利用到了一个叫 @DslMarker 的注解。]]></description><link>https://rengwuxian.com/dslmarker/</link><guid isPermaLink="false">65fcd84a3964ac7f5dfda808</guid><category><![CDATA[Kotlin]]></category><category><![CDATA[Compose]]></category><dc:creator><![CDATA[扔物线]]></dc:creator><pubDate>Fri, 22 Mar 2024 01:03:10 GMT</pubDate><media:content url="https://rengwuxian.com/content/images/2024/03/24.02-DslMarker----------.jpg" medium="image"/><content:encoded><![CDATA[<h2 id="%E8%A7%86%E9%A2%91%E5%85%88%E8%A1%8C">&#x89C6;&#x9891;&#x5148;&#x884C;</h2>
<h3 id="%E5%93%94%E5%93%A9%E5%93%94%E5%93%A9">&#x54D4;&#x54E9;&#x54D4;&#x54E9;</h3>
<iframe width="100%" height="480" src="//player.bilibili.com/player.html?bvid=BV16x4y1275f&amp;page=1&amp;autoplay=0" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe>
<h3 id="youtube">YouTube</h3>
<iframe width="100%" height="480" src="https://www.youtube.com/embed/GOIGv0dfa58" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
<blockquote>
<img src="https://rengwuxian.com/content/images/2024/03/24.02-DslMarker----------.jpg" alt="&#x3010;&#x69A8;&#x5E72; Kotlin&#x3011;&#x628A;&#x51FD;&#x6570;&#x5F53;&#x7C7B;&#x7528;&#xFF0C;Compose &#x98CE;&#x9A9A;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x673A;&#x5236;"><p>&#x4E0B;&#x9762;&#x662F;&#x89C6;&#x9891;&#x5185;&#x5BB9;&#x7684;&#x811A;&#x672C;&#x6587;&#x6848;&#x539F;&#x7A3F;&#x5206;&#x4EAB;&#x3002;</p>
</blockquote>
<p><img src="http://image.rengwuxian.com/2023/05/08/fe402c850832a.jpg" alt="&#x3010;&#x69A8;&#x5E72; Kotlin&#x3011;&#x628A;&#x51FD;&#x6570;&#x5F53;&#x7C7B;&#x7528;&#xFF0C;Compose &#x98CE;&#x9A9A;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x673A;&#x5236;" loading="lazy"></p>
<h2 id="%E5%89%8D%E6%88%8F">&#x524D;&#x620F;</h2>
<p>Compose &#x7684;&#x67D0;&#x4E9B; API &#x53EA;&#x80FD;&#x5728;&#x6307;&#x5B9A;&#x7684;&#x7EC4;&#x4EF6;&#x5185;&#x90E8;&#x624D;&#x80FD;&#x4F7F;&#x7528;&#xFF0C;&#x5728;&#x5B83;&#x7684;&#x5916;&#x90E8;&#x3001;&#x751A;&#x81F3;&#x5B83;&#x7684;&#x5B50;&#x7EC4;&#x4EF6;&#x91CC;&#xFF0C;&#x90FD;&#x662F;&#x88AB;&#x7981;&#x6B62;&#x7684;&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/iPic/2024-03-22-004209.png" alt="&#x3010;&#x69A8;&#x5E72; Kotlin&#x3011;&#x628A;&#x51FD;&#x6570;&#x5F53;&#x7C7B;&#x7528;&#xFF0C;Compose &#x98CE;&#x9A9A;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x673A;&#x5236;" loading="lazy"></p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/iPic/2024-03-22-004210.png" alt="&#x3010;&#x69A8;&#x5E72; Kotlin&#x3011;&#x628A;&#x51FD;&#x6570;&#x5F53;&#x7C7B;&#x7528;&#xFF0C;Compose &#x98CE;&#x9A9A;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x673A;&#x5236;" loading="lazy"></p>
<p>&#x8FD9;&#x79CD;&#x89C4;&#x5219;&#x5F88;&#x5408;&#x7406;&#xFF0C;&#x5BF9;&#x5427;&#xFF1F;</p>
<p>&#x4F46;&#x662F;&#xFF0C;&#x6709;&#x4E00;&#x4E2A;&#x4E8B;&#x5B9E;&#x662F;&#xFF0C;Compose &#x662F;&#x7528;&#x51FD;&#x6570;&#x6765;&#x5199;&#x754C;&#x9762;&#x7684;&#xFF0C;&#x5B83;&#x7684;&#x6BCF;&#x4E2A;&#x7EC4;&#x4EF6;&#x90FD;&#x662F;&#x4E00;&#x4E2A;&#x51FD;&#x6570;&#xFF0C;&#x800C;&#x4E0D;&#x662F;&#x7C7B;&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/iPic/2024-03-22-004212.png" alt="&#x3010;&#x69A8;&#x5E72; Kotlin&#x3011;&#x628A;&#x51FD;&#x6570;&#x5F53;&#x7C7B;&#x7528;&#xFF0C;Compose &#x98CE;&#x9A9A;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x673A;&#x5236;" loading="lazy"></p>
<p>&#x7C7B;&#x548C;&#x63A5;&#x53E3;&#x8981;&#x505A;&#x8FD9;&#x79CD;&#x8BBF;&#x95EE;&#x6027;&#x7684;&#x9694;&#x79BB;&#xFF0C;&#x662F;&#x5F88;&#x5BB9;&#x6613;&#x7684;&#x3002;&#x800C;&#x51FD;&#x6570;&#x5E76;&#x4E0D;&#x5177;&#x5907;&#x8FD9;&#x6837;&#x7684;&#x529F;&#x80FD;&#x2014;&#x2014;&#x4F60;&#x60F3;&#x9650;&#x5236;&#x67D0;&#x4E9B;&#x516C;&#x5F00;&#x7684;&#x5C5E;&#x6027;&#x6216;&#x8005;&#x51FD;&#x6570;&#x53EA;&#x80FD;&#x5728;&#x7279;&#x5B9A;&#x7684;<strong>&#x51FD;&#x6570;</strong>&#x5185;&#x90E8;&#x624D;&#x80FD;&#x88AB;&#x4F7F;&#x7528;&#xFF0C;Kotlin &#x662F;&#x6CA1;&#x6709;&#x63D0;&#x4F9B;&#x8FD9;&#x79CD;&#x529F;&#x80FD;&#x7684;&#xFF0C;Java &#x4E5F;&#x6CA1;&#x6709;&#x3002;</p>
<p>&#x90A3;&#x2026;&#x2026;Compose &#x662F;&#x600E;&#x4E48;&#x505A;&#x5230;&#x7684;&#x5462;&#xFF1F;</p>
<h2 id="%E5%BC%80%E5%9C%BA">&#x5F00;&#x573A;</h2>
<p>&#x5927;&#x5BB6;&#x597D;&#xFF0C;&#x6211;&#x662F;&#x6254;&#x7269;&#x7EBF;&#x6731;&#x51EF;&#x3002;</p>
<p>&#x4ECA;&#x5929;&#x54B1;&#x804A;&#x4E00;&#x4E0B; Compose &#x7684;&#x4F5C;&#x7528;&#x57DF;&#x673A;&#x5236;&#x3002;&#x300C;&#x4F5C;&#x7528;&#x57DF;&#x300D;&#x8FD9;&#x4E2A;&#x8BCD;&#x5728; Compose &#x5E95;&#x5C42;&#x539F;&#x7406;&#x7684;&#x89D2;&#x5EA6;&#x6709;&#x5B83;&#x5355;&#x72EC;&#x7684;&#x542B;&#x4E49;&#xFF0C;&#x5B83;&#x662F;&#x7528;&#x6765;&#x8BA8;&#x8BBA;&#x5728;&#x754C;&#x9762;&#x7ED3;&#x6784;&#x7684;&#x7EC4;&#x5408;&#x8FC7;&#x7A0B;&#x4E2D;&#xFF0C;&#x6BCF;&#x4E2A;&#x5C42;&#x7EA7;&#x4E4B;&#x95F4;&#x7684;&#x5173;&#x7CFB;&#x7684;&#x4E00;&#x4E2A;&#x5173;&#x952E;&#x6982;&#x5FF5;&#x3002;&#x4E0D;&#x8FC7;&#x4ECA;&#x5929;&#xFF0C;&#x54B1;&#x4E0D;&#x804A;&#x8FD9;&#x4E2A;&#xFF0C;&#x6211;&#x4EEC;&#x6765;&#x501F;&#x7740; Compose &#x7684;&#x8EAF;&#x58F3;&#xFF0C;&#x804A;&#x4E00;&#x804A; Kotlin &#x8BED;&#x8A00;&#x8FD9;&#x4E2A;&#x5C42;&#x9762;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x673A;&#x5236;&#x3002;</p>
<h2 id="compose-%E5%92%8C-dsl">Compose &#x548C; DSL</h2>
<p>Compose &#x7684;&#x5199;&#x6CD5;&#x662F;&#x58F0;&#x660E;&#x5F0F;&#x7684;&#xFF0C;&#x4F46;&#x662F;&#x8DDF;&#x540C;&#x4E3A;&#x58F0;&#x660E;&#x5F0F;&#x7684; Flutter &#x6709;&#x4E00;&#x4E2A;&#x5F88;&#x5927;&#x7684;&#x4E0D;&#x540C;&#x662F;&#xFF0C;&#x5B83;&#x7684;&#x754C;&#x9762;&#x7EC4;&#x4EF6;&#x662F;&#x7528;&#x51FD;&#x6570;&#x6765;&#x5199;&#x7684;&#xFF0C;&#x800C;&#x4E0D;&#x662F;&#x7528;&#x7C7B;&#x3002;</p>
<p>&#x7528;&#x51FD;&#x6570;&#x6765;&#x5199;&#xFF0C;&#x6709;&#x4E00;&#x4E2A;&#x5F88;&#x5927;&#x7684;&#x597D;&#x5904;&#x5C31;&#x662F;&#xFF0C;&#x5B83;&#x7684;&#x5199;&#x6CD5;&#x53EF;&#x4EE5;&#x505A;&#x5230;&#x6781;&#x81F4;&#x7684;&#x7B80;&#x6D01;&#xFF0C;&#x7B80;&#x6D01;&#x5230;&#x5B83;&#x53EF;&#x4EE5;&#x88AB;&#x770B;&#x4F5C;&#x662F;&#x4E00;&#x79CD; DSL&#x3002;&#x2014;&#x2014;&#x54CE;&#xFF0C;&#x5565;&#x662F; DSL&#xFF1F;</p>
<p>&#x505A; Android &#x5F00;&#x53D1;&#x7684;&#x4EBA;&#xFF0C;&#x5F88;&#x591A;&#x5E94;&#x8BE5;&#x90FD;&#x89C1;&#x8FC7; DSL &#x8FD9;&#x4E2A;&#x8BCD;&#xFF0C;&#x56E0;&#x4E3A;&#x6211;&#x4EEC;&#x7528;&#x7684; Gradle &#x5C31;&#x662F;&#x4E00;&#x79CD; DSL&#x3002;&#x4F46;&#x662F;&#x53EF;&#x80FD;&#x5F88;&#x591A;&#x4EBA;&#x5BF9;&#x4E8E;&#x300C;&#x5230;&#x5E95; DSL &#x662F;&#x5565;&#x610F;&#x601D;&#x300D;&#x7684;&#x6982;&#x5FF5;&#x8FD8;&#x662F;&#x6BD4;&#x8F83;&#x6A21;&#x7CCA;&#x3002;&#x6240;&#x8C13; DSL&#xFF0C;&#x5B83;&#x7684;&#x5168;&#x79F0;&#x662F; Domain-Specific Language&#xFF0C;&#x4E2D;&#x6587;&#x7FFB;&#x8BD1;&#x53EB;&#x300C;&#x9886;&#x57DF;&#x7279;&#x5B9A;&#x8BED;&#x8A00;&#x300D;&#xFF0C;&#x5176;&#x5B9E;&#x5C31;&#x662F;&#x300C;&#x4E13;&#x5C5E;&#x4E8E;&#x67D0;&#x4E2A;&#x9886;&#x57DF;&#x7684;&#x8BED;&#x8A00;&#x300D;&#x3002;&#x76F8;&#x5BF9;&#x4E8E; C++&#x3001;Java&#x3001;Kotlin &#x8FD9;&#x4E9B;&#x901A;&#x7528;&#x7684;&#x7F16;&#x7A0B;&#x8BED;&#x8A00;&#xFF0C;DSL &#x662F;&#x88AB;&#x8BBE;&#x8BA1;&#x6765;&#x4E13;&#x95E8;&#x9488;&#x5BF9;&#x67D0;&#x79CD;&#x7279;&#x5B9A;&#x573A;&#x666F;&#x7684;&#x4E13;&#x7528;&#x5316;&#x7684;&#x8BED;&#x8A00;&#x3002;&#x6BD4;&#x5982; HTML&#xFF0C;&#x5C31;&#x662F;&#x4E00;&#x79CD;&#x4E13;&#x95E8;&#x7528;&#x6765;&#x5199;&#x7F51;&#x9875;&#x754C;&#x9762;&#x7684; DSL&#xFF1A;</p>
<pre><code class="language-html">&lt;!DOCTYPE html&gt;
&lt;html lang=&quot;en&quot;&gt;
  &lt;head&gt;
    &lt;meta charset=&quot;UTF-8&quot;&gt;
    &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;
    &lt;title&gt;Simple HTML Page&lt;/title&gt;
  &lt;/head&gt;
  &lt;body&gt;
    &lt;h1&gt;Welcome to My Simple HTML Page&lt;/h1&gt;
    &lt;p&gt;This is a paragraph of text in the body of the HTML page.&lt;/p&gt;
    &lt;p&gt;Here is a link to an interesting &lt;a href=&quot;https://www.wikipedia.org/&quot;&gt;website&lt;/a&gt;.&lt;/p&gt;
  &lt;/body&gt;
&lt;/html&gt;
</code></pre>
<p>&#x8FD8;&#x6709; SQL&#xFF0C;&#x5B83;&#x662F;&#x4E13;&#x95E8;&#x7528;&#x6765;&#x8BBF;&#x95EE;&#x5173;&#x7CFB;&#x578B;&#x6570;&#x636E;&#x5E93;&#x7684; DSL&#xFF1A;</p>
<pre><code class="language-sql">SELECT * FROM Customers WHERE Country = &apos;CN&apos;;

SELECT CustomerID, FirstName, LastName, Email FROM Customers;

SELECT COUNT(*) AS NumberOfCustomers FROM Customers;

SELECT * FROM Customers ORDER BY LastName ASC;

SELECT Country, COUNT(*) AS NumberOfCustomers FROM Customers GROUP BY Country;

SELECT Orders.OrderID, Customers.FirstName, Customers.LastName, Orders.OrderDate
FROM Orders
INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID;

INSERT INTO Customers (FirstName, LastName, Email, Country)
VALUES (&apos;Kai&apos;, &apos;Zhu&apos;, &apos;rengwuxian@gmail.com&apos;, &apos;CN&apos;);

UPDATE Customers SET Email = &apos;rengwuxian@gmail.com&apos; WHERE CustomerID = 1;

DELETE FROM Customers WHERE CustomerID = 1;
</code></pre>
<p>&#x53E6;&#x5916;&#x5F88;&#x591A;&#x7A0B;&#x5E8F;&#x5458;&#x5199;&#x6587;&#x6863;&#x559C;&#x6B22;&#x7528;&#x7684; Markdown&#xFF0C;&#x5B83;&#x662F;&#x4E00;&#x79CD;&#x300C;&#x683C;&#x5F0F;&#x300D;&#xFF0C;&#x4F46;&#x5B83;&#x4E5F;&#x662F;&#x4E00;&#x79CD;&#x4E13;&#x95E8;&#x7528;&#x6765;&#x5199;&#x683C;&#x5F0F;&#x5316;&#x6587;&#x6863;&#x7684; DSL&#xFF1A;</p>
<pre><code class="language-markdown"># Header 1
## Header 2
### Header 3

This is a paragraph with some *italic* text and some **bold** text.

Here&apos;s an unordered list:
- Item 1
- Item 2
  - Nested Item 2a
  - Nested Item 2b

And here&apos;s an ordered list:
1. First item
2. Second item
3. Third item

`Inline code` can be included within backticks.
</code></pre>
<p>&#x6709;&#x4E2A;&#x8FB9;&#x754C;&#x6848;&#x4F8B;&#x662F; XML&#xFF1A;&#x5B83;&#x901A;&#x5E38;&#x88AB;&#x8BA4;&#x4E3A;&#x50CF; JSON &#x4E00;&#x6837;&#x662F;&#x4E00;&#x79CD;&#x6570;&#x636E;&#x683C;&#x5F0F;&#xFF0C;&#x800C;&#x4E0D;&#x662F;&#x4E00;&#x79CD; DSL&#xFF1A;</p>
<pre><code class="language-xml">&lt;?xml version=&quot;1.0&quot; encoding=&quot;UTF-8&quot;?&gt;
&lt;bookstore&gt;
  &lt;book category=&quot;programming&quot;&gt;
    &lt;title lang=&quot;en&quot;&gt;Learn XML&lt;/title&gt;
    &lt;author&gt;John Doe&lt;/author&gt;
    &lt;year&gt;2021&lt;/year&gt;
    &lt;price&gt;39.95&lt;/price&gt;
  &lt;/book&gt;
  &lt;book category=&quot;fiction&quot;&gt;
    &lt;title lang=&quot;en&quot;&gt;XML for Storytellers&lt;/title&gt;
    &lt;author&gt;Jane Austen&lt;/author&gt;
    &lt;year&gt;2020&lt;/year&gt;
    &lt;price&gt;29.99&lt;/price&gt;
  &lt;/book&gt;
  &lt;book category=&quot;reference&quot;&gt;
    &lt;title lang=&quot;en&quot;&gt;The XML Handbook&lt;/title&gt;
    &lt;author&gt;Robert Smith&lt;/author&gt;
    &lt;year&gt;2019&lt;/year&gt;
    &lt;price&gt;49.99&lt;/price&gt;
  &lt;/book&gt;
&lt;/bookstore&gt;
</code></pre>
<p>&#x4E3A;&#x5565;&#xFF1F;&#x56E0;&#x4E3A;&#x5B83;&#x4E0D;&#x662F;&#x9886;&#x57DF;&#x7279;&#x5B9A;&#x7684;&#xFF0C;&#x5B83;&#x53EF;&#x4EE5;&#x7528;&#x5728;&#x5F88;&#x591A;&#x5730;&#x65B9;&#xFF0C;&#x4F46;&#x5E76;&#x4E0D;&#x9488;&#x5BF9;&#x4EFB;&#x4F55;&#x9886;&#x57DF;&#x3002;&#x800C;&#x4F60;&#x5982;&#x679C;&#x9488;&#x5BF9;&#x67D0;&#x79CD;&#x573A;&#x666F;&#xFF0C;&#x4F7F;&#x7528; XML &#x53BB;&#x8BBE;&#x8BA1;&#x4E00;&#x79CD;&#x4E13;&#x7528;&#x7684;&#x683C;&#x5F0F;&#xFF0C;&#x90A3;&#x5B83;&#x5C31;&#x662F; DSL&#x2014;&#x2014;&#x6BD4;&#x5982; SVG&#xFF0C;&#x4E00;&#x79CD;&#x77E2;&#x91CF;&#x56FE;&#x7684;&#x8868;&#x8FBE;&#x683C;&#x5F0F;&#xFF0C;&#x5B83;&#x5C31;&#x662F; DSL&#xFF0C;&#x56E0;&#x4E3A;&#x5B83;&#x662F;&#x4E13;&#x7528;&#x4E8E;&#x77E2;&#x91CF;&#x56FE;&#x8FD9;&#x4E2A;&#x9886;&#x57DF;&#x7684;&#xFF0C;&#x867D;&#x7136;&#x5B83;&#x672C;&#x8D28;&#x4E0A;&#x4E5F;&#x662F;&#x4E00;&#x79CD; XML&#xFF1A;</p>
<pre><code class="language-xml">&lt;svg width=&quot;100&quot; height=&quot;100&quot; xmlns=&quot;http://www.w3.org/2000/svg&quot;&gt;
  &lt;circle cx=&quot;50&quot; cy=&quot;50&quot; r=&quot;40&quot; stroke=&quot;black&quot; stroke-width=&quot;2&quot; fill=&quot;blue&quot; /&gt;
&lt;/svg&gt;
</code></pre>
<p>&#x6240;&#x4EE5;&#xFF0C;DSL &#x662F;&#x4E00;&#x4E2A;&#x5BBD;&#x677E;&#x7684;&#x6982;&#x5FF5;&#xFF0C;&#x5B83;&#x5173;&#x952E;&#x5728;&#x4E8E;&#x662F;&#x5426;&#x662F;&#x7528;&#x4E8E;&#x7279;&#x5B9A;&#x9886;&#x57DF;&#x7684;&#x3002;&#x4F60;&#x53EF;&#x4EE5;&#x4ECE;&#x96F6;&#x53BB;&#x521B;&#x9020;&#x4E00;&#x95E8; DSL&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x62FF;&#x73B0;&#x6210;&#x7684;&#x4E1C;&#x897F;&#x53BB;&#x6539;&#x6210; DSL&#x3002;</p>
<p>&#x4E0D;&#x6B62; XML&#xFF0C;&#x54B1;&#x8FD8;&#x53EF;&#x4EE5;&#x7528;&#x901A;&#x7528;&#x7F16;&#x7A0B;&#x8BED;&#x8A00;&#x6765;&#x6539;&#x6210; DSL&#x3002;&#x6BD4;&#x5982; Gradle&#xFF0C;&#x5C31;&#x662F;&#x4E00;&#x79CD;&#x57FA;&#x4E8E; Groovy &#x8BED;&#x8A00;&#x7684; DSL &#x5B83;&#x9488;&#x5BF9;&#x573A;&#x666F;&#x7684;&#x662F; Java &#x9879;&#x76EE;&#x7684;&#x67B6;&#x6784;&#x914D;&#x7F6E;&#x2014;&#x2014;&#x5F53;&#x7136;&#x4E5F;&#x5305;&#x62EC; Android &#x9879;&#x76EE;&#x3002;&#x53E6;&#x5916;&#x73B0;&#x5728; Gradle &#x4E5F;&#x652F;&#x6301; Kotlin &#x4E86;&#xFF0C;&#x8FD9;&#x5C31;&#x662F;&#x5B83;&#x53C8;&#x6DFB;&#x52A0;&#x4E86;&#x4F7F;&#x7528; Kotlin &#x6765;&#x5199; Gradle &#x811A;&#x672C;&#x7684;&#x652F;&#x6301;&#x3002;&#x4F60;&#x5927;&#x773C;&#x4E00;&#x770B;&#xFF0C;&#x8FD9;&#x5C31;&#x662F;&#x4E2A;&#x914D;&#x7F6E;&#x6587;&#x4EF6;&#xFF0C;&#x4F46;&#x5B83;&#x5B9E;&#x9645;&#x4E0A;&#x662F;&#x7528; Kotlin &#x5199;&#x7684;&#xFF0C;&#x53EA;&#x4E0D;&#x8FC7;&#x88AB;&#x7CBE;&#x5FC3;&#x505A;&#x6210;&#x4E86;&#x957F;&#x5F97;&#x5F88;&#x50CF;&#x914D;&#x7F6E;&#x6587;&#x4EF6;&#x7684;&#x6837;&#x5B50;&#x3002;</p>
<p>&#x800C; Compose&#xFF0C;&#x4E5F;&#x662F;&#x4E00;&#x6837;&#x7684;&#x9053;&#x7406;&#xFF1A;&#x5B83;&#x662F;&#x4E00;&#x4E2A;&#x5B9A;&#x5236;&#x5316;&#x7684;&#x3001;&#x4E13;&#x95E8;&#x7528;&#x6765;&#x5199;&#x754C;&#x9762;&#x7684; DSL&#xFF1B;&#x4F46;&#x672C;&#x8D28;&#x4E0A;&#xFF0C;&#x5B83;&#x4F9D;&#x7136;&#x662F; Kotlin&#x3002;</p>
<h2 id="implicit-receiver">implicit receiver</h2>
<p>&#x90A3;&#x4E48;&#x65E2;&#x7136;&#x662F; Kotlin&#xFF0C;&#x5B83;&#x5C31;&#x53EF;&#x4EE5;&#x5B8C;&#x5168;&#x4EAB;&#x53D7; Kotlin &#x7684;&#x6240;&#x6709;&#x529F;&#x80FD;&#xFF0C;&#x4F46;&#x4E5F;&#x5B8C;&#x5168;&#x627F;&#x53D7;&#x4E86; Kotlin &#x7684;&#x9650;&#x5236;&#x3002;&#x6BD4;&#x5982;&#xFF0C;&#x6211;&#x4EEC;&#x5728;&#x5199;&#x4F20;&#x7EDF;&#x7684; XML &#x5E03;&#x5C40;&#x7684;&#x65F6;&#x5019;&#x2014;&#x2014;&#x54CE;&#x5BF9;&#x4E86;&#xFF0C;Android &#x7684;&#x5E03;&#x5C40;&#x6587;&#x4EF6;&#x683C;&#x5F0F;&#xFF0C;&#x4E5F;&#x662F;&#x4E00;&#x79CD; DSL&#xFF0C;&#x8DDF; SVG &#x7684;&#x903B;&#x8F91;&#x4E00;&#x6837;&#x2014;&#x2014;&#x6211;&#x4EEC;&#x5728;&#x5199; Android &#x7684; XML &#x5E03;&#x5C40;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x5982;&#x679C;&#x628A;&#x5C5E;&#x6027;&#x5199;&#x5728;&#x4E0D;&#x5408;&#x9002;&#x7684;&#x4F4D;&#x7F6E;&#xFF0C;&#x662F;&#x4F1A;&#x770B;&#x5230;&#x8B66;&#x544A;&#x7684;&#x5BF9;&#x5427;&#xFF1A;</p>
<pre><code class="language-xml">&lt;?xml version=&quot;1.0&quot; encoding=&quot;utf-8&quot;?&gt;
&lt;RelativeLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    android:layout_width=&quot;match_parent&quot;
    android:layout_height=&quot;match_parent&quot;&gt;

    &lt;TextView
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;match_parent&quot;
        android:layout_weight=&quot;1&quot;
        android:text=&quot;&quot; /&gt;

&lt;/RelativeLayout&gt;
</code></pre>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/iPic/2024-03-22-004213.png" alt="&#x3010;&#x69A8;&#x5E72; Kotlin&#x3011;&#x628A;&#x51FD;&#x6570;&#x5F53;&#x7C7B;&#x7528;&#xFF0C;Compose &#x98CE;&#x9A9A;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x673A;&#x5236;" loading="lazy"></p>
<p>&#x8FD9;&#x662F;&#x56E0;&#x4E3A; Android Studio &#x4F1A;&#x5229;&#x7528;&#x4E13;&#x95E8;&#x7684; Lint &#x89C4;&#x5219;&#x6765;&#x81EA;&#x52A8;&#x68C0;&#x67E5;&#x6587;&#x4EF6;&#x7ED3;&#x6784;&#xFF0C;&#x8FD9;&#x5C31;&#x80FD;&#x5728;&#x683C;&#x5F0F;&#x4E0D;&#x5BF9;&#x7684;&#x65F6;&#x5019;&#x7ED9;&#x6211;&#x4EEC;&#x62A5;&#x8B66;&#x3002;&#x2014;&#x2014;&#x8FD9;&#x5957;&#x89C4;&#x5219;&#x6211;&#x4EEC;&#x4E0D;&#x7528;&#x5199;&#xFF0C;&#x4F46; Android &#x7684;&#x7814;&#x53D1;&#x56E2;&#x961F;&#x662F;&#x82B1;&#x4E86;&#x7CBE;&#x529B;&#x53BB;&#x5199;&#x5B83;&#x7684;&#x3002;</p>
<p>&#x800C; Compose &#x662F;&#x7528; Kotlin &#x6765;&#x5199;&#x7684;&#xFF0C;&#x90A3;&#x4E48;&#x7406;&#x8BBA;&#x4E0A;&#x5C31;&#x4E0D;&#x9700;&#x8981;&#x4E13;&#x95E8;&#x518D;&#x5199; Lint &#x4E86;&#xFF0C;&#x628A;&#x4EE3;&#x7801;&#x8BBE;&#x8BA1;&#x597D;&#xFF0C;&#x76F4;&#x63A5;&#x5229;&#x7528; Kotlin &#x7684;&#x7279;&#x6027;&#x5C31;&#x80FD;&#x68C0;&#x67E5;&#x548C;&#x62A5;&#x9519;&#x4E86;&#x3002;&#x662F;&#x5427;&#xFF1F;&#x5B9E;&#x9645;&#x4E0A;&#xFF0C;Compose &#x4E5F;&#x662F;&#x8FD9;&#x4E48;&#x505A;&#x7684;&#x3002;</p>
<p>&#x4F46;&#x662F;&#x5177;&#x4F53;&#x5230;&#x4F5C;&#x7528;&#x57DF;&#x8FD9;&#x4E2A;&#x95EE;&#x9898;&#xFF0C;&#x5C31;&#x6709;&#x4E00;&#x4E2A;&#x969C;&#x788D;&#xFF1A;&#x5C31;&#x50CF;&#x6211;&#x521A;&#x624D;&#x8BF4;&#x7684;&#xFF0C;&#x5B83;&#x7684;&#x7EC4;&#x4EF6;&#x4E0D;&#x662F;&#x7528;&#x7C7B;&#x5199;&#x7684;&#xFF0C;&#x800C;&#x662F;&#x51FD;&#x6570;&#x3002;&#x51FD;&#x6570;&#x5E76;&#x6CA1;&#x6709;&#x50CF;&#x7C7B;&#x548C;&#x63A5;&#x53E3;&#x90A3;&#x6837;&#x7684;&#x5C42;&#x7EA7;&#x7ED3;&#x6784;&#xFF0C;&#x6210;&#x5458;&#x5C5E;&#x6027;&#x548C;&#x6210;&#x5458;&#x51FD;&#x6570;&#x8FD9;&#x4E9B;&#x4E1C;&#x897F;&#xFF0C;&#x51FD;&#x6570;&#x662F;&#x6CA1;&#x6709;&#x7684;&#x2014;&#x2014;&#x4F60;&#x53EF;&#x4EE5;&#x5199;&#x5C40;&#x90E8;&#x53D8;&#x91CF;&#x548C;&#x5C40;&#x90E8;&#x51FD;&#x6570;&#xFF0C;&#x4F46;&#x8FD9;&#x4E9B;&#x4E1C;&#x897F;&#x662F;&#x5B8C;&#x5168;&#x79C1;&#x6709;&#x7684;&#xFF0C;&#x6CA1;&#x6CD5;&#x4ECE;&#x5916;&#x90E8;&#x8C03;&#x5EA6;&#xFF0C;&#x6240;&#x4EE5;&#x4E0D;&#x662F;&#x4E00;&#x56DE;&#x4E8B;&#x3002;&#x8FD9;&#x6837;&#x7684;&#x8BDD;&#xFF0C;&#x867D;&#x7136;&#x7528;&#x7684;&#x662F; Kotlin&#xFF0C;&#x4F46;&#x6211;&#x4EEC;&#x8FD8;&#x662F;&#x6CA1;&#x6CD5;&#x50CF;&#x4F20;&#x7EDF;&#x5E03;&#x5C40;&#x6587;&#x4EF6;&#x90A3;&#x6837;&#x5BF9;&#x4F5C;&#x7528;&#x57DF;&#x505A;&#x89C4;&#x5219;&#x7BA1;&#x7406;&#x3002;&#x76F4;&#x767D;&#x70B9;&#x8BF4;&#x5C31;&#x662F;&#xFF0C;&#x4F60;&#x60F3;&#x9650;&#x5236;&#x67D0;&#x4E2A;&#x5C5E;&#x6027;&#x6216;&#x8005;&#x51FD;&#x6570;&#x53EA;&#x80FD;&#x5728;&#x6307;&#x5B9A;&#x7684;&#x51FD;&#x6570;&#x5185;&#x90E8;&#x88AB;&#x8C03;&#x7528;&#xFF0C;&#x8FD9;&#x662F;&#x505A;&#x4E0D;&#x5230;&#x7684;&#x3002;</p>
<p>&#x4F46;&#x662F;&#xFF01;&#x5B9E;&#x9645;&#x60C5;&#x51B5;&#x5374;&#x4E0D;&#x662F;&#x8FD9;&#x6837;&#x3002;Compose &#x7684; <code>Row()</code> &#x7EC4;&#x4EF6;&#x5185;&#x90E8;&#x53EF;&#x4EE5;&#x4F7F;&#x7528;&#x4E00;&#x4E2A;&#x53EB; <code>align()</code> &#x7684; <code>Modifier</code> &#x51FD;&#x6570;&#xFF0C;&#x5B83;&#x53EF;&#x4EE5;&#x8BBE;&#x7F6E; <code>Row()</code> &#x5185;&#x90E8;&#x6BCF;&#x4E2A;&#x7EC4;&#x4EF6;&#x7684;&#x7EB5;&#x5411;&#x5BF9;&#x9F50;&#x89C4;&#x5219;&#xFF0C;&#x6BD4;&#x5982;&#x7EB5;&#x5411;&#x5C45;&#x4E2D;&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/iPic/2024-03-22-004214.png" alt="&#x3010;&#x69A8;&#x5E72; Kotlin&#x3011;&#x628A;&#x51FD;&#x6570;&#x5F53;&#x7C7B;&#x7528;&#xFF0C;Compose &#x98CE;&#x9A9A;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x673A;&#x5236;" loading="lazy"></p>
<p>&#x800C;&#x4F60;&#x5982;&#x679C;&#x5728; <code>Row()</code> &#x7684;&#x5916;&#x9762;&#x5C1D;&#x8BD5;&#x4F7F;&#x7528;&#x5B83;&#xFF0C;&#x5C31;&#x4F1A;&#x62A5;&#x9519;&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/iPic/2024-03-22-004215.png" alt="&#x3010;&#x69A8;&#x5E72; Kotlin&#x3011;&#x628A;&#x51FD;&#x6570;&#x5F53;&#x7C7B;&#x7528;&#xFF0C;Compose &#x98CE;&#x9A9A;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x673A;&#x5236;" loading="lazy"></p>
<p>&#x8FD9;&#x662F;&#x4E3A;&#x5565;&#xFF1F;</p>
<p>&#x8FD9;&#x5176;&#x5B9E;&#x662F;&#x5229;&#x7528;&#x4E86; Kotlin &#x7684;&#x53E6;&#x4E00;&#x4E2A;&#x6982;&#x5FF5;&#xFF0C;&#x53EB; implicit receiver&#xFF0C;&#x9690;&#x5F0F;&#x7684; receiver&#x3002;&#x8FD9;&#x4E2A;&#x6982;&#x5FF5;&#x6211;&#x4E0A;&#x4E2A;&#x89C6;&#x9891;&#x4E13;&#x95E8;&#x8BB2;&#x8FC7;&#xFF0C;&#x5C31;&#x4E0D;&#x91CD;&#x590D;&#x8BF4;&#x4E86;&#xFF0C;&#x5EFA;&#x8BAE;&#x5927;&#x5BB6;&#x53BB;&#x770B;&#x4E00;&#x4E0B;&#xFF08;&#x89C6;&#x9891;&#x5BFC;&#x822A;&#x4E00;&#x4E0B;&#xFF09;&#x3002;Compose &#x628A;&#x8FD9;&#x4E2A; <code>align()</code> &#x5199;&#x6210;&#x4E86; <code>RowScope</code> &#x7684;&#x6210;&#x5458;&#x51FD;&#x6570;&#xFF0C;&#x6765;&#x9650;&#x5236;&#x5B83;&#x53EA;&#x80FD;&#x5728; <code>RowScope</code> &#x5BF9;&#x8C61;&#x7684;&#x5185;&#x90E8;&#x88AB;&#x8C03;&#x7528;&#xFF1B;&#x540C;&#x65F6;&#xFF0C;&#x5B83;&#x8FD8;&#x7ED9; <code>Row()</code> &#x7EC4;&#x4EF6;&#x7684;&#x51FD;&#x6570;&#x7C7B;&#x578B;&#x7684;&#x53C2;&#x6570;&#x2014;&#x2014;&#x4E5F;&#x5C31;&#x662F;&#x8FD9;&#x4E2A;&#x5927;&#x62EC;&#x53F7;&#x53C2;&#x6570;&#x2014;&#x2014;&#x7ED9;&#x5B83;&#x8BBE;&#x7F6E;&#x4E86;&#x4E00;&#x4E2A; <code>RowScope</code> &#x7C7B;&#x578B;&#x7684;&#x9690;&#x5F0F; receiver&#xFF0C;&#x8FD9;&#x5C31;&#x8BA9; <code>Row()</code> &#x540E;&#x9762;&#x7684;&#x8FD9;&#x4E2A;&#x5927;&#x62EC;&#x53F7;&#x91CC;&#x6709;&#x4E86;&#x4E00;&#x4E2A;&#x9690;&#x5F0F;&#x7684;&#x3001;<code>RowScope</code> &#x7C7B;&#x578B;&#x7684; <code>this</code>&#x3002;&#x8FD9;&#x6837;&#xFF0C;&#x6700;&#x7EC8;&#x7684;&#x6548;&#x679C;&#x5C31;&#x662F;&#xFF1A;&#x6211;&#x4EEC;&#x53EA;&#x80FD;&#x5728; <code>Row()</code> &#x7684;&#x5927;&#x62EC;&#x53F7;&#x91CC;&#x8C03;&#x7528;&#x8FD9;&#x4E2A; <code>align()</code>&#xFF0C;&#x800C;&#x5728;&#x5176;&#x4ED6;&#x5730;&#x65B9;&#x7528;&#x4E0D;&#x4E86;&#x3002;&#x901A;&#x8FC7;&#x8FD9;&#x79CD;&#x65B9;&#x5F0F;&#xFF0C;Compose &#x5C31;&#x5B9E;&#x73B0;&#x4E86;&#x7528;&#x51FD;&#x6570;&#x2014;&#x2014;&#x800C;&#x4E0D;&#x662F;&#x7C7B;&#x2014;&#x2014;&#x4E5F;&#x80FD;&#x8FDB;&#x884C;&#x4F5C;&#x7528;&#x57DF;&#x9650;&#x5236;&#x7684;&#x76EE;&#x7684;&#x3002;</p>
<h2 id="dslmarker"><code>@DslMarker</code></h2>
<p>&#x4E0D;&#x8FC7;&#x8FD9;&#x8FD8;&#x6CA1;&#x5B8C;&#x3002;</p>
<p>&#x8FD9;&#x4E00;&#x5957;&#x6253;&#x6CD5;&#xFF0C;&#x5B83;&#x53EA;&#x9650;&#x5236;&#x4E86;&#x300C;&#x4E0D;&#x80FD;&#x5728;&#x5916;&#x90E8;&#x4F7F;&#x7528;&#x300D;&#xFF0C;&#x5374;&#x6CA1;&#x6709;&#x9650;&#x5236;&#x300C;&#x4E0D;&#x80FD;&#x5728;&#x5185;&#x90E8;&#x7684;&#x5185;&#x90E8;&#x4F7F;&#x7528;&#x300D;&#x3002;&#x6BD4;&#x5982;&#x6211;&#x5728; <code>Row()</code> &#x7684;&#x5185;&#x90E8;&#x53C8;&#x6446;&#x4E86;&#x4E2A; <code>Column()</code>&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x7EB5;&#x5411;&#x7684;&#x7EBF;&#x6027;&#x5E03;&#x5C40;&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/iPic/2024-03-22-004216.png" alt="&#x3010;&#x69A8;&#x5E72; Kotlin&#x3011;&#x628A;&#x51FD;&#x6570;&#x5F53;&#x7C7B;&#x7528;&#xFF0C;Compose &#x98CE;&#x9A9A;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x673A;&#x5236;" loading="lazy"></p>
<p><code>Row()</code> &#x7EC4;&#x4EF6;&#x7684;&#x8FD9;&#x79CD;&#x300C;&#x7EB5;&#x5411;&#x5BF9;&#x9F50;&#x89C4;&#x5219;&#x300D;&#xFF0C;&#x5B83;&#x662F;&#x53EA;&#x5BF9;&#x76F4;&#x63A5;&#x5B50;&#x7EC4;&#x4EF6;&#x624D;&#x6709;&#x610F;&#x4E49;&#x7684;&#x3002;&#x6BD4;&#x5982;&#x8FD9;&#x4E2A; <code>Text()</code> &#x548C; <code>Column()</code>&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/iPic/2024-03-22-004217.png" alt="&#x3010;&#x69A8;&#x5E72; Kotlin&#x3011;&#x628A;&#x51FD;&#x6570;&#x5F53;&#x7C7B;&#x7528;&#xFF0C;Compose &#x98CE;&#x9A9A;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x673A;&#x5236;" loading="lazy"></p>
<p>&#x4F46;&#x5BF9;&#x4E8E; <code>Column()</code> &#x5185;&#x90E8;&#x7684; <code>Text()</code>&#xFF0C;&#x8BBE;&#x7F6E;&#x8FD9;&#x79CD;&#x300C;&#x7EB5;&#x5411;&#x5BF9;&#x9F50;&#x300D;&#x5C31;&#x6CA1;&#x6709;&#x610F;&#x4E49;&#x4E86;&#x2014;&#x2014;&#x5B50;&#x7EC4;&#x4EF6;&#x7684;&#x5B50;&#x7EC4;&#x4EF6;&#xFF0C;&#x9694;&#x7740;&#x4E00;&#x5C42;&#x5462;&#xFF0C;&#x600E;&#x4E48;&#x5BF9;&#x9F50;&#x5440;&#xFF0C;&#x662F;&#x5427;&#xFF1F;&#x5B83;&#x53EF;&#x4EE5;&#x8BBE;&#x7F6E;&#x5728;&#x5B83;&#x7684;&#x7236;&#x7EC4;&#x4EF6;&#x2014;&#x2014;&#x4E5F;&#x5C31;&#x662F;&#x8FD9;&#x4E2A; <code>Column()</code>&#x2014;&#x2014;&#x91CC;&#x7684;&#x6A2A;&#x5411;&#x5BF9;&#x9F50;&#x89C4;&#x5219;&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/iPic/2024-03-22-004218.png" alt="&#x3010;&#x69A8;&#x5E72; Kotlin&#x3011;&#x628A;&#x51FD;&#x6570;&#x5F53;&#x7C7B;&#x7528;&#xFF0C;Compose &#x98CE;&#x9A9A;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x673A;&#x5236;" loading="lazy"></p>
<p>&#x2014;&#x2014;&#x6CE8;&#x610F;&#xFF0C;&#x8FD9;&#x91CC;&#x867D;&#x7136;&#x51FD;&#x6570;&#x540D;&#x4E00;&#x6837;&#xFF0C;&#x4F46;&#x5176;&#x5B9E;&#x662F;&#x53E6;&#x4E00;&#x4E2A;&#x51FD;&#x6570;&#xFF0C;&#x5B83;&#x53EA;&#x63A5;&#x53D7;&#x6A2A;&#x5411;&#x5BF9;&#x9F50;&#x7C7B;&#x578B;&#x7684;&#x53C2;&#x6570;&#x3002;</p>
<p>&#x6A2A;&#x5411;&#x5BF9;&#x9F50;&#x6CA1;&#x95EE;&#x9898;&#xFF0C;&#x4F46;&#x66F4;&#x5916;&#x9762;&#x7684; <code>Row()</code> &#x6240;&#x7BA1;&#x7406;&#x7684;&#x7EB5;&#x5411;&#x5BF9;&#x9F50;&#xFF0C;&#x5BF9;&#x4E8E;&#x8FD9;&#x4E2A;&#x4E8C;&#x7EA7;&#x5B50;&#x7EC4;&#x4EF6;&#x7684; <code>Text()</code> &#x662F;&#x6CA1;&#x6709;&#x610F;&#x4E49;&#x7684;&#x3002;&#x6240;&#x4EE5;&#x6309;&#x7406;&#x8BF4;&#xFF0C;&#x5728;&#x8FD9;&#x4E2A; <code>Text()</code> &#x91CC;&#x5C31;&#x4E5F;&#x4E0D;&#x5E94;&#x8BE5;&#x5141;&#x8BB8;&#x8C03;&#x7528;&#x90A3;&#x4E2A;&#x7EB5;&#x5411;&#x5BF9;&#x9F50;&#x7684; <code>align()</code> &#x4E86;&#xFF0C;&#x662F;&#x5427;&#xFF1F;&#x4F46;&#x662F;&#xFF0C;&#x6309;&#x7167; Kotlin &#x7684;&#x903B;&#x8F91;&#xFF0C;&#x8FD9;&#x4E48;&#x5199;&#x5374;&#x662F;&#x88AB;&#x5141;&#x8BB8;&#x7684;&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/iPic/2024-03-22-004220.png" alt="&#x3010;&#x69A8;&#x5E72; Kotlin&#x3011;&#x628A;&#x51FD;&#x6570;&#x5F53;&#x7C7B;&#x7528;&#xFF0C;Compose &#x98CE;&#x9A9A;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x673A;&#x5236;" loading="lazy"></p>
<p>&#x2014;&#x2014;&#x54CE;&#xFF1F;&#x4E5F;&#x4E0D;&#x5141;&#x8BB8;&#xFF1F; &#x8FD9;&#xFF0C;&#x600E;&#x4E48;&#x505A;&#x5230;&#x7684;&#xFF1F;&#xFF08;&#x60CA;&#x5947;&#x8F6C;&#x53D8;&#x6210;&#x7B11;&#xFF09;<br>
Kotlin &#x6709;&#x4E00;&#x4E2A;&#x7279;&#x6B8A;&#x7684;&#x6CE8;&#x89E3;&#xFF0C;&#x53EB; <code>DslMarker</code>&#xFF0C;&#x8FD9;&#x4E2A;&#x9650;&#x5236;&#x5C31;&#x662F;&#x9760;&#x5B83;&#x6765;&#x5B9E;&#x73B0;&#x7684;&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/iPic/2024-03-22-004221.png" alt="&#x3010;&#x69A8;&#x5E72; Kotlin&#x3011;&#x628A;&#x51FD;&#x6570;&#x5F53;&#x7C7B;&#x7528;&#xFF0C;Compose &#x98CE;&#x9A9A;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x673A;&#x5236;" loading="lazy"></p>
<p>&#x54CE;&#xFF1F;D-S-L-Marker&#xFF0C;DSL&#xFF0C;&#x54B1;&#x521A;&#x624D;&#x521A;&#x8BF4;&#x8FC7;&#x7684;&#xFF0C;&#x662F;&#x5427;&#xFF1F;&#x8FD9;&#x662F;&#x4E2A;&#x4E13;&#x95E8;&#x7528;&#x6765;&#x5199; DSL &#x7684;&#x6CE8;&#x89E3;&#x5417;&#xFF1F;</p>
<p>&#x8FD8;&#x771F;&#x7684;&#x662F;&#x7684;&#xFF0C;&#x8FD9;&#x4E2A;&#x6CE8;&#x89E3;&#x5C31;&#x662F;&#x4E13;&#x95E8;&#x7528;&#x6765;&#x8BA9;&#x6211;&#x4EEC;&#x8BBE;&#x8BA1; DSL &#x7684;&#x65F6;&#x5019;&#x7528;&#x7684;&#x3002;Compose &#x5C31;&#x662F;&#x4E2A; DSL&#xFF0C;&#x521A;&#x624D;&#x6211;&#x8BF4;&#x8FC7;&#x4E86;&#xFF0C;&#x662F;&#x5427;&#xFF1F;</p>
<p>&#x4E0D;&#x8FC7;&#x54B1;&#x521A;&#x624D;&#x4E5F;&#x8BF4;&#x8FC7;&#x4E86;&#xFF0C;DSL &#x662F;&#x4E2A;&#x6CDB;&#x6307;&#x7684;&#x3001;&#x5E7F;&#x4E49;&#x7684;&#x8BCD;&#xFF0C;&#x5177;&#x4F53;&#x7684;&#x6709;&#x5F88;&#x591A;&#x79CD; DSL&#xFF0C;&#x5B83;&#x4EEC;&#x7684;&#x5B9A;&#x4F4D;&#x548C;&#x7528;&#x6CD5;&#x662F;&#x5B8C;&#x5168;&#x4E0D;&#x540C;&#x7684;&#x3002;&#x800C;&#x8FD9;&#x4E2A; <code>DslMarker</code>&#xFF0C;&#x53EA;&#x662F;&#x5B9E;&#x73B0;&#x4E86;&#x5176;&#x4E2D;&#x4E00;&#x79CD; DSL &#x7684;&#x4E00;&#x79CD;&#x529F;&#x80FD;&#x3002;&#x4EC0;&#x4E48;&#x529F;&#x80FD;&#xFF1F;&#x5C31;&#x662F;&#x54B1;&#x73B0;&#x5728;&#x8BF4;&#x7684;&#x8FD9;&#x79CD;&#x3002;Compose &#x901A;&#x8FC7;&#x9AD8;&#x9636;&#x51FD;&#x6570;&#x548C;&#x9690;&#x5F0F;&#x7684; receiver &#x5B9E;&#x73B0;&#x4E86;&#x4F5C;&#x7528;&#x57DF;&#x5411;&#x5916;&#x7684;&#x9650;&#x5236;&#xFF1A;&#x53EA;&#x80FD;&#x5728;&#x67D0;&#x4E2A;&#x51FD;&#x6570;&#x8C03;&#x7528;&#x7684;&#x5927;&#x62EC;&#x53F7;&#x5185;&#x90E8;&#x53BB;&#x8BBF;&#x95EE;&#x67D0;&#x4E9B;&#x5C5E;&#x6027;&#x548C;&#x51FD;&#x6570;&#xFF0C;&#x5728;&#x5916;&#x9762;&#x662F;&#x4E0D;&#x884C;&#x7684;&#x3002;&#x5BF9;&#x5427;&#xFF1F;&#x800C; <code>DslMarker</code> &#x7684;&#x9650;&#x5236;&#x662F;&#x5411;&#x5185;&#x7684;&#xFF1A;&#x5C31;&#x7B97;&#x5728;&#x4F5C;&#x7528;&#x57DF;&#x5185;&#xFF0C;&#x5C31;&#x7B97;&#x5728;&#x5927;&#x62EC;&#x53F7;&#x7684;&#x91CC;&#x9762;&#xFF0C;&#x5982;&#x679C;&#x4F60;&#x518D;&#x5957;&#x4E00;&#x5C42;&#xFF0C;&#x90A3;&#x4E48;&#x5728;&#x8FD9;&#x4E2A;&#x66F4;&#x5185;&#x5C42;&#x7684;&#x91CC;&#x9762;&#x6211;&#x4E5F;&#x4E0D;&#x8BA9;&#x4F60;&#x7528;&#x3002;&#x4E5F;&#x5C31;&#x662F;&#x54B1;&#x770B;&#x5230;&#x7684;&#x8FD9;&#x4E2A;&#xFF0C;<code>Row()</code> &#x7684;&#x5927;&#x62EC;&#x53F7;&#x91CC;&#x53EF;&#x4EE5;&#x7528;&#xFF0C;&#x4F46;&#x91CC;&#x9762;&#x518D;&#x5957;&#x4E00;&#x5C42; <code>Column()</code> &#x4E4B;&#x540E;&#xFF0C;<code>Column()</code> &#x7684;&#x91CC;&#x9762;&#x5C31;&#x4E0D;&#x8BA9;&#x7528;&#x4E86;&#x3002;&#x8FD9;&#x79CD;&#x300C;&#x5411;&#x5185;&#x5207;&#x65AD;&#x4F5C;&#x7528;&#x57DF;&#x4F20;&#x9012;&#x300D;&#x7684;&#x5DE5;&#x4F5C;&#xFF0C;&#x5C31;&#x662F;&#x9760; <code>DslMarker</code> &#x6765;&#x5B9E;&#x73B0;&#x7684;&#x3002;</p>
<p>&#x6211;&#x4EEC;&#x53BB;&#x770B;&#x4E00;&#x4E0B; <code>Row()</code> &#x548C; <code>Column()</code> &#x6240;&#x63D0;&#x4F9B;&#x7684;&#x9690;&#x5F0F; receiver &#x7684;&#x7C7B;&#x578B;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x8FD9;&#x4E2A; <code>RowScope</code> &#x548C; <code>ColumnScope</code>&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/iPic/2024-03-22-004222.png" alt="&#x3010;&#x69A8;&#x5E72; Kotlin&#x3011;&#x628A;&#x51FD;&#x6570;&#x5F53;&#x7C7B;&#x7528;&#xFF0C;Compose &#x98CE;&#x9A9A;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x673A;&#x5236;" loading="lazy"></p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/iPic/2024-03-22-004224.png" alt="&#x3010;&#x69A8;&#x5E72; Kotlin&#x3011;&#x628A;&#x51FD;&#x6570;&#x5F53;&#x7C7B;&#x7528;&#xFF0C;Compose &#x98CE;&#x9A9A;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x673A;&#x5236;" loading="lazy"></p>
<p>&#x5B83;&#x4EEC;&#x6709;&#x4E00;&#x4E2A;&#x5171;&#x540C;&#x7684;&#x6CE8;&#x89E3;&#xFF0C;&#x53EB; <code>LayoutScopeMarker</code>&#xFF0C;&#x5BF9;&#x5427;&#xFF1F;&#x7136;&#x540E;&#x6211;&#x518D;&#x53BB;&#x770B;&#x8FD9;&#x4E2A; <code>LayoutScopeMarker</code>&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/iPic/2024-03-22-4225.png" alt="&#x3010;&#x69A8;&#x5E72; Kotlin&#x3011;&#x628A;&#x51FD;&#x6570;&#x5F53;&#x7C7B;&#x7528;&#xFF0C;Compose &#x98CE;&#x9A9A;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x673A;&#x5236;" loading="lazy"></p>
<p>&#x5C31;&#x80FD;&#x770B;&#x5230;&#x5B83;&#x662F;&#x52A0;&#x4E86;&#x8FD9;&#x4E2A;&#x53EB; <code>DslMarker</code> &#x7684;&#x6CE8;&#x89E3;&#x3002;</p>
<p>&#x901A;&#x8FC7;&#x8FD9;&#x79CD;&#x65B9;&#x5F0F;&#xFF0C;&#x6211;&#x5C31;&#x628A; <code>RowScope</code> &#x548C; <code>ColumnScope</code> &#x6807;&#x8BB0;&#x4E3A;&#x300C;&#x4E92;&#x76F8;&#x9694;&#x79BB;&#x4F5C;&#x7528;&#x57DF;&#x300D;&#x7684;&#x3002;&#x5F53;&#x6211;&#x5728; <code>RowScope</code> &#x7684;&#x91CC;&#x9762;&#x5957;&#x4E00;&#x5C42; <code>ColumnScope</code>&#xFF0C;&#x672C;&#x6765;&#x4ECE; <code>ColumnScope</code> &#x7684;&#x91CC;&#x9762;&#x5E94;&#x8BE5;&#x662F;&#x80FD;&#x8BBF;&#x95EE;&#x5230;&#x5916;&#x9762;&#x7684; <code>RowScope</code> &#x7684;&#xFF0C;&#x4F46;&#x52A0;&#x4E86;&#x8FD9;&#x4E2A; <code>LayoutScopeMarker</code> &#x4E4B;&#x540E;&#xFF0C;&#x5C31;&#x6CA1;&#x6CD5;&#x8BBF;&#x95EE;&#x4E86;&#xFF0C;<code>RowScope</code> &#x7684;&#x6240;&#x6709;&#x5C5E;&#x6027;&#x548C;&#x51FD;&#x6570;&#x88AB;&#x5F3A;&#x884C;&#x7981;&#x6B62;&#x5728;&#x5B83;&#x91CC;&#x9762;&#x7684; <code>ColumnScope</code> &#x7684;&#x5185;&#x90E8;&#x4F7F;&#x7528;&#x4E86;&#x3002;&#x2014;&#x2014;&#x540C;&#x7406;&#xFF0C;&#x5982;&#x679C; <code>ColumnScope</code> &#x7684;&#x91CC;&#x9762;&#x5957;&#x4E00;&#x4E2A; <code>RowScope</code>&#xFF0C;&#x4E5F;&#x662F;&#x4E0D;&#x80FD;&#x5F80;&#x5916;&#x8BBF;&#x95EE;&#x7684;&#x3002;</p>
<p>&#x8FD9;&#x79CD;&#x9650;&#x5236;&#xFF0C;&#x53EF;&#x4EE5;&#x9632;&#x6B62; API &#x7684;&#x6C61;&#x67D3;&#x3002;&#x5C31;&#x50CF;&#x6211;&#x4EEC;&#x4F8B;&#x5B50;&#x91CC;&#x8FD9;&#x79CD;&#xFF0C;&#x65E2;&#x7136;&#x67D0;&#x4E9B; API &#x53EA;&#x5728;&#x76F4;&#x63A5;&#x7684;&#x5185;&#x90E8;&#x6709;&#x610F;&#x4E49;&#xFF0C;&#x800C;&#x5728;&#x300C;&#x5185;&#x90E8;&#x7684;&#x5185;&#x90E8;&#x300D;&#x5C31;&#x5931;&#x53BB;&#x4E86;&#x610F;&#x4E49;&#xFF0C;&#x90A3;&#x5C31;&#x5E72;&#x8106;&#x7981;&#x7528;&#x8FD9;&#x4E9B; API &#x5728;&#x300C;&#x5185;&#x90E8;&#x7684;&#x5185;&#x90E8;&#x300D;&#x7684;&#x8BBF;&#x95EE;&#xFF0C;&#x8BA9;&#x6211;&#x4EEC;&#x4E0D;&#x8981;&#x88AB;&#x6CA1;&#x7528;&#x7684; API &#x6DF9;&#x6CA1;&#xFF0C;&#x4ECE;&#x800C;&#x51CF;&#x5C11;&#x95EE;&#x9898;&#xFF0C;&#x4E5F;&#x80FD;&#x63D0;&#x5347;&#x5F00;&#x53D1;&#x4F53;&#x9A8C;&#x3002;</p>
<p>&#x8FD9;&#x5C31;&#x662F; <code>DslMarker</code> &#x8FD9;&#x4E2A;&#x6CE8;&#x89E3;&#x7684;&#x4F5C;&#x7528;&#xFF1A;&#x5411;&#x5185;&#x7684;&#x9694;&#x79BB;&#x8BBF;&#x95EE;&#x3002;Compose &#x53EA;&#x662F;&#x4E00;&#x4E2A;&#x4F8B;&#x5B50;&#xFF0C;&#x5728;&#x5176;&#x4ED6;&#x5730;&#x65B9;&#x2014;&#x2014;&#x6BD4;&#x5982; Gradle &#x91CC;&#x2014;&#x2014;&#x4E5F;&#x6709;&#x7C7B;&#x4F3C;&#x7684;&#x4F7F;&#x7528;&#x3002;</p>
<h2 id="%E6%80%BB%E7%BB%93">&#x603B;&#x7ED3;</h2>
<p>Compose &#x662F;&#x7528; Kotlin &#x5199;&#x7684;&#xFF0C;&#x5B83;&#x4EAB;&#x53D7;&#x4E86; Kotlin &#x7684;&#x4FBF;&#x5229;&#xFF0C;&#x4F46;&#x4E5F;&#x8981;&#x627F;&#x53D7; Kotlin &#x7684;&#x9650;&#x5236;&#x3002;&#x5B83;&#x7528; Kotlin &#x7684;&#x51FD;&#x6570;&#x6765;&#x5B9E;&#x73B0;&#x4E86;&#x754C;&#x9762;&#x7EC4;&#x4EF6;&#xFF0C;&#x5C31;&#x7EE7;&#x627F;&#x4E86;&#x300C;&#x51FD;&#x6570;&#x4E0D;&#x5177;&#x5907;&#x4F5C;&#x7528;&#x57DF;&#x300D;&#x7684;&#x7F3A;&#x9677;&#x3002;&#x4F46;&#x662F;&#xFF0C;&#x901A;&#x8FC7;&#x9AD8;&#x9636;&#x51FD;&#x6570;&#x3001;&#x9690;&#x5F0F; receiver &#x548C; <code>DslMarker</code> &#x6CE8;&#x89E3;&#xFF0C;Compose &#x7528;&#x8FD9;&#x6837;&#x7EFC;&#x5408;&#x7684;&#x82B1;&#x6D3B;&#x89E3;&#x51B3;&#x4E86;&#x4F5C;&#x7528;&#x57DF;&#x7BA1;&#x7406;&#x7684;&#x95EE;&#x9898;&#xFF0C;&#x8FD8;&#x89E3;&#x51B3;&#x5F97;&#x633A;&#x597D;&#x3002;&#x5B83;&#x5B8C;&#x5168;&#x4E0D;&#x4F9D;&#x8D56; Lint &#x89C4;&#x5219;&#xFF0C;&#x76F4;&#x63A5;&#x4F9D;&#x9760; Kotlin &#x7684;&#x529F;&#x80FD;&#x548C;&#x8BED;&#x6CD5;&#x5C31;&#x5168;&#x90FD;&#x641E;&#x5B9A;&#x4E86;&#x3002;</p>
<p>&#x884C;&#xFF0C;&#x5DEE;&#x4E0D;&#x591A;&#x5C31;&#x8FD9;&#x4E9B;&#x5427;&#x3002;&#x8BB2;&#x4E86;&#x8BB2; Compose &#x7684;&#x4F5C;&#x7528;&#x57DF;&#x673A;&#x5236;&#xFF0C;&#x5E0C;&#x671B;&#x53EF;&#x4EE5;&#x5BF9;&#x5927;&#x5BB6;&#x6709;&#x5E2E;&#x52A9;&#xFF0C;&#x4E0D;&#x7BA1;&#x662F;&#x5728; Compose &#x8FD8;&#x662F; Kotlin &#x7684;&#x89D2;&#x5EA6;&#x3002;&#x5173;&#x6CE8;&#x6211;&#xFF0C;&#x4E86;&#x89E3;&#x66F4;&#x591A;&#x5F00;&#x53D1;&#x77E5;&#x8BC6;&#x548C;&#x6280;&#x80FD;&#x3002;&#x6211;&#x662F;&#x6254;&#x7269;&#x7EBF;&#xFF0C;&#x6211;&#x4E0D;&#x548C;&#x4F60;&#x6BD4;&#x9AD8;&#x4F4E;&#xFF0C;&#x6211;&#x53EA;&#x52A9;&#x4F60;&#x6210;&#x957F;&#x3002;&#x6211;&#x4EEC;&#x4E0B;&#x671F;&#x89C1;&#xFF01;</p>
<p><img src="http://image.rengwuxian.com/2023/05/08/fe402c850832a.jpg" alt="&#x3010;&#x69A8;&#x5E72; Kotlin&#x3011;&#x628A;&#x51FD;&#x6570;&#x5F53;&#x7C7B;&#x7528;&#xFF0C;Compose &#x98CE;&#x9A9A;&#x7684;&#x4F5C;&#x7528;&#x57DF;&#x673A;&#x5236;" loading="lazy"></p>
]]></content:encoded></item><item><title><![CDATA[两个 this 一起用？Kotlin 的成员扩展函数和 implicit receiver]]></title><description><![CDATA[Kotlin 的 implicit receiver 是一个我们写 Kotlin 经常会用的东西，虽然你可能都没听过这个词，但你一定用过它。Kotlin 的很多高级功能，都利用到了这个概念——比如协程，协程是重度依赖它的，非常重。所以，弄明白它是个什么、怎么用、怎么去发挥它最大的价值，对我们的能力提升是非常有帮助的。]]></description><link>https://rengwuxian.com/implicit-receiver/</link><guid isPermaLink="false">65ba086246c5fc29964cec43</guid><category><![CDATA[Kotlin]]></category><category><![CDATA[Kotlin 高阶函数]]></category><dc:creator><![CDATA[扔物线]]></dc:creator><pubDate>Tue, 27 Feb 2024 07:56:08 GMT</pubDate><media:content url="https://rengwuxian.com/content/images/2024/02/24.01-Implicit-Receiver------.jpg" medium="image"/><content:encoded><![CDATA[<h2 id="%E8%A7%86%E9%A2%91%E5%85%88%E8%A1%8C">&#x89C6;&#x9891;&#x5148;&#x884C;</h2>
<h3 id="%E5%93%94%E5%93%A9%E5%93%94%E5%93%A9">&#x54D4;&#x54E9;&#x54D4;&#x54E9;</h3>
<iframe width="100%" height="480" src="//player.bilibili.com/player.html?bvid=BV1oJ4m1t7TE&amp;page=1&amp;autoplay=0" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe>
<h3 id="youtube">YouTube</h3>
<iframe width="100%" height="480" src="https://www.youtube.com/embed/HXqodr68WHA" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
<blockquote>
<img src="https://rengwuxian.com/content/images/2024/02/24.01-Implicit-Receiver------.jpg" alt="&#x4E24;&#x4E2A; this &#x4E00;&#x8D77;&#x7528;&#xFF1F;Kotlin &#x7684;&#x6210;&#x5458;&#x6269;&#x5C55;&#x51FD;&#x6570;&#x548C; implicit receiver"><p>&#x4E0B;&#x9762;&#x662F;&#x89C6;&#x9891;&#x5185;&#x5BB9;&#x7684;&#x811A;&#x672C;&#x6587;&#x6848;&#x539F;&#x7A3F;&#x5206;&#x4EAB;&#x3002;</p>
</blockquote>
<p><img src="http://image.rengwuxian.com/2023/05/08/fe402c850832a.jpg" alt="&#x4E24;&#x4E2A; this &#x4E00;&#x8D77;&#x7528;&#xFF1F;Kotlin &#x7684;&#x6210;&#x5458;&#x6269;&#x5C55;&#x51FD;&#x6570;&#x548C; implicit receiver" loading="lazy"></p>
<h2 id="%E5%B0%8F%E5%89%A7%E5%9C%BA">&#x5C0F;&#x5267;&#x573A;</h2>
<p>&#x6731;&#x51EF;&#xFF1A;&#x300C;&#x6BD4;&#x5982;&#xFF0C;<code>user.name</code> &#x5982;&#x679C;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x5199;&#x6210; <code>name</code>&#xFF0C;&#x90A3;&#x4E48;&#x8FD9;&#x4E2A;&#x4E0D;&#x7528;&#x5199;&#x7684; <code>user</code> &#x5C31;&#x662F; Kotlin &#x7684; implicit receiver&#x3002;&#x300D;</p>
<p>&#x5BF9;&#x624B;&#xFF1A;&#x300C;&#x90A3;&#x4E0D;&#x5C31;&#x662F; <code>this</code>&#xFF1F;&#x300D;</p>
<p>&#x6731;&#x51EF;&#xFF1A;&#x300C;&#x4E0D;&#x662F;&#x4E0D;&#x662F;&#xFF0C;<code>this</code> &#x662F;&#x4E2A;&#x4F20;&#x7EDF;&#x6982;&#x5FF5;&#xFF0C;Java &#x91CC;&#x9762;&#x5C31;&#x6709;&#x3002;implicit receiver &#x662F;&#x4E2A;&#x65B0;&#x6982;&#x5FF5;&#xFF0C;&#x8FD9;&#x4FE9;&#x4E0D;&#x4E00;&#x6837;&#x3002;&#x300D;</p>
<p>&#x5BF9;&#x624B;&#xFF1A;&#x300C;&#x54EA;&#x4E0D;&#x4E00;&#x6837;&#xFF1F;&#x300D;</p>
<p>&#x6731;&#x51EF;&#xFF1A;&#x300C;&#x6BD4;&#x5982;&#x8BF4;&#x5427;&#x300D;&#xFF0C;&#xFF08;&#x9010;&#x6E10;&#x6123;&#x4F4F;&#x2026;&#x2026;&#xFF09;&#x300C;&#x54CE;&#xFF1F;&#x300D;</p>
<h2 id="%E5%BC%80%E5%9C%BA">&#x5F00;&#x573A;</h2>
<p>&#x5927;&#x5BB6;&#x597D;&#xFF0C;&#x6211;&#x662F;&#x6254;&#x7269;&#x7EBF;&#x6731;&#x51EF;&#x3002;</p>
<p>&#x4ECA;&#x5929;&#x54B1;&#x8BF4;&#x8BF4; Kotlin &#x7684; implicit receiver&#x3002;&#x8FD9;&#x662F;&#x4E00;&#x4E2A;&#x6211;&#x4EEC;&#x5199; Kotlin &#x7ECF;&#x5E38;&#x4F1A;&#x7528;&#x7684;&#x4E1C;&#x897F;&#xFF0C;&#x867D;&#x7136;&#x4F60;&#x53EF;&#x80FD;&#x90FD;&#x6CA1;&#x542C;&#x8FC7;&#x8FD9;&#x4E2A;&#x8BCD;&#xFF0C;&#x4F46;&#x4F60;&#x4E00;&#x5B9A;&#x7528;&#x8FC7;&#x5B83;&#x3002;Kotlin &#x7684;&#x5F88;&#x591A;&#x9AD8;&#x7EA7;&#x529F;&#x80FD;&#xFF0C;&#x90FD;&#x5229;&#x7528;&#x5230;&#x4E86;&#x8FD9;&#x4E2A;&#x6982;&#x5FF5;&#x2014;&#x2014;&#x6BD4;&#x5982;&#x534F;&#x7A0B;&#xFF0C;&#x534F;&#x7A0B;&#x662F;&#x91CD;&#x5EA6;&#x4F9D;&#x8D56;&#x5B83;&#x7684;&#xFF0C;&#x975E;&#x5E38;&#x91CD;&#x3002;&#x6240;&#x4EE5;&#xFF0C;&#x5F04;&#x660E;&#x767D;&#x5B83;&#x662F;&#x4E2A;&#x4EC0;&#x4E48;&#x3001;&#x600E;&#x4E48;&#x7528;&#x3001;&#x600E;&#x4E48;&#x53BB;&#x53D1;&#x6325;&#x5B83;&#x6700;&#x5927;&#x7684;&#x4EF7;&#x503C;&#xFF0C;&#x5BF9;&#x6211;&#x4EEC;&#x7684;&#x80FD;&#x529B;&#x63D0;&#x5347;&#x662F;&#x975E;&#x5E38;&#x6709;&#x5E2E;&#x52A9;&#x7684;&#x3002;</p>
<h2 id="%E5%AE%9A%E4%B9%89%EF%BC%9A%E5%85%B6%E5%AE%9E%E5%B0%B1%E6%98%AF-this">&#x5B9A;&#x4E49;&#xFF1A;&#x5176;&#x5B9E;&#x5C31;&#x662F; <code>this</code></h2>
<p>&#x6211;&#x4EEC;&#x4ECE;&#x5B83;&#x7684;&#x5B9A;&#x4E49;&#x8BF4;&#x8D77;&#x3002;&#x5B83;&#x7684;&#x540D;&#x5B57; implicit receiver&#xFF0C;&#x76F4;&#x63A5;&#x7FFB;&#x8BD1;&#x5230;&#x4E2D;&#x6587;&#x7684;&#x8BDD;&#xFF0C;&#x53EB;&#x9690;&#x5F0F;&#x7684;&#x63A5;&#x6536;&#x5668;&#x6216;&#x8005;&#x8BF4;&#x63A5;&#x6536;&#x8005;&#x3002;&#x5565;&#x53EB;&#x300C;&#x63A5;&#x6536;&#x300D;&#x554A;&#xFF1F;&#x6240;&#x8C13;&#x7684;&#x63A5;&#x6536;&#xFF0C;&#x5176;&#x5B9E;&#x6307;&#x7684;&#x5C31;&#x662F;&#x63A5;&#x6536;&#x8C03;&#x7528;&#xFF0C;&#x6216;&#x8005;&#x8BF4;&#x63A5;&#x53D7;&#x8C03;&#x7528;&#x3002;&#x63A5;&#x53D7;&#x51FD;&#x6570;&#x7684;&#x8C03;&#x7528;&#x554A;&#xFF0C;&#x63A5;&#x53D7;&#x5C5E;&#x6027;&#x7684;&#x8BBF;&#x95EE;&#x554A;&#x3002;&#x6BD4;&#x5982;&#x8FD9;&#x4E2A; <code>user.name</code>&#xFF1A;</p>
<pre><code class="language-java">user.name
</code></pre>
<p>&#x5DE6;&#x8FB9;&#x7684; <code>user</code> &#x5C31;&#x662F;&#x5B83;&#x7684; receiver&#x3002;&#x8C01;&#x7684; receiver&#xFF1F;&#x5BF9;&#x4E8E; <code>name</code> &#x7684;&#x8BBF;&#x95EE;&#x7684; receiver&#x3002;</p>
<p>&#x800C; implicit receiver&#xFF0C;&#x9690;&#x5F0F;&#x7684; receiver&#xFF0C;&#x6307;&#x7684;&#x5C31;&#x662F;&#x4E0D;&#x7528;&#x5199;&#x4E5F;&#x81EA;&#x52A8;&#x5B58;&#x5728;&#x7684; receiver&#x3002;&#x4E5F;&#x5C31;&#x662F;&#x5982;&#x679C;&#x6211;&#x628A;&#x8FD9;&#x4E2A; <code>user.</code> &#x7ED9;&#x5220;&#x4E86;&#xFF0C;&#x5B83;&#x4F9D;&#x7136;&#x80FD;&#x53D6;&#x5230;&#x67D0;&#x4E2A; <code>User</code> &#x5BF9;&#x8C61;&#x7684; <code>name</code>&#xFF1A;</p>
<pre><code class="language-java">name
</code></pre>
<p>&#x90A3;&#x4E48;&#x8FD9;&#x4E2A;&#x9690;&#x5F0F;&#x5730;&#x88AB;&#x5E94;&#x7528;&#x7684; <code>User</code> &#x5BF9;&#x8C61;&#xFF0C;&#x5C31;&#x662F;&#x5BF9;&#x8FD9;&#x4E2A; <code>name</code> &#x7684;&#x8BBF;&#x95EE;&#x7684; implicit receiver&#xFF0C;&#x9690;&#x5F0F;&#x7684; receiver&#x3002;</p>
<p>&#x8FD9;&#x5C31;&#x662F; implicit receiver &#x7684;&#x5B9A;&#x4E49;&#x3002;</p>
<p>&#x4E0D;&#x8FC7;&#xFF0C;&#x54B1;&#x628A;&#x8111;&#x5B50;&#x8F6C;&#x4E2A;&#x5F2F;&#x60F3;&#x4E00;&#x4E0B;&#xFF0C;&#x8FD9;&#x5176;&#x5B9E;&#x5C31;&#x662F;&#x5565;&#xFF1F;&#x5C31;&#x662F; <code>this</code> &#x5457;&#xFF1F;&#x5BF9;&#x5427;&#xFF1F;</p>
<p>&#x6240;&#x8C13;&#x7684; implicit receiver&#xFF0C;&#x5176;&#x5B9E;&#x5C31;&#x662F;&#x6307;&#x7684;&#x8FD9;&#x4E2A; <code>this</code>&#x3002;</p>
<p>&#x4F46; Java &#x91CC;&#x5374;&#x6CA1;&#x6709;&#x9690;&#x5F0F; receiver &#x8FD9;&#x4E2A;&#x6982;&#x5FF5;&#xFF0C;&#x8FD9;&#x662F;&#x5728; Kotlin &#x624D;&#x589E;&#x52A0;&#x4E86;&#x7684;&#x6982;&#x5FF5;&#x3002;&#x4E3A;&#x5565;&#x5462;&#xFF1F;&#x56E0;&#x4E3A; Java &#x91CC;&#x7684; <code>this</code> &#x5F88;&#x7B80;&#x5355;&#xFF0C;&#x5C31;&#x53EB; <code>this</code> &#x5C31;&#x884C;&#x4E86;&#xFF0C;&#x4E0D;&#x9700;&#x8981;&#x989D;&#x5916;&#x7684;&#x4E13;&#x7528;&#x540D;&#x5B57;&#xFF1B;&#x800C; Kotlin &#x5BF9;&#x5B83;&#x8FDB;&#x884C;&#x4E86;&#x4E00;&#x4E9B;&#x5173;&#x952E;&#x7684;&#x62D3;&#x5C55;&#xFF0C;&#x5728;&#x62D3;&#x5C55;&#x7684;&#x540C;&#x65F6;&#xFF0C;&#x4E3A;&#x4E86;&#x65B9;&#x4FBF;&#x63CF;&#x8FF0;&#x548C;&#x6C9F;&#x901A;&#xFF0C;&#x5C31;&#x4E5F;&#x7ED9;&#x5B83;&#x8D77;&#x4E86;&#x4E13;&#x5C5E;&#x7684;&#x540D;&#x5B57;&#xFF1A;implicit receiver&#x3002;</p>
<p>&#x90A3;&#x4E48;&#x5B83;&#x505A;&#x4E86;&#x4EC0;&#x4E48;&#x5173;&#x952E;&#x62D3;&#x5C55;&#x5462;&#xFF1F;&#x54B1;&#x6765;&#x4ECE;&#x5B83;&#x7684;&#x57FA;&#x672C;&#x7279;&#x6027;&#x8BF4;&#x8D77;&#x3002;</p>
<h2 id="%E5%B5%8C%E5%A5%97%E7%9A%84-implicit-receiver">&#x5D4C;&#x5957;&#x7684; implicit receiver</h2>
<p><code>this</code>&#xFF0C;&#x6216;&#x8005;&#x8BF4;&#x9690;&#x5F0F;&#x7684; receiver&#xFF0C;&#x662F;&#x53EF;&#x4EE5;&#x5D4C;&#x5957;&#x7684;&#xFF0C;&#x6BD4;&#x5982;&#x5728; Java &#x91CC;&#x6211;&#x4EEC;&#x53EF;&#x4EE5;&#x8FD9;&#x4E48;&#x5199;&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/uPic/2024/01/31/teTGqD.jpg" alt="&#x4E24;&#x4E2A; this &#x4E00;&#x8D77;&#x7528;&#xFF1F;Kotlin &#x7684;&#x6210;&#x5458;&#x6269;&#x5C55;&#x51FD;&#x6570;&#x548C; implicit receiver" loading="lazy"></p>
<p>&#x6211;&#x5728;&#x8FD9;&#x4E2A;&#x5185;&#x90E8;&#x7C7B;&#x7684;&#x91CC;&#x9762;&#xFF0C;&#x60F3;&#x8BBF;&#x95EE;&#x5185;&#x90E8;&#x7C7B;&#x548C;&#x5916;&#x90E8;&#x7C7B;&#x7684;&#x6210;&#x5458;&#x90FD;&#x662F;&#x53EF;&#x4EE5;&#x7684;&#xFF0C;&#x662F;&#x5427;&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/uPic/2024/01/31/aTNk9u.jpg" alt="&#x4E24;&#x4E2A; this &#x4E00;&#x8D77;&#x7528;&#xFF1F;Kotlin &#x7684;&#x6210;&#x5458;&#x6269;&#x5C55;&#x51FD;&#x6570;&#x548C; implicit receiver" loading="lazy"></p>
<p>&#x8FD9;&#x4E2A; <code>innerInt</code> &#x662F; <code>InnerClass</code> &#x91CC;&#x7684;&#xFF0C;&#x6240;&#x4EE5;&#x5B83;&#x7B49;&#x4EF7;&#x4E8E;&#x52A0;&#x4E0A; <code>this</code> &#x7684;&#x5199;&#x6CD5;&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/uPic/2024/01/31/2RtRKH.jpg" alt="&#x4E24;&#x4E2A; this &#x4E00;&#x8D77;&#x7528;&#xFF1F;Kotlin &#x7684;&#x6210;&#x5458;&#x6269;&#x5C55;&#x51FD;&#x6570;&#x548C; implicit receiver" loading="lazy"></p>
<p>&#x800C;&#x4E0B;&#x9762;&#x7684; <code>outerInt</code> &#x5C5E;&#x4E8E;&#x5916;&#x9762;&#x7684; <code>OuterClass</code>&#xFF0C;&#x4F46;&#x4E3A;&#x4E86;&#x907F;&#x514D;&#x6B67;&#x4E49;&#xFF0C;Java &#x4E0D;&#x5141;&#x8BB8;&#x6211;&#x4EEC;&#x76F4;&#x63A5;&#x5199; <code>this</code>&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/uPic/2024/01/31/QXhRWT.png" alt="&#x4E24;&#x4E2A; this &#x4E00;&#x8D77;&#x7528;&#xFF1F;Kotlin &#x7684;&#x6210;&#x5458;&#x6269;&#x5C55;&#x51FD;&#x6570;&#x548C; implicit receiver" loading="lazy"></p>
<p>&#x800C;&#x9700;&#x8981;&#x663E;&#x5F0F;&#x5730;&#x52A0;&#x4E0A; <code>OuterClass</code> &#x7684;&#x524D;&#x7F00;&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/uPic/2024/01/31/yXE61u.png" alt="&#x4E24;&#x4E2A; this &#x4E00;&#x8D77;&#x7528;&#xFF1F;Kotlin &#x7684;&#x6210;&#x5458;&#x6269;&#x5C55;&#x51FD;&#x6570;&#x548C; implicit receiver" loading="lazy"></p>
<p>&#x800C;&#x4E0A;&#x9762;&#x7684; <code>innerInt</code> &#x5982;&#x679C;&#x5C55;&#x5F00;&#xFF0C;&#x524D;&#x7F00;&#x662F; <code>InnerClass</code>&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/uPic/2024/01/31/kNA0mo.png" alt="&#x4E24;&#x4E2A; this &#x4E00;&#x8D77;&#x7528;&#xFF1F;Kotlin &#x7684;&#x6210;&#x5458;&#x6269;&#x5C55;&#x51FD;&#x6570;&#x548C; implicit receiver" loading="lazy"></p>
<p>&#x4E5F;&#x5C31;&#x662F;&#x8BF4;&#xFF0C;&#x5728;&#x5185;&#x90E8;&#x7C7B;&#x7684;&#x91CC;&#x9762;&#xFF0C;&#x6211;&#x662F;&#x6709;&#x5185;&#x90E8;&#x7C7B;&#x548C;&#x5916;&#x90E8;&#x7C7B;&#x7684;&#x53CC;&#x91CD; <code>this</code> &#x7684;&#x3002;&#x5BF9;&#x5427;&#xFF1F;</p>
<p>&#x53E6;&#x5916;&#xFF0C;&#x5BF9;&#x4E8E;&#x5B83;&#x4EEC;&#x540C;&#x540D;&#x7684;&#x6210;&#x5458;&#x53D8;&#x91CF;&#x6216;&#x8005;&#x65B9;&#x6CD5;&#xFF0C;&#x5982;&#x679C;&#x6211;&#x4E5F;&#x7701;&#x7565;&#x6389; <code>this</code>&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/uPic/2024/01/31/3ByeHC.png" alt="&#x4E24;&#x4E2A; this &#x4E00;&#x8D77;&#x7528;&#xFF1F;Kotlin &#x7684;&#x6210;&#x5458;&#x6269;&#x5C55;&#x51FD;&#x6570;&#x548C; implicit receiver" loading="lazy"></p>
<p>&#x62FF;&#x5230;&#x7684;&#x5C31;&#x662F;&#x5185;&#x90E8;&#x7C7B;&#x7684;&#x6210;&#x5458;&#x3002;&#x5982;&#x679C;&#x60F3;&#x62FF;&#x5916;&#x90E8;&#x7C7B;&#x7684;&#xFF0C;&#x5C31;&#x5FC5;&#x987B;&#x628A; <code>this</code> &#x5199;&#x5B8C;&#x6574;&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/uPic/2024/01/31/bX6cvd.jpg" alt="&#x4E24;&#x4E2A; this &#x4E00;&#x8D77;&#x7528;&#xFF1F;Kotlin &#x7684;&#x6210;&#x5458;&#x6269;&#x5C55;&#x51FD;&#x6570;&#x548C; implicit receiver" loading="lazy"></p>
<p>&#x5230;&#x73B0;&#x5728;&#x4E3A;&#x6B62;&#xFF0C;&#x505A; Java &#x7684;&#x57FA;&#x672C;&#x662F;&#x90FD;&#x61C2;&#x7684;&#x3002;&#x6211;&#x4EEC;&#x7EE7;&#x7EED;&#x3002;</p>
<p>&#x5728; Kotlin &#x91CC;&#xFF0C;&#x4E5F;&#x662F;&#x4E00;&#x6837;&#x7684;&#x903B;&#x8F91;&#x3002;&#x53EA;&#x4E0D;&#x8FC7;&#x5199;&#x6CD5;&#x7A0D;&#x5FAE;&#x53D8;&#x4E86;&#x4E00;&#x4E0B;&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/uPic/2024/01/31/KcY611.jpg" alt="&#x4E24;&#x4E2A; this &#x4E00;&#x8D77;&#x7528;&#xFF1F;Kotlin &#x7684;&#x6210;&#x5458;&#x6269;&#x5C55;&#x51FD;&#x6570;&#x548C; implicit receiver" loading="lazy"></p>
<p>&#x6240;&#x4EE5;&#xFF0C;Java &#x548C; Kotlin &#x4E0D;&#x4EC5;&#x90FD;&#x6709; implicit receiver&#xFF0C;&#x800C;&#x4E14;&#x4E5F;&#x90FD;&#x662F;&#x80FD;&#x5D4C;&#x5957;&#x7684;&#xFF0C;&#x540C;&#x4E00;&#x4E2A;&#x65B9;&#x6CD5;&#x91CC;&#x53EF;&#x4EE5;&#x6709;&#x591A;&#x4E2A; <code>this</code>&#xFF0C;&#x6216;&#x8005;&#x8BF4;&#x591A;&#x4E2A; implicit receiver&#x3002;&#x5BF9;&#x5427;&#xFF1F;</p>
<p>&#x8FD9;&#x662F;&#x57FA;&#x672C;&#x6982;&#x5FF5;&#x3002;</p>
<h3 id="kotlin-%E5%A2%9E%E5%8A%A0%E7%9A%84-implicit-receiver-%E5%B5%8C%E5%A5%97%EF%BC%9A%E9%80%9A%E8%BF%87%E5%87%BD%E6%95%B0%E7%9A%84-receiver-%E6%8C%87%E5%AE%9A">Kotlin &#x589E;&#x52A0;&#x7684; implicit receiver &#x5D4C;&#x5957;&#xFF1A;&#x901A;&#x8FC7;&#x51FD;&#x6570;&#x7684; receiver &#x6307;&#x5B9A;</h3>
<p>&#x7136;&#x540E;&#xFF0C;Kotlin &#x5BF9;&#x4E8E;&#x8FD9;&#x79CD;&#x5D4C;&#x5957;&#xFF0C;&#x53C8;&#x65B0;&#x589E;&#x4E86;&#x4E00;&#x7C7B;&#x573A;&#x666F;&#x2014;&#x2014;&#x54B1;&#x521A;&#x624D;&#x770B;&#x7684;&#x662F;&#x901A;&#x8FC7;&#x5185;&#x90E8;&#x7C7B;&#x6765;&#x5D4C;&#x5957;&#x662F;&#x5427;&#xFF1F;Kotlin &#x8BA9;&#x6211;&#x4EEC;&#x8FD8;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x901A;&#x8FC7;&#x51FD;&#x6570;&#x6765;&#x5D4C;&#x5957;&#x65B0;&#x7684; <code>this</code>&#x3002;&#x6BD4;&#x5982;&#x4F60;&#x6709;&#x4E00;&#x4E2A;&#x5728;&#x7C7B;&#x578B;&#x5185;&#x90E8;&#x58F0;&#x660E;&#x7684;&#x6269;&#x5C55;&#x51FD;&#x6570;&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/uPic/2024/01/31/g6a7tT.jpg" alt="&#x4E24;&#x4E2A; this &#x4E00;&#x8D77;&#x7528;&#xFF1F;Kotlin &#x7684;&#x6210;&#x5458;&#x6269;&#x5C55;&#x51FD;&#x6570;&#x548C; implicit receiver" loading="lazy"></p>
<p>&#x2014;&#x2014;&#x8FD9;&#x79CD;&#x51FD;&#x6570;&#x53EB; member extension function&#xFF0C;&#x6210;&#x5458;&#x6269;&#x5C55;&#x51FD;&#x6570;&#xFF0C;&#x5176;&#x5B9E;&#x5C31;&#x662F;&#x5B57;&#x9762;&#x610F;&#x601D;&#xFF1A;&#x5B83;&#x65E2;&#x662F;&#x6210;&#x5458;&#x51FD;&#x6570;&#x53C8;&#x662F;&#x6269;&#x5C55;&#x51FD;&#x6570;&#xFF0C;&#x5BF9;&#x5427;&#xFF1F;</p>
<p>&#x8FD9;&#x79CD;&#x300C;&#x6210;&#x5458;&#x6269;&#x5C55;&#x51FD;&#x6570;&#x300D;&#x6709;&#x4E00;&#x4E2A;&#x95EE;&#x9898;&#xFF1A;&#x4E00;&#x65B9;&#x9762;&#xFF0C;&#x56E0;&#x4E3A;&#x5B83;&#x662F; <code>Int</code> &#x7684;&#x6269;&#x5C55;&#x51FD;&#x6570;&#xFF0C;&#x6240;&#x4EE5;&#x4F60;&#x9700;&#x8981;&#x5BF9; <code>Int</code> &#x7C7B;&#x578B;&#x7684;&#x5BF9;&#x8C61;&#x624D;&#x80FD;&#x8C03;&#x7528;&#x5B83;&#xFF1B;&#x4F46;&#x540C;&#x65F6;&#xFF0C;&#x5B83;&#x4E5F;&#x662F; <code>IntMultiplier</code> &#x7684;&#x6210;&#x5458;&#x51FD;&#x6570;&#xFF0C;&#x6240;&#x4EE5;&#x4F60;&#x8FD8;&#x8981;&#x6C42;&#x4F60;&#x5BF9; <code>IntMultiplier</code> &#x5BF9;&#x8C61;&#x8C03;&#x7528;&#x5B83;&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/uPic/2024/01/31/VPT6wc.jpg" alt="&#x4E24;&#x4E2A; this &#x4E00;&#x8D77;&#x7528;&#xFF1F;Kotlin &#x7684;&#x6210;&#x5458;&#x6269;&#x5C55;&#x51FD;&#x6570;&#x548C; implicit receiver" loading="lazy"></p>
<p>&#x4E5F;&#x5C31;&#x662F;&#x8BF4;&#xFF0C;&#x8FD9;&#x91CC;&#x9700;&#x8981;&#x7684;&#x662F;&#x4E2A;&#x53CC;&#x91CD; receiver&#xFF1A;&#x65E2;&#x8981;&#x8FD9;&#x4E2A;&#x76F4;&#x63A5;&#x7684; <code>Int</code>&#xFF0C;&#x53C8;&#x8981;&#x90A3;&#x4E2A;&#x5916;&#x90E8;&#x7684; <code>IntMultiplier</code>&#xFF0C;&#x7F3A;&#x4E00;&#x4E0D;&#x53EF;&#x3002;&#x2014;&#x2014;&#x90A3;&#x6211;&#x5230;&#x5E95;&#x5BF9;&#x8C01;&#x8C03;&#x7528;&#xFF1F;</p>
<p>Java &#x6CA1;&#x6709;&#x6269;&#x5C55;&#x51FD;&#x6570;&#x7684;&#x6982;&#x5FF5;&#xFF0C;&#x6240;&#x4EE5;&#x4E0D;&#x5B58;&#x5728;&#x8FD9;&#x79CD;&#x5199;&#x6CD5;&#xFF0C;&#x4F46; Kotlin &#x662F;&#x53EF;&#x4EE5;&#x7684;&#x3002;Kotlin &#x63D0;&#x4F9B;&#x7684;&#x89E3;&#x6CD5;&#x662F;&#xFF0C;&#x4F60;&#x4E13;&#x95E8;&#x521B;&#x5EFA;&#x4E00;&#x4E2A;&#x51FD;&#x6570;&#xFF0C;&#x5E76;&#x7ED9;&#x5B83;&#x8BBE;&#x7F6E;&#x4E00;&#x4E2A;&#x51FD;&#x6570;&#x7C7B;&#x578B;&#x7684;&#x53C2;&#x6570;&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/uPic/2024/01/31/VS5VtZ.jpg" alt="&#x4E24;&#x4E2A; this &#x4E00;&#x8D77;&#x7528;&#xFF1F;Kotlin &#x7684;&#x6210;&#x5458;&#x6269;&#x5C55;&#x51FD;&#x6570;&#x548C; implicit receiver" loading="lazy"></p>
<p>&#x51FD;&#x6570;&#x4E0D;&#x7528;&#x505A;&#x4EC0;&#x4E48;&#x7279;&#x522B;&#x7684;&#x4E8B;&#xFF0C;&#x5173;&#x952E;&#x662F;&#x6267;&#x884C;&#x4E00;&#x4E0B;&#x5B83;&#x7684;&#x90A3;&#x4E2A;&#x51FD;&#x6570;&#x7C7B;&#x578B;&#x7684;&#x53C2;&#x6570;&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/uPic/2024/01/31/7xVu5M.jpg" alt="&#x4E24;&#x4E2A; this &#x4E00;&#x8D77;&#x7528;&#xFF1F;Kotlin &#x7684;&#x6210;&#x5458;&#x6269;&#x5C55;&#x51FD;&#x6570;&#x548C; implicit receiver" loading="lazy"></p>
<p>&#x53E6;&#x5916;&#xFF0C;&#x4F60;&#x8981;&#x7ED9;&#x8FD9;&#x4E2A;&#x51FD;&#x6570;&#x7C7B;&#x578B;&#x7684;&#x53C2;&#x6570;&#xFF0C;&#x8BBE;&#x7F6E;&#x4E00;&#x4E2A; receiver &#x7684;&#x7C7B;&#x578B;&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/uPic/2024/02/29/v3BY3V.png" alt="&#x4E24;&#x4E2A; this &#x4E00;&#x8D77;&#x7528;&#xFF1F;Kotlin &#x7684;&#x6210;&#x5458;&#x6269;&#x5C55;&#x51FD;&#x6570;&#x548C; implicit receiver" loading="lazy"></p>
<p>&#x8FD9;&#x4E48;&#x4E00;&#x6307;&#x5B9A;&#xFF0C;&#x5C31;&#x628A;&#x53C2;&#x6570;&#x7684;&#x51FD;&#x6570;&#x4F53;&#x5185;&#x90E8;&#x2014;&#x2014;&#x6CE8;&#x610F;&#xFF0C;&#x662F;&#x8FD9;&#x4E2A; <code>block</code> &#x7684;&#x51FD;&#x6570;&#x4F53;&#xFF0C;&#x4E0D;&#x662F;&#x5916;&#x90E8;&#x51FD;&#x6570;&#x672C;&#x8EAB;&#x7684;&#x51FD;&#x6570;&#x4F53;&#x2014;&#x2014;&#x5728;&#x5B83;&#x5185;&#x90E8;&#x5F3A;&#x884C;&#x5B89;&#x63D2;&#x4E86;&#x4E00;&#x4E2A;&#x9690;&#x5F0F;&#x7684; receiver&#x3002;&#x6362;&#x53E5;&#x8BDD;&#x8BF4;&#xFF0C;&#x6211;&#x5728;&#x8C03;&#x7528;&#x8FD9;&#x4E2A;&#x5916;&#x90E8;&#x51FD;&#x6570;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x5B83;&#x7684;&#x51FD;&#x6570;&#x7C7B;&#x578B;&#x7684;&#x53C2;&#x6570;&#x7684;&#x5927;&#x62EC;&#x53F7;&#x91CC;&#x5C31;&#x6709;&#x4E00;&#x4E2A; <code>IntMultiplier</code> &#x7C7B;&#x578B;&#x7684; <code>this</code> &#x4E86;&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/uPic/2024/01/31/7dxanX.jpg" alt="&#x4E24;&#x4E2A; this &#x4E00;&#x8D77;&#x7528;&#xFF1F;Kotlin &#x7684;&#x6210;&#x5458;&#x6269;&#x5C55;&#x51FD;&#x6570;&#x548C; implicit receiver" loading="lazy"></p>
<p>&#x90A3;&#x4E48;&#xFF0C;&#x6211;&#x5728;&#x91CC;&#x9762;&#x5C31;&#x53EF;&#x4EE5;&#x8FD9;&#x4E48;&#x5199;&#x4E86;&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/uPic/2024/01/31/l0C5eA.jpg" alt="&#x4E24;&#x4E2A; this &#x4E00;&#x8D77;&#x7528;&#xFF1F;Kotlin &#x7684;&#x6210;&#x5458;&#x6269;&#x5C55;&#x51FD;&#x6570;&#x548C; implicit receiver" loading="lazy"></p>
<p>&#x54CE;&#xFF0C;&#x5C31;&#x8FD9;&#x4E48;&#x901A;&#x8FC7;&#x7ED9;&#x53C2;&#x6570;&#x8BBE;&#x7F6E; receiver &#x7684;&#x65B9;&#x5F0F;&#xFF0C;&#x6211;&#x5F3A;&#x884C;&#x63D2;&#x4E86;&#x4E00;&#x5C42; <code>this</code>&#xFF0C;&#x4E0D;&#x7528;&#x5199;&#x5185;&#x90E8;&#x7C7B;&#x4E5F;&#x5B9E;&#x73B0;&#x4E86;&#x8FD9;&#x79CD;&#x300C;&#x53CC;&#x91CD; <code>this</code>&#x300D;&#x7684;&#x73AF;&#x5883;&#xFF0C;&#x662F;&#x5427;&#xFF1F;</p>
<p>&#x4F46;&#x662F;&#x9700;&#x8981;&#x6CE8;&#x610F;&#xFF0C;&#x8FD9;&#x4E2A; <code>this</code> &#x5B83;&#x4E5F;&#x4E0D;&#x662F;&#x4ECE;&#x7A7A;&#x6C14;&#x91CC;&#x8E66;&#x51FA;&#x6765;&#x7684;&#xFF1A;&#x5F53;&#x6211;&#x4EEC;&#x8FD9;&#x4E48;&#x58F0;&#x660E; <code>block</code> &#x53C2;&#x6570;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x5C31;&#x53EA;&#x6709;&#x5BF9; <code>IntMultiplier</code> &#x7C7B;&#x578B;&#x7684;&#x5BF9;&#x8C61;&#x624D;&#x80FD;&#x8C03;&#x7528;&#x5B83;&#x3002;&#x4E0D;&#x8FC7;&#x54B1;&#x8FD9;&#x4E2A;&#x4F8B;&#x5B50;&#x91CC;&#xFF0C;&#x5916;&#x90E8;&#x51FD;&#x6570;&#x6B63;&#x597D;&#x4E5F;&#x662F;&#x5728; <code>IntMultiplier</code> &#x7C7B;&#x91CC;&#x58F0;&#x660E;&#x7684;&#xFF0C;&#x6240;&#x4EE5;&#x76F4;&#x63A5;&#x5199;&#x5C31;&#x884C;&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/uPic/2024/01/31/7Tpzd3.jpg" alt="&#x4E24;&#x4E2A; this &#x4E00;&#x8D77;&#x7528;&#xFF1F;Kotlin &#x7684;&#x6210;&#x5458;&#x6269;&#x5C55;&#x51FD;&#x6570;&#x548C; implicit receiver" loading="lazy"></p>
<p>&#x4F46;&#x8FD9;&#x79CD;&#x7ED3;&#x6784;&#x5E76;&#x4E0D;&#x662F;&#x5FC5;&#x987B;&#x7684;&#xFF0C;&#x4F60;&#x4E5F;&#x53EF;&#x4EE5;&#x7528;&#x4F60;&#x80FD;&#x60F3;&#x5230;&#x7684;&#x5176;&#x4ED6;&#x65B9;&#x5F0F;&#x53BB;&#x5199;&#x8FD9;&#x79CD;&#x5B89;&#x63D2;&#x3002;&#x6BD4;&#x5982;&#x6211;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x7ED9; <code>Int</code> &#x5199;&#x4E2A;&#x6269;&#x5C55;&#x51FD;&#x6570;&#xFF0C;&#x53BB;&#x63D2;&#x5165;&#x4E00;&#x4E2A; <code>Int</code> &#x7C7B;&#x578B;&#x7684; <code>this</code>&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/uPic/2024/01/31/tX1erz.jpg" alt="&#x4E24;&#x4E2A; this &#x4E00;&#x8D77;&#x7528;&#xFF1F;Kotlin &#x7684;&#x6210;&#x5458;&#x6269;&#x5C55;&#x51FD;&#x6570;&#x548C; implicit receiver" loading="lazy"></p>
<p>&#x90A3;&#x4E48;&#x6211;&#x5C31;&#x80FD;&#x628A;&#x91CC;&#x9762;&#x8FD9;&#x5C42; <code>this</code> &#x4E5F;&#x505A;&#x6210;&#x9690;&#x5F0F;&#x7684;&#x4E86;&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/uPic/2024/01/31/1JJBU7.jpg" alt="&#x4E24;&#x4E2A; this &#x4E00;&#x8D77;&#x7528;&#xFF1F;Kotlin &#x7684;&#x6210;&#x5458;&#x6269;&#x5C55;&#x51FD;&#x6570;&#x548C; implicit receiver" loading="lazy"></p>
<p>&#x6216;&#x8005;&#x6211;&#x5982;&#x679C;&#x4E0D;&#x60F3;&#x5199;&#x6210;&#x6269;&#x5C55;&#x51FD;&#x6570;&#xFF0C;&#x6211;&#x60F3;&#x628A; <code>Int</code> &#x5BF9;&#x8C61;&#x653E;&#x5728;&#x53C2;&#x6570;&#x91CC;&#x6765;&#x63D0;&#x4F9B;&#xFF0C;&#x4E5F;&#x662F;&#x884C;&#x7684;&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/uPic/2024/01/31/ohSo92.jpg" alt="&#x4E24;&#x4E2A; this &#x4E00;&#x8D77;&#x7528;&#xFF1F;Kotlin &#x7684;&#x6210;&#x5458;&#x6269;&#x5C55;&#x51FD;&#x6570;&#x548C; implicit receiver" loading="lazy"></p>
<p>&#x53EA;&#x8981;&#x628A;&#x8C03;&#x7528;&#x7684;&#x683C;&#x5F0F;&#x5BF9;&#x5E94;&#x5730;&#x8C03;&#x6574;&#x4E00;&#x4E0B;&#x5C31;&#x53EF;&#x4EE5;&#x4E86;&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/uPic/2024/01/31/GpEKSi.jpg" alt="&#x4E24;&#x4E2A; this &#x4E00;&#x8D77;&#x7528;&#xFF1F;Kotlin &#x7684;&#x6210;&#x5458;&#x6269;&#x5C55;&#x51FD;&#x6570;&#x548C; implicit receiver" loading="lazy"></p>
<p>&#x5199;&#x6CD5;&#x591A;&#x79CD;&#x591A;&#x6837;&#xFF0C;&#x4F46;&#x5957;&#x8DEF;&#x662F;&#x4E00;&#x6837;&#x7684;&#xFF0C;&#x5BF9;&#x5427;&#xFF1F;</p>
<p>&#x901A;&#x8FC7;&#x8FD9;&#x79CD;&#x5199;&#x6CD5;&#xFF0C;&#x6211;&#x4EEC;&#x5C31;&#x53EF;&#x4EE5;&#x4EFB;&#x610F;&#x5730;&#x5F80;&#x4EE3;&#x7801;&#x91CC;&#x63D2;&#x5165;&#x6211;&#x4EEC;&#x6307;&#x5B9A;&#x7684; implicit receiver&#xFF0C;&#x6216;&#x8005;&#x8BF4;&#x6307;&#x5B9A;&#x7684; <code>this</code>&#xFF0C;&#x53BB;&#x5E94;&#x5BF9;&#x300C;&#x591A;&#x4E2A; <code>this</code>&#x300D;&#x7684;&#x9700;&#x6C42;&#x573A;&#x666F;&#x4E86;&#x3002;</p>
<p>&#x800C;&#x4E14;&#x5B9E;&#x9645;&#x4E0A;&#xFF0C;Kotlin &#x5DF2;&#x7ECF;&#x7ED9;&#x6211;&#x4EEC;&#x63D0;&#x4F9B;&#x4E86;&#x4E00;&#x5957;&#x901A;&#x7528;&#x7684;&#x51FD;&#x6570;&#x3002;&#x6BD4;&#x5982;&#x6211;&#x4F8B;&#x5B50;&#x91CC;&#x7684;&#x4EE3;&#x7801;&#xFF0C;&#x5176;&#x5B9E;&#x53EF;&#x4EE5;&#x76F4;&#x63A5;&#x6362;&#x6210; <code>apply()</code> &#x548C; <code>with()</code>&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/uPic/2024/01/31/9PnOzD.jpg" alt="&#x4E24;&#x4E2A; this &#x4E00;&#x8D77;&#x7528;&#xFF1F;Kotlin &#x7684;&#x6210;&#x5458;&#x6269;&#x5C55;&#x51FD;&#x6570;&#x548C; implicit receiver" loading="lazy"></p>
<p>&#x8FD9;&#x4E24;&#x4E2A;&#x51FD;&#x6570; &#xFF0C;&#x5199; Kotlin &#x7684;&#x5E94;&#x8BE5;&#x5F88;&#x591A;&#x4EBA;&#x90FD;&#x7528;&#x8FC7;&#x5427;&#xFF1F;&#x4F46;&#x662F;&#xFF0C;&#x4E5F;&#x6709;&#x5F88;&#x591A;&#x4EBA;&#x5E76;&#x4E0D;&#x660E;&#x767D;&#x5B83;&#x672C;&#x8D28;&#x4E0A;&#x662F;&#x600E;&#x4E48;&#x4E00;&#x56DE;&#x4E8B;&#x3002;&#x5B9E;&#x9645;&#x4E0A;&#xFF0C;&#x5B83;&#x5C31;&#x662F;&#x50CF;&#x6211;&#x521A;&#x624D;&#x8BF4;&#x7684;&#x90A3;&#x6837;&#xFF0C;&#x901A;&#x8FC7;&#x51FD;&#x6570;&#x7C7B;&#x578B;&#x7684;&#x53C2;&#x6570;&#x6765;&#x5F3A;&#x884C;&#x63D2;&#x5165;&#x4E86;&#x4E00;&#x5C42; <code>this</code>&#x3002;</p>
<p>&#x4E0D;&#x7BA1;&#x662F;&#x4F7F;&#x7528; Kotlin &#x73B0;&#x6210;&#x7684;&#x51FD;&#x6570;&#x8FD8;&#x662F;&#x6211;&#x4EEC;&#x81EA;&#x5DF1;&#x6765;&#x5B9E;&#x73B0;&#xFF0C;Kotlin &#x5141;&#x8BB8;&#x6211;&#x4EEC;&#x901A;&#x8FC7;&#x8FD9;&#x79CD;&#x300C;&#x6307;&#x5B9A;&#x300D;&#x7684;&#x65B9;&#x5F0F;&#x6765;&#x624B;&#x52A8;&#x5B89;&#x63D2;&#x65B0;&#x7684; <code>this</code> &#x5230;&#x4EE3;&#x7801;&#x91CC;&#xFF0C;&#x800C;&#x4E0D;&#x7528;&#x975E;&#x5F97;&#x7528;&#x5185;&#x90E8;&#x7C7B;&#x624D;&#x80FD;&#x5B9E;&#x73B0;&#x3002;&#x4E4B;&#x524D; Java &#x91CC;&#x5D4C;&#x5957;&#x7684; <code>this</code>&#xFF0C;&#x5BF9;&#x5E94;&#x7684;&#x5168;&#x90FD;&#x662F;&#x5D4C;&#x5957;&#x7684;&#x7C7B;&#x578B;&#x7ED3;&#x6784;&#xFF1B;&#x800C; Kotlin &#x5BF9;&#x80FD;&#x529B;&#x8FD9;&#x4E48;&#x4E00;&#x6269;&#x5145;&#xFF0C;<code>this</code> &#x7684;&#x5D4C;&#x5957;&#x5C31;&#x53D8;&#x5F97;&#x975E;&#x5E38;&#x81EA;&#x7531;&#x4E86;&#x3002;&#x6240;&#x4EE5;&#xFF0C;Kotlin &#x5F15;&#x5165;&#x4E86; implicit receiver &#x7684;&#x6982;&#x5FF5;&#xFF0C;&#x6765;&#x65B9;&#x4FBF;&#x6211;&#x4EEC;&#x5BF9;&#x8FD9;&#x79CD;&#x6269;&#x5145;&#x4E86;&#x7684;&#x573A;&#x666F;&#x8FDB;&#x884C;&#x63CF;&#x8FF0;&#x548C;&#x6C9F;&#x901A;&#x3002;&#x800C;&#x672C;&#x8D28;&#x4E0A;&#xFF0C;&#x6240;&#x8C13;&#x7684; implicit receiver&#xFF0C;&#x6307;&#x7684;&#x4F9D;&#x7136;&#x662F;&#x90A3;&#x4E9B; <code>this</code>&#x2014;&#x2014;&#x90A3;&#x4E9B;&#x4E0D;&#x7528;&#x5199;&#x7684; receiver&#x2014;&#x2014;&#x8FD9;&#x4E2A;&#x672C;&#x8D28;&#x662F;&#x6CA1;&#x6709;&#x53D8;&#x7684;&#x3002;</p>
<h2 id="%E5%8D%8F%E7%A8%8B%E9%87%8C%E7%9A%84%E5%BA%94%E7%94%A8">&#x534F;&#x7A0B;&#x91CC;&#x7684;&#x5E94;&#x7528;</h2>
<p>Kotlin &#x7684;&#x5B98;&#x65B9;&#x4EE3;&#x7801;&#xFF0C;&#x4EE5;&#x53CA;&#x5F88;&#x591A;&#x7B2C;&#x4E09;&#x65B9;&#x5E93;&#xFF0C;&#x90FD;&#x91CD;&#x5EA6;&#x5730;&#x4F9D;&#x8D56;&#x8FD9;&#x4E2A;&#x53EB;&#x505A; implicit receiver &#x7684;&#x4E1C;&#x897F;&#x3002;&#x867D;&#x7136;&#x6211;&#x4EEC;&#x53EF;&#x4EE5;&#x8BF4;&#x300C;&#x5B83;&#x4E0D;&#x5C31;&#x662F; <code>this</code> &#x561B;&#x300D;&#xFF0C;&#x4F46;&#x5173;&#x952E;&#x662F;&#xFF0C;&#x5B83;&#x7ED9;&#x6211;&#x4EEC;&#x5E26;&#x6765;&#x4E86;&#x5F88;&#x5927;&#x7684;&#x65B9;&#x4FBF;&#xFF0C;&#x600E;&#x4E48;&#x53EB;&#x5176;&#x5B9E;&#x662F;&#x6B21;&#x8981;&#x7684;&#x3002;&#x968F;&#x4FBF;&#x4E3E;&#x4E2A;&#x4F8B;&#x5B50;&#xFF0C;&#x6211;&#x4EEC;&#x77E5;&#x9053;&#x534F;&#x7A0B;&#x7684;&#x542F;&#x52A8;&#x662F;&#x4E00;&#x5B9A;&#x8981;&#x7528; <code>CoroutineScope</code> &#x624D;&#x884C;&#x7684;&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/uPic/2024/01/31/FM05XC.jpg" alt="&#x4E24;&#x4E2A; this &#x4E00;&#x8D77;&#x7528;&#xFF1F;Kotlin &#x7684;&#x6210;&#x5458;&#x6269;&#x5C55;&#x51FD;&#x6570;&#x548C; implicit receiver" loading="lazy"></p>
<p>&#x4F46;&#x662F;&#x4E3A;&#x4EC0;&#x4E48;&#x5728;&#x534F;&#x7A0B;&#x7684;&#x5185;&#x90E8;&#x518D;&#x542F;&#x52A8;&#x65B0;&#x7684;&#x534F;&#x7A0B;&#xFF0C;&#x5C31;&#x4E0D;&#x7528;&#x5199; <code>CoroutineScope</code> &#x4E86;&#xFF1F;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/uPic/2024/01/31/804653.jpg" alt="&#x4E24;&#x4E2A; this &#x4E00;&#x8D77;&#x7528;&#xFF1F;Kotlin &#x7684;&#x6210;&#x5458;&#x6269;&#x5C55;&#x51FD;&#x6570;&#x548C; implicit receiver" loading="lazy"></p>
<p>&#x56E0;&#x4E3A;&#x5B83;&#x6709;&#x4E00;&#x4E2A;&#x9690;&#x5F0F;&#x7684; <code>CoroutineScope</code> &#x4F5C;&#x4E3A; <code>this</code> &#x88AB;&#x63D0;&#x4F9B;&#x4E86;&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/uPic/2024/01/31/xPdX0J.jpg" alt="&#x4E24;&#x4E2A; this &#x4E00;&#x8D77;&#x7528;&#xFF1F;Kotlin &#x7684;&#x6210;&#x5458;&#x6269;&#x5C55;&#x51FD;&#x6570;&#x548C; implicit receiver" loading="lazy"></p>
<p>&#x600E;&#x4E48;&#x63D0;&#x4F9B;&#x7684;&#xFF1F;&#x8FD8;&#x662F;&#x4E00;&#x6837;&#x7684;&#x65B9;&#x6CD5;&#xFF1A;</p>
<p><img src="https://hen-coder.oss-cn-beijing.aliyuncs.com/uPic/2024/01/31/oIgj1h.jpg" alt="&#x4E24;&#x4E2A; this &#x4E00;&#x8D77;&#x7528;&#xFF1F;Kotlin &#x7684;&#x6210;&#x5458;&#x6269;&#x5C55;&#x51FD;&#x6570;&#x548C; implicit receiver" loading="lazy"></p>
<h2 id="%E6%80%BB%E7%BB%93">&#x603B;&#x7ED3;</h2>
<p>&#x5176;&#x4ED6;&#x5F88;&#x591A;&#x5B98;&#x65B9;&#x6E90;&#x7801;&#x4EE5;&#x53CA;&#x7B2C;&#x4E09;&#x65B9;&#x5E93;&#xFF0C;&#x90FD;&#x6709;&#x7C7B;&#x4F3C;&#x7684;&#x5E94;&#x7528;&#xFF0C;&#x800C;&#x6211;&#x4EEC;&#x81EA;&#x5DF1;&#x4E5F;&#x53EF;&#x4EE5;&#x5728;&#x4EE3;&#x7801;&#x91CC;&#x7528;&#x8FD9;&#x6837;&#x7684;&#x5199;&#x6CD5;&#x53BB;&#x5B89;&#x63D2;&#x65B0;&#x7684; <code>this</code> &#x5C42;&#x7EA7;&#xFF0C;&#x6216;&#x8005;&#x8BF4;&#x2014;&#x2014;&#x5B89;&#x63D2; implicit receiver&#xFF0C;&#x9690;&#x5F0F;&#x7684; receiver&#x3002;&#x770B;&#x8D77;&#x6765;&#x597D;&#x50CF;&#x5F88;&#x590D;&#x6742;&#xFF0C;&#x4F46;&#x5F53;&#x4F60;&#x660E;&#x767D;&#x5B83;&#x7684;&#x8FD9;&#x4E9B;&#x672C;&#x8D28;&#x903B;&#x8F91;&#xFF0C;&#x5199;&#x8D77;&#x6765;&#x5C31;&#x5F88;&#x7B80;&#x5355;&#x4E86;&#x3002;</p>
<p>&#x8BD5;&#x4E00;&#x4E0B;&#xFF1F;&#x8BD5;&#x4E00;&#x4E0B;&#x4F60;&#x5C31;&#x4F1A;&#x53D1;&#x73B0;&#xFF0C;&#x771F;&#x7684;&#x4E0D;&#x96BE;&#x3002;</p>
<p>&#x597D;&#x4ECA;&#x5929;&#x5185;&#x5BB9;&#x5C31;&#x5230;&#x8FD9;&#x91CC;&#x3002;&#x5173;&#x6CE8;&#x6211;&#xFF0C;&#x4E86;&#x89E3;&#x66F4;&#x591A;&#x5F00;&#x53D1;&#x77E5;&#x8BC6;&#x548C;&#x6280;&#x80FD;&#x3002;&#x6211;&#x662F;&#x6254;&#x7269;&#x7EBF;&#xFF0C;&#x6211;&#x4E0D;&#x548C;&#x4F60;&#x6BD4;&#x9AD8;&#x4F4E;&#xFF0C;&#x6211;&#x53EA;&#x52A9;&#x4F60;&#x6210;&#x957F;&#x3002;&#x6211;&#x4EEC;&#x4E0B;&#x671F;&#x89C1;&#xFF01;</p>
]]></content:encoded></item><item><title><![CDATA[类声明的右边也能写 by？Kotlin 的接口委托是这么用的]]></title><description><![CDATA[Kotlin 的 by 关键字，我们用得比较多，但通常是用在变量上，例如 by lazy。而事实上，它还能用在类声明里，写在接口名的右边，这叫作「接口委托」，是个一样很实用的特性。]]></description><link>https://rengwuxian.com/delegation/</link><guid isPermaLink="false">658a6efe3dadb823524ad0e6</guid><category><![CDATA[Kotlin]]></category><dc:creator><![CDATA[扔物线]]></dc:creator><pubDate>Thu, 28 Dec 2023 01:52:00 GMT</pubDate><media:content url="https://rengwuxian.com/content/images/2023/12/10871703576779_.pic.jpg" medium="image"/><content:encoded><![CDATA[<h1 id="%E8%A7%86%E9%A2%91%E5%85%88%E8%A1%8C">&#x89C6;&#x9891;&#x5148;&#x884C;</h1>
<h2 id="%E5%93%94%E5%93%A9%E5%93%94%E5%93%A9">&#x54D4;&#x54E9;&#x54D4;&#x54E9;</h2>
<iframe width="100%" height="480" src="//player.bilibili.com/player.html?bvid=BV1tM411D7Sz&amp;cid=1328311580&amp;p=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe>
<h2 id="youtube">YouTube</h2>
<iframe width="100%" height="480" src="https://www.youtube.com/embed/vQiVV0wZqxA?si=N12SN6IogD3m3pd4" title="Unit &#x4E3A;&#x5565;&#x8FD8;&#x80FD;&#x5F53;&#x51FD;&#x6570;&#x53C2;&#x6570;&#xFF1F;&#x9762;&#x5411;&#x5B9E;&#x7528;&#x7684; Kotlin Unit &#x8BE6;&#x89E3;" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
<blockquote>
<img src="https://rengwuxian.com/content/images/2023/12/10871703576779_.pic.jpg" alt="&#x7C7B;&#x58F0;&#x660E;&#x7684;&#x53F3;&#x8FB9;&#x4E5F;&#x80FD;&#x5199; by&#xFF1F;Kotlin &#x7684;&#x63A5;&#x53E3;&#x59D4;&#x6258;&#x662F;&#x8FD9;&#x4E48;&#x7528;&#x7684;"><p>&#x4E0B;&#x9762;&#x662F;&#x89C6;&#x9891;&#x5185;&#x5BB9;&#x7684;&#x811A;&#x672C;&#x6587;&#x6848;&#x539F;&#x7A3F;&#x5206;&#x4EAB;&#x3002;</p>
</blockquote>
<p><img src="http://image.rengwuxian.com/2023/12/27/210647777b3c9.jpg" alt="&#x7C7B;&#x58F0;&#x660E;&#x7684;&#x53F3;&#x8FB9;&#x4E5F;&#x80FD;&#x5199; by&#xFF1F;Kotlin &#x7684;&#x63A5;&#x53E3;&#x59D4;&#x6258;&#x662F;&#x8FD9;&#x4E48;&#x7528;&#x7684;" loading="lazy"></p>
<h2 id="%E6%96%87%E6%A1%88%E5%8E%9F%E7%A8%BF">&#x6587;&#x6848;&#x539F;&#x7A3F;</h2>
<p>&#x5927;&#x5BB6;&#x597D;&#xFF0C;&#x6211;&#x662F;&#x6254;&#x7269;&#x7EBF;&#x6731;&#x51EF;&#x3002;<br>
Kotlin &#x7684; <code>by</code> &#x5173;&#x952E;&#x5B57;&#xFF0C;&#x6211;&#x4EEC;&#x5E73;&#x65F6;&#x7528;&#x5F97;&#x633A;&#x591A;&#x7684;&#xFF0C;&#x6BD4;&#x5982;&#x7528; <code>by lazy</code> &#x6765;&#x8BBE;&#x7F6E;&#x5C5E;&#x6027;&#x7684;&#x61D2;&#x52A0;&#x8F7D;&#xFF1A;</p>
<pre><code class="language-kotlin">val lazyUser by lazy {
    User()
}
</code></pre>
<p>&#x8FD9;&#x79CD;&#x5199;&#x6CD5;&#x53EB;&#x300C;&#x5C5E;&#x6027;&#x59D4;&#x6258;&#x300D;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x628A;&#x5C5E;&#x6027;&#x7684;&#x8BFB;&#x5199;&#x64CD;&#x4F5C;&#x59D4;&#x6258;&#x7ED9;&#x53E6;&#x4E00;&#x4E2A;&#x5BF9;&#x8C61;&#x3002;<br>
&#x9664;&#x4E86;&#x8FD9;&#x79CD;&#x5199;&#x6CD5;&#xFF0C;<code>by</code> &#x5176;&#x5B9E;&#x8FD8;&#x80FD;&#x5199;&#x5728;&#x7C7B;&#x58F0;&#x660E;&#x91CC;&#xFF0C;&#x5728;&#x5B9E;&#x73B0;&#x7684;&#x63A5;&#x53E3;&#x7684;&#x53F3;&#x8FB9;&#xFF1A;</p>
<pre><code class="language-kotlin">internal class IntrinsicsMeasureScope(
    intrinsicMeasureScope: IntrinsicMeasureScope,
    override val layoutDirection: LayoutDirection,
) : MeasureScope, IntrinsicMeasureScope by intrinsicMeasureScope {
</code></pre>
<p>&#x8FD9;&#x79CD;&#x5199;&#x6CD5;&#xFF0C;Kotlin &#x5B98;&#x65B9;&#x7684;&#x53EB;&#x6CD5;&#x662F; Delegation&#xFF0C;&#x4E2D;&#x6587;&#x53EB;&#x59D4;&#x6258;&#xFF0C;&#x5B9E;&#x9645;&#x4E0A;&#x5B83;&#x5C31;&#x662F;&#x63A5;&#x53E3;&#x59D4;&#x6258;&#xFF0C;&#x529F;&#x80FD;&#x662F;&#x628A;&#x7C7B;&#x5BF9;&#x63A5;&#x53E3;&#x7684;&#x5B9E;&#x73B0;&#x59D4;&#x6258;&#x7ED9;&#x6307;&#x5B9A;&#x7684;&#x5BF9;&#x8C61;&#x3002;<br>
&#x5B83;&#x5728;&#x6982;&#x5FF5;&#x4E0A;&#x5176;&#x5B9E;&#x5F88;&#x7B80;&#x5355;&#xFF0C;&#x5B98;&#x65B9;&#x6587;&#x6863;&#x5C31;&#x5199;&#x5F97;&#x6E05;&#x6E05;&#x695A;&#x695A;&#xFF1A;<br>
<img src="http://image.rengwuxian.com/2023/12/26/fe16ca0d6d6ad.png" alt="&#x7C7B;&#x58F0;&#x660E;&#x7684;&#x53F3;&#x8FB9;&#x4E5F;&#x80FD;&#x5199; by&#xFF1F;Kotlin &#x7684;&#x63A5;&#x53E3;&#x59D4;&#x6258;&#x662F;&#x8FD9;&#x4E48;&#x7528;&#x7684;" loading="lazy"></p>
<p>&#x4F46;&#x6B63;&#x662F;&#x8FD9;&#x79CD;&#x7B80;&#x5355;&#xFF0C;&#x4E5F;&#x5E26;&#x6765;&#x4E86;&#x4E00;&#x4E9B;&#x8FF7;&#x60D1;&#xFF1A;&#x600E;&#x4E48;&#x62EC;&#x53F7;&#x91CC;&#x9762;&#x5916;&#x9762;&#x90FD;&#x662F;&#x5B83;&#x5440;&#xFF1F;<br>
<img src="http://image.rengwuxian.com/2023/12/26/9699df7ccfb77.png" alt="&#x7C7B;&#x58F0;&#x660E;&#x7684;&#x53F3;&#x8FB9;&#x4E5F;&#x80FD;&#x5199; by&#xFF1F;Kotlin &#x7684;&#x63A5;&#x53E3;&#x59D4;&#x6258;&#x662F;&#x8FD9;&#x4E48;&#x7528;&#x7684;" loading="lazy"></p>
<p>&#x8FD9;&#x79CD;&#x91CF;&#x5B50;&#x7EA0;&#x7F20;&#x7684;&#x7ED3;&#x6784;&#xFF0C;&#x8BA9;&#x4EBA;&#x6709;&#x70B9;&#x6478;&#x4E0D;&#x660E;&#x767D;&#xFF1A;&#x8FD9;&#x5565;&#x610F;&#x601D;&#x5440;&#xFF1F;&#x6211;&#x5E94;&#x8BE5;&#x600E;&#x4E48;&#x7528;&#x3001;&#x4EC0;&#x4E48;&#x65F6;&#x5019;&#x7528;&#xFF1F;&#x4EE5;&#x53CA;&#x5982;&#x679C;&#x6211;&#x770B;&#x5230;&#x522B;&#x4EBA;&#x5199;&#x4E86;&#x8FD9;&#x6837;&#x7684;&#x4EE3;&#x7801;&#xFF0C;&#x5E94;&#x8BE5;&#x600E;&#x4E48;&#x53BB;&#x7406;&#x89E3;&#xFF1F;</p>
<h2 id="java-%E7%9A%84%E5%A7%94%E6%89%98%E6%A8%A1%E5%BC%8F">Java &#x7684;&#x59D4;&#x6258;&#x6A21;&#x5F0F;</h2>
<p>&#x5B9E;&#x9645;&#x4E0A; Kotlin &#x7684;&#x8FD9;&#x79CD;&#x8BED;&#x6CD5;&#x867D;&#x7136;&#x6BD4;&#x8F83;&#x65B0;&#xFF0C;&#x4F46;&#x5B83;&#x80CC;&#x540E;&#x7684;&#x8BBE;&#x8BA1;&#x6A21;&#x5F0F;&#x662F;&#x65E9;&#x5C31;&#x6709;&#x4E86;&#x7684;&#xFF0C;&#x53EB;&#x505A;&#x300C;&#x59D4;&#x6258;&#x6A21;&#x5F0F;&#x300D;&#x3002;&#x59D4;&#x6258;&#x6A21;&#x5F0F;&#x6307;&#x7684;&#x662F;&#x628A;&#x7C7B;&#x7684;&#x4E00;&#x90E8;&#x5206;&#x529F;&#x80FD;&#x59D4;&#x6258;&#x7ED9;&#x4E00;&#x4E2A;&#x8F85;&#x52A9;&#x5BF9;&#x8C61;&#xFF0C;&#x6BD4;&#x5982; Android &#x91CC; <code>View</code> &#x8FD9;&#x4E2A;&#x7C7B;&#x7684;&#x70B9;&#x51FB;&#x56DE;&#x8C03;&#x529F;&#x80FD;&#xFF0C;&#x5C31;&#x662F;&#x901A;&#x8FC7; <code>setOnClickListener()</code> &#x65B9;&#x6CD5;&#x6765;&#x59D4;&#x6258;&#x7ED9;&#x4E86;&#x4E00;&#x4E2A; <code>OnClickListener</code> &#x7C7B;&#x578B;&#x7684;&#x5BF9;&#x8C61;&#xFF1A;</p>
<pre><code class="language-kotlin">view.setOnClickListener {
    ...
}
</code></pre>
<p>&#x8FD9;&#x662F;&#x4E00;&#x4E2A;&#x975E;&#x5E38;&#x5178;&#x578B;&#x7684;&#x59D4;&#x6258;&#x6A21;&#x5F0F;&#x7684;&#x6848;&#x4F8B;&#x3002;<br>
&#x59D4;&#x6258;&#x6A21;&#x5F0F;&#x8FD8;&#x6709;&#x4E2A;&#x53D8;&#x79CD;&#xFF0C;&#x662F;&#x628A;&#x7C7B;&#x5BF9;&#x4E8E;&#x63A5;&#x53E3;&#x7684;&#x5B9E;&#x73B0;&#xFF0C;&#x5C40;&#x90E8;&#x5730;&#x6216;&#x8005;&#x5B8C;&#x5168;&#x5730;&#x59D4;&#x6258;&#x7ED9;&#x81EA;&#x5DF1;&#x5185;&#x90E8;&#x7684;&#x4E00;&#x4E2A;&#x6210;&#x5458;&#x5BF9;&#x8C61;&#x3002;&#x6BD4;&#x5982; Android &#x91CC;&#x6709;&#x4E00;&#x4E2A;&#x53EB;&#x505A; <code>ContextWrapper</code> &#x7684;&#x7C7B;&#xFF0C;&#x5B83;&#x5B9E;&#x73B0;&#x4E86; <code>Context</code> &#x63A5;&#x53E3;&#xFF0C;&#x4F46;&#x5728; <code>ContextWrapper</code> &#x7684;&#x5185;&#x90E8;&#xFF0C;&#x5BF9;&#x4E8E;&#x8FD9;&#x4E2A;&#x63A5;&#x53E3;&#x7684;&#x6BCF;&#x4E2A;&#x7684;&#x5B9E;&#x73B0;&#xFF0C;&#x5168;&#x90FD;&#x59D4;&#x6258;&#x7ED9;&#x4E86;&#x81EA;&#x5DF1;&#x5185;&#x90E8;&#x7684;&#x4E00;&#x4E2A; <code>Context</code> &#x7C7B;&#x578B;&#x7684;&#x6210;&#x5458;&#x53D8;&#x91CF;&#xFF1A;</p>
<pre><code class="language-java">public class ContextWrapper extends Context {
    @UnsupportedAppUsage
    Context mBase;

    ...

    public ContextWrapper(Context base) {
        mBase = base;
    }

    ...

    @Override
    public AssetManager getAssets() {
        return mBase.getAssets();
    }

    @Override
    public Resources getResources() {
        return mBase.getResources();
    }

    @Override
    public PackageManager getPackageManager() {
        return mBase.getPackageManager();
    }

    @Override
    public ContentResolver getContentResolver() {
        return mBase.getContentResolver();
    }

    @Override
    public Looper getMainLooper() {
        return mBase.getMainLooper();
    }

    @Override
    public Executor getMainExecutor() {
        return mBase.getMainExecutor();
    }

    @Override
    public Context getApplicationContext() {
        return mBase.getApplicationContext();
    }

    ...
}
</code></pre>
<p>&#x8FD9;&#x4E48;&#x5570;&#x55E6;&#x7740;&#x5957;&#x4E00;&#x5C42;&#x662F;&#x4E3A;&#x4E86;&#x4EC0;&#x4E48;&#x5462;&#xFF1F;&#x5B83;&#x53EF;&#x4EE5;&#x8BA9;&#x5B9E;&#x73B0;&#x7C7B;&#x4E0D;&#x7528;&#x5173;&#x5FC3;&#x63A5;&#x53E3;&#x7684;&#x6838;&#x5FC3;&#x529F;&#x80FD;&#x7684;&#x5177;&#x4F53;&#x5B9E;&#x73B0;&#xFF0C;&#x800C;&#x53EA;&#x8981;&#x5173;&#x6CE8;&#x989D;&#x5916;&#x7684;&#x529F;&#x80FD;&#x5B9A;&#x5236;&#x548C;&#x6269;&#x5C55;&#x3002;<br>
&#x4EC0;&#x4E48;&#x610F;&#x601D;&#xFF1F;&#x6211;&#x4EEC;&#x518D;&#x4E3E;&#x4E2A;&#x4F8B;&#x5B50;&#xFF0C;&#x6BD4;&#x5982;&#x5BF9;&#x4E8E; Java &#x7684; <code>List</code> &#x8FD9;&#x4E2A;&#x63A5;&#x53E3;&#xFF0C;&#x6211;&#x4EEC;&#x53EF;&#x4EE5;&#x7528; <code>ArrayList</code> &#x548C; <code>LinkedList</code> &#x8FD9;&#x4E24;&#x4E2A;&#x7C7B;&#x5BF9;&#x5B83;&#x505A;&#x51FA;&#x4E0D;&#x540C;&#x7684;&#x5185;&#x90E8;&#x5B9E;&#x73B0;&#xFF0C;&#x53BB;&#x5E94;&#x5BF9;&#x4E0D;&#x540C;&#x7684;&#x6027;&#x80FD;&#x9700;&#x6C42;&#x3002;&#x8FD9;&#x79CD;&#x5BF9;&#x4E8E;&#x63A5;&#x53E3;&#x7684;&#x6838;&#x5FC3;&#x529F;&#x80FD;&#x7684;&#x5B9E;&#x73B0;&#xFF0C;&#x662F;&#x4E0D;&#x9700;&#x8981;&#x59D4;&#x6258;&#x6A21;&#x5F0F;&#x7684;&#x3002;&#x800C;&#x5982;&#x679C;&#x6211;&#x60F3;&#x7ED9; <code>List</code> &#x63A5;&#x53E3;&#x5B9A;&#x5236;&#x989D;&#x5916;&#x7684;&#x529F;&#x80FD;&#xFF0C;&#x6BD4;&#x5982;&#x6211;&#x60F3;&#x5B9A;&#x5236;&#x4E00;&#x4E2A;&#x5143;&#x7D20;&#x7C7B;&#x578B;&#x662F; <code>User</code> &#x7684; <code>List</code>&#xFF0C;&#x8BA9;&#x5B83;&#x6709;&#x5404;&#x79CD;&#x548C;&#x7528;&#x6237;&#x76F8;&#x5173;&#x7684;&#x529F;&#x80FD;&#xFF0C;&#x50CF;&#x300C;&#x7B5B;&#x51FA;&#x9AD8;&#x98CE;&#x9669;&#x7528;&#x6237;&#x300D;&#x3001;&#x300C;&#x6309;&#x5E74;&#x9F84;&#x91CD;&#x6392;&#x300D;&#x8FD9;&#x6837;&#x7684;&#xFF0C;&#x90A3;&#x4E48;&#x6211;&#x5E94;&#x8BE5;&#x7EE7;&#x627F; <code>ArrayList</code> &#x8FD8;&#x662F; <code>LinkedList</code> &#x5462;&#xFF1F;&#x6211;&#x53EA;&#x80FD;&#x4E24;&#x4E2A;&#x90FD;&#x7EE7;&#x627F;&#xFF0C;&#x5404;&#x81EA;&#x5B9E;&#x73B0;&#x4E00;&#x904D;&#x3002;&#x662F;&#x5427;&#xFF1F;&#x4F46;&#x76F8;&#x6BD4;&#x4E4B;&#x4E0B;&#xFF0C;&#x4E00;&#x4E2A;&#x66F4;&#x5408;&#x9002;&#x7684;&#x9009;&#x62E9;&#x5C31;&#x662F;&#xFF0C;&#x6211;&#x53BB;&#x76F4;&#x63A5;&#x5B9E;&#x73B0; <code>List</code> &#x63A5;&#x53E3;&#xFF0C;&#x5728;&#x5B9E;&#x73B0;&#x7C7B;&#x7684;&#x5185;&#x90E8;&#x8BBE;&#x7F6E;&#x4E00;&#x4E2A; <code>List</code> &#x7C7B;&#x578B;&#x7684;&#x6210;&#x5458;&#xFF0C;&#x6765;&#x8BA9;&#x5B83;&#x4F5C;&#x4E3A;&#x6838;&#x5FC3;&#x529F;&#x80FD;&#x7684;&#x4EE3;&#x7406;&#xFF1A;</p>
<pre><code class="language-java">public class UserList implements List&lt;User&gt; {
    List&lt;User&gt; userList;

    public UserList(List&lt;User&gt; userList) {
        this.userList = userList;
    }

   @Override
    public int size() {
        return userList.size();
    }

    @Override
    public boolean isEmpty() {
        return userList.isEmpty();
    }

    @Override
    public boolean contains(@Nullable Object o) {
        return userList.contains(o);
    }

    ...
}
</code></pre>
<p>&#x7136;&#x540E;&#xFF0C;&#x5C31;&#x53EF;&#x4EE5;&#x968F;&#x4FBF;&#x7ED9;&#x5B83;&#x52A0;&#x529F;&#x80FD;&#x4E86;&#xFF1A;</p>
<pre><code class="language-java">public class UserList implements List&lt;User&gt; {
    List&lt;User&gt; list;

    public UserList(List&lt;User&gt; list) {
        this.list = list;
    }

    public List&lt;User&gt; highRiskUsers() {
        ...
    }

    public void sortWithAge() {
        ...
    }

    @Override
    public int size() {
        return userList.size();
    }

    @Override
    public boolean isEmpty() {
        return userList.isEmpty();
    }

    @Override
    public boolean contains(@Nullable Object o) {
        return userList.contains(o);
    }

    ...
}
</code></pre>
<p>&#x8FD9;&#x91CC;&#x9762;&#x7684; <code>List</code> &#x5BF9;&#x8C61;&#x5177;&#x4F53;&#x662F;&#x7528; <code>ArrayList</code> &#x8FD8;&#x662F; <code>LinkedList</code> &#x6216;&#x8005;&#x522B;&#x7684;&#x5B9E;&#x73B0;&#xFF0C;&#x90FD;&#x65E0;&#x6240;&#x8C13;&#xFF0C;&#x4F60;&#x60F3;&#x7528;&#x54EA;&#x4E2A;&#x586B;&#x54EA;&#x4E2A;&#x3002;&#x4E5F;&#x5C31;&#x662F;&#xFF0C;&#x6211;&#x6269;&#x5C55;&#x51FA;&#x6765;&#x7684;&#x529F;&#x80FD;&#x5BF9; <code>ArrayList</code> &#x548C; <code>LinkedList</code> &#x90FD;&#x662F;&#x9002;&#x7528;&#x7684;&#x3002;&#x5BF9;&#x5427;&#xFF1F;<br>
&#x901A;&#x8FC7;&#x8FD9;&#x79CD;&#x5199;&#x6CD5;&#xFF0C;&#x6211;&#x5C31;&#x53EF;&#x4EE5;&#x5BF9;&#x63A5;&#x53E3;&#x8FDB;&#x884C;&#x529F;&#x80FD;&#x6269;&#x5C55;&#xFF0C;&#x800C;&#x4E0D;&#x9700;&#x8981;&#x5173;&#x5FC3;&#x63A5;&#x53E3;&#x7684;&#x6838;&#x5FC3;&#x529F;&#x80FD;&#x662F;&#x600E;&#x4E48;&#x5B9E;&#x73B0;&#x7684;&#x3002;&#x5F88;&#x81EA;&#x7531;&#x5F88;&#x65B9;&#x4FBF;&#x3002;<br>
&#x4F46;&#x662F;&#x2026;&#x2026;&#x8FD9;&#x4E48;&#x4E00;&#x5927;&#x957F;&#x4E32;&#x7684;&#x65B9;&#x6CD5;&#x91CD;&#x5199;&#xFF0C;&#x591A;&#x591A;&#x5C11;&#x5C11;&#x6709;&#x70B9;&#x5570;&#x55E6;&#xFF0C;&#x662F;&#x5427;&#xFF1F;&#x90A3;&#x4E5F;&#x6CA1;&#x529E;&#x6CD5;&#xFF0C;&#x8FD9;&#x5DF2;&#x7ECF;&#x662F;&#x6700;&#x4F18;&#x89E3;&#x6CD5;&#x4E86;&#x3002;<br>
&#x4E0D;&#x8FC7;&#xFF01;&#x54B1;&#x8BF4;&#x7684;&#x662F; Java&#x3002;</p>
<h2 id="kotlin-%E7%9A%84%E6%8E%A5%E5%8F%A3%E5%A7%94%E6%89%98">Kotlin &#x7684;&#x63A5;&#x53E3;&#x59D4;&#x6258;</h2>
<p>&#x540C;&#x6837;&#x7684;&#x505A;&#x6CD5;&#xFF0C;&#x4F60;&#x7528; Kotlin &#x4E5F;&#x80FD;&#x5199;&#xFF1A;</p>
<pre><code class="language-java">class UserList(private val list: List&lt;User&gt;) : List&lt;User&gt; {
    override val size: Int get() = list.size

    override fun get(index: Int): User = list[index]

    override fun isEmpty(): Boolean = list.isEmpty()

    override fun iterator(): Iterator&lt;User&gt; = list.iterator()

    override fun listIterator(): ListIterator&lt;User&gt; = list.listIterator()

    override fun listIterator(index: Int): ListIterator&lt;User&gt; = list.listIterator(index)

    override fun subList(fromIndex: Int, toIndex: Int): List&lt;User&gt; = list.subList(fromIndex, toIndex)

    override fun lastIndexOf(element: User): Int = list.lastIndexOf(element)

    override fun indexOf(element: User): Int = list.indexOf(element)

    override fun containsAll(elements: Collection&lt;User&gt;): Boolean = list.containsAll(elements)

    override fun contains(element: User): Boolean = list.contains(element)
}
</code></pre>
<p>&#x4F46;&#x5176;&#x5B9E; Kotlin &#x6709;&#x66F4;&#x7B80;&#x4FBF;&#x7684;&#x5199;&#x6CD5;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x54B1;&#x521A;&#x624D;&#x8BF4;&#x7684;&#xFF1A;&#x63A5;&#x53E3;&#x59D4;&#x6258;&#x3002;&#x4F60;&#x53EA;&#x8981;&#x628A; <code>list</code> &#x53C2;&#x6570;&#x653E;&#x5728;&#x63A5;&#x53E3;&#x7684;&#x53F3;&#x8FB9;&#x7528; <code>by</code> &#x8FDE;&#x63A5;&#x8D77;&#x6765;&#xFF1A;</p>
<pre><code class="language-java">class UserList(private val list: List&lt;User&gt;) : List&lt;User&gt; by list {
    override val size: Int get() = list.size

    override fun get(index: Int): User = list[index]

    override fun isEmpty(): Boolean = list.isEmpty()

    override fun iterator(): Iterator&lt;User&gt; = list.iterator()

    override fun listIterator(): ListIterator&lt;User&gt; = list.listIterator()

    override fun listIterator(index: Int): ListIterator&lt;User&gt; = list.listIterator(index)

    override fun subList(fromIndex: Int, toIndex: Int): List&lt;User&gt; = list.subList(fromIndex, toIndex)

    override fun lastIndexOf(element: User): Int = list.lastIndexOf(element)

    override fun indexOf(element: User): Int = list.indexOf(element)

    override fun containsAll(elements: Collection&lt;User&gt;): Boolean = list.containsAll(elements)

    override fun contains(element: User): Boolean = list.contains(element)
}
</code></pre>
<p>&#x5C31;&#x81EA;&#x52A8;&#x5B9E;&#x73B0;&#x4E86;&#x8FD9;&#x79CD;&#x59D4;&#x6258;&#x3002;&#x4E0B;&#x9762;&#x90A3;&#x4E00;&#x5806;&#x51FD;&#x6570;&#x91CD;&#x5199;&#x5C31;&#x90FD;&#x53EF;&#x4EE5;&#x5220;&#x6389;&#x4E86;&#xFF1A;</p>
<pre><code class="language-java">class UserList(list: List&lt;User&gt;) : List&lt;User&gt; by list {
  
}
</code></pre>
<p>&#x7136;&#x540E;&#x4F60;&#x60F3;&#x52A0;&#x4EC0;&#x4E48;&#x529F;&#x80FD;&#xFF0C;&#x6B63;&#x5E38;&#x52A0;&#x5C31;&#x53EF;&#x4EE5;&#x4E86;&#xFF1A;</p>
<pre><code class="language-kotlin">class UserList(list: List&lt;User&gt;) : List&lt;User&gt; by list {
    fun highRiskUsers(): List&lt;User&gt; {
        return ...
    }

    fun sortWithAge() {
        ...
    }
}
</code></pre>
<p>&#x8FD9;&#x5C31;&#x662F; Kotlin &#x7684;&#x59D4;&#x6258;&#xFF0C;&#x6216;&#x8005;&#x8BF4;&#x63A5;&#x53E3;&#x59D4;&#x6258;&#x3002;<br>
&#x522B;&#x5149;&#x89C9;&#x5F97;&#x4E0D;&#x9519;&#x554A;&#xFF0C;&#x770B;&#x5B8C;&#x89C6;&#x9891;&#xFF0C;&#x8BE5;&#x4E0D;&#x4F1A;&#x7528;&#x8FD8;&#x4E0D;&#x4F1A;&#x7528;&#xFF0C;&#x90A3;&#x53EF;&#x4E0D;&#x884C;&#x3002;&#x5C0F;&#x7ED3;&#x4E00;&#x4E0B;&#xFF0C;&#x5E72;&#x561B;&#x7528;&#x7684;&#xFF1F;&#x5F53;&#x4F60;&#x60F3;&#x8BA9;&#x4E00;&#x4E2A;&#x7C7B;&#x5B9E;&#x73B0;&#x67D0;&#x4E2A;&#x63A5;&#x53E3;&#xFF0C;&#x4F46;&#x4E0D;&#x60F3;&#x5173;&#x5FC3;&#x6838;&#x5FC3;&#x5B9E;&#x73B0;&#xFF0C;&#x53EA;&#x60F3;&#x7ED9;&#x5B83;&#x505A;&#x529F;&#x80FD;&#x62D3;&#x5C55;&#xFF0C;&#x90A3;&#x4E48;&#x5C31;&#x7528; <code>by</code> &#x5173;&#x952E;&#x5B57;&#x6765;&#x4E2A;&#x63A5;&#x53E3;&#x59D4;&#x6258;&#xFF0C;&#x8BA9;&#x6838;&#x5FC3;&#x5B9E;&#x73B0;&#x7531;&#x6307;&#x5B9A;&#x5BF9;&#x8C61;&#x8FDB;&#x884C;&#x63D2;&#x4EF6;&#x5F0F;&#x63D0;&#x4F9B;&#x3002;&#x662F;&#x5427;&#xFF1F;<br>
&#x5F53;&#x7136;&#x4E86;&#xFF0C;&#x5BF9; Kotlin &#x6765;&#x8BF4;&#xFF0C;&#x505A;&#x529F;&#x80FD;&#x62D3;&#x5C55;&#x4E5F;&#x53EF;&#x4EE5;&#x7528;&#x6269;&#x5C55;&#x51FD;&#x6570;&#x548C;&#x6269;&#x5C55;&#x5C5E;&#x6027;&#xFF0C;&#x8FD9;&#x4E2A;&#x4F60;&#x53EF;&#x4EE5;&#x81EA;&#x5DF1;&#x9009;&#xFF0C;&#x770B;&#x60C5;&#x51B5;&#x800C;&#x5B9A;&#x3002;<br>
&#x5728; Jetpack Compose &#x7684; <code>LazyColumn()</code> &#x548C; <code>LazyRow()</code> &#x7EC4;&#x4EF6;&#x91CC;&#x90FD;&#x7528;&#x5230;&#x4E86;&#x4E00;&#x4E2A;&#x53EB;&#x505A; <code>LazyListMeasureResult&#xFFFD;</code> &#x7684;&#x7C7B;&#xFF0C;&#x5B83;&#x5C31;&#x662F;&#x7528;&#x59D4;&#x6258;&#x6765;&#x5BF9; <code>MeasureResult</code> &#x8FD9;&#x4E2A;&#x63A5;&#x53E3;&#x8FDB;&#x884C;&#x7684;&#x62D3;&#x5C55;&#xFF1A;</p>
<pre><code class="language-kotlin">internal class LazyListMeasureResult(
    // properties defining the scroll position:
    /** The new first visible item.*/
    val firstVisibleItem: LazyListMeasuredItem?,
    /** The new value for [LazyListState.firstVisibleItemScrollOffset].*/
    val firstVisibleItemScrollOffset: Int,
    /** True if there is some space available to continue scrolling in the forward direction.*/
    val canScrollForward: Boolean,
    /** The amount of scroll consumed during the measure pass.*/
    val consumedScroll: Float,
    /** MeasureResult defining the layout.*/
    measureResult: MeasureResult,
    /** The amount of scroll-back that happened due to reaching the end of the list. */
    val scrollBackAmount: Float,
    // properties representing the info needed for LazyListLayoutInfo:
    /** see [LazyListLayoutInfo.visibleItemsInfo] */
    override val visibleItemsInfo: List&lt;LazyListItemInfo&gt;,
    /** see [LazyListLayoutInfo.viewportStartOffset] */
    override val viewportStartOffset: Int,
    /** see [LazyListLayoutInfo.viewportEndOffset] */
    override val viewportEndOffset: Int,
    /** see [LazyListLayoutInfo.totalItemsCount] */
    override val totalItemsCount: Int,
    /** see [LazyListLayoutInfo.reverseLayout] */
    override val reverseLayout: Boolean,
    /** see [LazyListLayoutInfo.orientation] */
    override val orientation: Orientation,
    /** see [LazyListLayoutInfo.afterContentPadding] */
    override val afterContentPadding: Int,
    /** see [LazyListLayoutInfo.mainAxisItemSpacing] */
    override val mainAxisItemSpacing: Int
) : LazyListLayoutInfo, MeasureResult by measureResult {
    override val viewportSize: IntSize
        get() = IntSize(width, height)
    override val beforeContentPadding: Int get() = -viewportStartOffset
}
</code></pre>
<p>&#x5B83;&#x6CA1;&#x6709;&#x5B9E;&#x73B0; <code>MeasureResult</code> &#x7684;&#x4EFB;&#x4F55;&#x6838;&#x5FC3;&#x529F;&#x80FD;&#xFF0C;&#x8FD9;&#x4E9B;&#x6838;&#x5FC3;&#x529F;&#x80FD;&#x5168;&#x90FD;&#x4EA4;&#x7ED9;&#x4E86;&#x59D4;&#x6258;&#x5BF9;&#x8C61;&#xFF1B;&#x5B83;&#x53EA;&#x662F;&#x4F5C;&#x4E3A;&#x4E00;&#x4E2A;&#x9488;&#x5BF9; <code>LazyList()</code> &#x7684; <code>MeasureResult</code>&#xFF0C;&#x6DFB;&#x52A0;&#x4E86;&#x5F88;&#x591A;&#x989D;&#x5916;&#x7684;&#x5C5E;&#x6027;&#x8FDB;&#x6765;&#x3002;<br>
&#x4F60;&#x770B;&#xFF0C;&#x633A;&#x597D;&#x7528;&#xFF0C;&#x4E5F;&#x633A;&#x5BB9;&#x6613;&#x7528;&#x7684;&#xFF0C;&#x662F;&#x5427;&#xFF1F;</p>
<h3 id="%E5%AF%B9%E6%A0%B8%E5%BF%83%E5%8A%9F%E8%83%BD%E8%BF%9B%E8%A1%8C%E5%AE%9A%E5%88%B6%E4%BF%AE%E6%94%B9">&#x5BF9;&#x6838;&#x5FC3;&#x529F;&#x80FD;&#x8FDB;&#x884C;&#x5B9A;&#x5236;&#x4FEE;&#x6539;</h3>
<p>&#x5EF6;&#x4F38;&#x4E00;&#x4E0B;&#x3002;&#x9664;&#x4E86;&#x589E;&#x52A0;&#x989D;&#x5916;&#x529F;&#x80FD;&#xFF0C;&#x63A5;&#x53E3;&#x59D4;&#x6258;&#x4E5F;&#x53EF;&#x4EE5;&#x5BF9;&#x63A5;&#x53E3;&#x7684;&#x6838;&#x5FC3;&#x529F;&#x80FD;&#x8FDB;&#x884C;&#x5B9A;&#x5236;&#x6216;&#x8005;&#x4FEE;&#x6539;&#x3002;&#x6BD4;&#x5982; Kotlin &#x534F;&#x7A0B;&#x7684;&#x6E90;&#x7801;&#x6709;&#x4E00;&#x4E2A; <code>SubscribedSharedFlow</code>&#xFF1A;</p>
<pre><code class="language-kotlin">private class SubscribedSharedFlow&lt;T&gt;(
    private val sharedFlow: SharedFlow&lt;T&gt;,
    private val action: suspend FlowCollector&lt;T&gt;.() -&gt; Unit
) : SharedFlow&lt;T&gt; by sharedFlow {
    override suspend fun collect(collector: FlowCollector&lt;T&gt;) =
        sharedFlow.collect(SubscribedFlowCollector(collector, action))
}
</code></pre>
<p>&#x5B83;&#x5BF9; <code>SharedFlow</code> &#x63A5;&#x53E3;&#x8FDB;&#x884C;&#x4E86;&#x59D4;&#x6258;&#xFF0C;&#x4F46;&#x5E76;&#x6CA1;&#x6709;&#x5B8C;&#x5168;&#x4EA4;&#x7ED9;&#x59D4;&#x6258;&#x5BF9;&#x8C61;&#xFF0C;&#x800C;&#x662F;&#x91CD;&#x5199;&#x4E86;&#x8FD9;&#x4E2A;&#x63A5;&#x53E3;&#x7684; <code>collect()</code> &#x51FD;&#x6570;&#xFF0C;&#x5BF9;&#x5B83;&#x8FDB;&#x884C;&#x4E86;&#x4FEE;&#x6539;&#x5B9A;&#x5236;&#x3002;&#x2014;&#x2014;&#x5F53;&#x4F60;&#x5728;&#x5B9E;&#x73B0;&#x7C7B;&#x91CC;&#x91CD;&#x5199;&#x4E86;&#x63A5;&#x53E3;&#x7684;&#x67D0;&#x4E2A;&#x51FD;&#x6570;&#xFF0C;&#x90A3;&#x4E48;&#x8FD9;&#x4E2A;&#x51FD;&#x6570;&#x5C31;&#x4E0D;&#x518D;&#x4EA4;&#x7ED9;&#x59D4;&#x6258;&#x5BF9;&#x8C61;&#xFF0C;&#x800C;&#x662F;&#x4EE5;&#x4F60;&#x91CD;&#x5199;&#x7684;&#x4E3A;&#x51C6;&#x3002;&#x8FD9;&#x6837;&#x5C31;&#x5F88;&#x7075;&#x6D3B;&#xFF0C;&#x4F60;&#x53EF;&#x4EE5;&#x6309;&#x9700;&#x6C42;&#x5BF9;&#x63A5;&#x53E3;&#x8FDB;&#x884C;&#x5C40;&#x90E8;&#x5B9A;&#x5236;&#x3002;&#x7B97;&#x662F;&#x4E2A;&#x5EF6;&#x4F38;&#x7528;&#x6CD5;&#x3002;</p>
<h2 id="%E6%80%BB%E7%BB%93">&#x603B;&#x7ED3;</h2>
<p>&#x5C31;&#x8FD9;&#x4E48;&#x7B80;&#x5355;&#x3002;&#x63A5;&#x53E3;&#x59D4;&#x6258;&#x5728; Kotlin &#x534F;&#x7A0B;&#x548C; Jetpack &#x5404;&#x4E2A;&#x5E93;&#x7684;&#x6E90;&#x7801;&#x91CC;&#x6709;&#x5F88;&#x591A;&#x7684;&#x5E94;&#x7528;&#xFF0C;&#x53EA;&#x8981;&#x4F60;&#x628A;&#x5B83;&#x80CC;&#x540E;&#x7684;&#x4E1C;&#x897F;&#x5F04;&#x660E;&#x767D;&#x4E86;&#xFF0C;&#x5B83;&#x5176;&#x5B9E;&#x662F;&#x4E00;&#x4E2A;&#x975E;&#x5E38;&#x7B80;&#x5355;&#x597D;&#x7528;&#x7684;&#x7279;&#x6027;&#xFF0C;&#x53C8;&#x597D;&#x8BFB;&#x61C2;&#x53C8;&#x597D;&#x5199;&#x3002;&#x5E0C;&#x671B;&#x8FD9;&#x4E2A;&#x89C6;&#x9891;&#x5BF9;&#x4F60;&#x6709;&#x7528;&#xFF0C;&#x5173;&#x6CE8;&#x6211;&#xFF0C;&#x4E86;&#x89E3;&#x66F4;&#x591A; Android &#x5F00;&#x53D1;&#x76F8;&#x5173;&#x7684;&#x77E5;&#x8BC6;&#x548C;&#x6280;&#x80FD;&#x3002;&#x6211;&#x662F;&#x6254;&#x7269;&#x7EBF;&#xFF0C;&#x6211;&#x4E0D;&#x548C;&#x4F60;&#x6BD4;&#x9AD8;&#x4F4E;&#xFF0C;&#x6211;&#x53EA;&#x52A9;&#x4F60;&#x6210;&#x957F;&#x3002;&#x6211;&#x4EEC;&#x4E0B;&#x671F;&#x89C1;&#xFF01;<br>
<img src="http://image.rengwuxian.com/2023/12/27/210647777b3c9.jpg" alt="&#x7C7B;&#x58F0;&#x660E;&#x7684;&#x53F3;&#x8FB9;&#x4E5F;&#x80FD;&#x5199; by&#xFF1F;Kotlin &#x7684;&#x63A5;&#x53E3;&#x59D4;&#x6258;&#x662F;&#x8FD9;&#x4E48;&#x7528;&#x7684;" loading="lazy"></p>
]]></content:encoded></item><item><title><![CDATA[浮点数的坑很深，但不多]]></title><description><![CDATA[float 和 double 怎么选？0.1 + 0.2 为什么不等于 0.3？大概这些问题。]]></description><link>https://rengwuxian.com/float/</link><guid isPermaLink="false">658a84853dadb823524ad15f</guid><category><![CDATA[Kotlin]]></category><dc:creator><![CDATA[扔物线]]></dc:creator><pubDate>Wed, 27 Dec 2023 01:32:25 GMT</pubDate><media:content url="https://rengwuxian.com/content/images/2023/12/10881703576828_.pic.jpg" medium="image"/><content:encoded><![CDATA[<h1 id="%E8%A7%86%E9%A2%91%E5%85%88%E8%A1%8C">&#x89C6;&#x9891;&#x5148;&#x884C;</h1>
<h2 id="%E5%93%94%E5%93%A9%E5%93%94%E5%93%A9">&#x54D4;&#x54E9;&#x54D4;&#x54E9;</h2>
<iframe width="100%" height="480" src="//player.bilibili.com/player.html?bvid=BV14V4y1U7rN&amp;cid=1153823358&amp;p=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe>
<h2 id="youtube">YouTube</h2>
<iframe width="100%" height="480" src="https://www.youtube.com/embed/EUe7GsjB5Sw?si=NXbHchdLG9ZLUFjH" title="Unit &#x4E3A;&#x5565;&#x8FD8;&#x80FD;&#x5F53;&#x51FD;&#x6570;&#x53C2;&#x6570;&#xFF1F;&#x9762;&#x5411;&#x5B9E;&#x7528;&#x7684; Kotlin Unit &#x8BE6;&#x89E3;" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
<blockquote>
<img src="https://rengwuxian.com/content/images/2023/12/10881703576828_.pic.jpg" alt="&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5751;&#x5F88;&#x6DF1;&#xFF0C;&#x4F46;&#x4E0D;&#x591A;"><p>&#x4E0B;&#x9762;&#x662F;&#x89C6;&#x9891;&#x5185;&#x5BB9;&#x7684;&#x811A;&#x672C;&#x6587;&#x6848;&#x539F;&#x7A3F;&#x5206;&#x4EAB;&#x3002;</p>
</blockquote>
<p><img src="http://image.rengwuxian.com/2023/12/27/210647777b3c9.jpg" alt="&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5751;&#x5F88;&#x6DF1;&#xFF0C;&#x4F46;&#x4E0D;&#x591A;" loading="lazy"></p>
<h2 id="%E9%97%AE%E9%A2%98%E6%98%AF%E7%9C%9F%E5%AE%9E%E5%AD%98%E5%9C%A8%E7%9A%84">&#x95EE;&#x9898;&#x662F;&#x771F;&#x5B9E;&#x5B58;&#x5728;&#x7684;</h2>
<p>&#x5927;&#x5BB6;&#x597D;&#xFF0C;&#x6211;&#x662F;&#x6254;&#x7269;&#x7EBF;&#x6731;&#x51EF;&#x3002;<br>
&#x521A;&#x624D;&#x90A3;&#x4E2A; 0.1 + 0.2 &#x4E0D;&#x7B49;&#x4E8E; 0.3 &#x7684;&#x60C5;&#x51B5;&#x662F;&#x771F;&#x5B9E;&#x5B58;&#x5728;&#x7684;&#xFF0C;&#x4E0D;&#x4FE1;&#x4F60;&#x53EF;&#x4EE5;&#x4EB2;&#x81EA;&#x8BD5;&#x4E00;&#x4E0B;&#x3002;&#x6211;&#x7528;&#x7684;&#x662F; Kotlin&#xFF0C;&#x4F60;&#x6362;&#x6210; Java&#x3001;JavaScript&#x3001;Python&#x3001;Swift &#x4E5F;&#x90FD;&#x662F;&#x8FD9;&#x6837;&#x7684;&#x7ED3;&#x679C;&#x3002;&#x8981;&#x89E3;&#x51B3;&#x5B83;&#x4E5F;&#x7B80;&#x5355;&#xFF0C;&#x5728;&#x6570;&#x503C;&#x7684;&#x53F3;&#x8FB9;&#x52A0;&#x4E2A; <code>f</code>&#xFF0C;&#x628A;&#x5B83;&#x4ECE;&#x53CC;&#x7CBE;&#x5EA6;&#x6539;&#x6210;&#x5355;&#x7CBE;&#x5EA6;&#x7684;&#x5C31;&#x53EF;&#x4EE5;&#x4E86;&#xFF1A;<br>
<img src="http://image.rengwuxian.com/2023/12/26/fd4e12f467251.png" alt="&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5751;&#x5F88;&#x6DF1;&#xFF0C;&#x4F46;&#x4E0D;&#x591A;" loading="lazy"><br>
<img src="http://image.rengwuxian.com/2023/12/26/4ff53c444a43e.png" alt="&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5751;&#x5F88;&#x6DF1;&#xFF0C;&#x4F46;&#x4E0D;&#x591A;" loading="lazy"><br>
&#x4F46;&#x8FD9;&#x5E76;&#x4E0D;&#x662F;&#x4E00;&#x4E2A;&#x901A;&#x7528;&#x7684;&#x89E3;&#x51B3;&#x65B9;&#x6848;&#xFF0C;&#x6BD4;&#x5982;&#x6709;&#x7684;&#x65F6;&#x5019;&#x60C5;&#x51B5;&#x4F1A;&#x53CD;&#x8FC7;&#x6765;&#xFF1A;&#x53CC;&#x7CBE;&#x5EA6;&#x7684;&#x6CA1;&#x6709;&#x95EE;&#x9898;&#xFF0C;&#x800C;&#x5355;&#x7CBE;&#x5EA6;&#x7684;&#x5374;&#x6709;&#x95EE;&#x9898;&#xFF1A;<br>
<img src="http://image.rengwuxian.com/2023/12/26/af1ea6f9cf291.png" alt="&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5751;&#x5F88;&#x6DF1;&#xFF0C;&#x4F46;&#x4E0D;&#x591A;" loading="lazy"><br>
<img src="http://image.rengwuxian.com/2023/12/26/f23f127644a54.png" alt="&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5751;&#x5F88;&#x6DF1;&#xFF0C;&#x4F46;&#x4E0D;&#x591A;" loading="lazy"><br>
&#x8981;&#x77E5;&#x9053;&#xFF0C;&#x8FD9;&#x4E9B;&#x504F;&#x5DEE;&#x90FD;&#x662F;&#x5F00;&#x53D1;&#x91CC;&#x771F;&#x5B9E;&#x4F1A;&#x53D1;&#x751F;&#x7684;&#xFF0C;&#x6240;&#x4EE5;&#x4E86;&#x89E3;&#x8FD9;&#x4E9B;&#x95EE;&#x9898;&#x7684;&#x672C;&#x8D28;&#x539F;&#x56E0;&#x548C;&#x89E3;&#x51B3;&#x65B9;&#x6848;&#x662F;&#x975E;&#x5E38;&#x5FC5;&#x8981;&#x7684;&#x2014;&#x2014;&#x6BD4;&#x4EC0;&#x4E48;&#x5185;&#x5B58;&#x6296;&#x52A8;&#x91CD;&#x8981;&#x591A;&#x4E86;&#x3002;<br>
&#x4ECA;&#x5929;&#x54B1;&#x5C31;&#x8BF4;&#x4E00;&#x4E0B;&#x8FD9;&#x4E2A;&#x3002;&#x4E0D;&#x96BE;&#x554A;&#xFF0C;&#x522B;&#x5BB3;&#x6015;&#xFF0C;&#x4F60;&#x770B;&#x8FDB;&#x5EA6;&#x6761;&#x4E0D;&#x957F;&#x3002;</p>
<h2 id="%E6%B5%AE%E7%82%B9%E6%95%B0%E7%9A%84%E8%8C%83%E5%9B%B4%E4%BC%98%E5%8A%BF%E5%92%8C%E7%B2%BE%E5%BA%A6%E9%97%AE%E9%A2%98">&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x8303;&#x56F4;&#x4F18;&#x52BF;&#x548C;&#x7CBE;&#x5EA6;&#x95EE;&#x9898;</h2>
<p>&#x5927;&#x591A;&#x6570;&#x7F16;&#x7A0B;&#x8BED;&#x8A00;&#x5BF9;&#x5C0F;&#x6570;&#x7684;&#x5B58;&#x50A8;&#xFF0C;&#x7528;&#x7684;&#x90FD;&#x662F;&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5F62;&#x5F0F;&#x3002;&#x6D6E;&#x70B9;&#x6570;&#x5176;&#x5B9E;&#x5C31;&#x662F;&#x4E00;&#x79CD;&#x79D1;&#x5B66;&#x8BA1;&#x6570;&#x6CD5;&#xFF0C;&#x53EA;&#x4E0D;&#x8FC7;&#x5B83;&#x662F;&#x7535;&#x8111;&#x7528;&#x7684;&#x3001;&#x4E8C;&#x8FDB;&#x5236;&#x7684;&#x79D1;&#x5B66;&#x8BA1;&#x6570;&#x6CD5;&#xFF1A;</p>
<blockquote>
<p>&#x5341;&#x8FDB;&#x5236;&#xFF1A;500000<br>
&#x79D1;&#x5B66;&#x8BA1;&#x6570;&#x6CD5;&#xFF1A;5 * 105<br>
&#x4E8C;&#x8FDB;&#x5236;&#xFF1A;1111010000100100000<br>
&#x6D6E;&#x70B9;&#x6570;&#xFF08;&#x4E8C;&#x8FDB;&#x5236;&#x79D1;&#x5B66;&#x8BA1;&#x6570;&#x6CD5;&#xFF09;&#xFF1A;1.111010000100100000 * 218</p>
</blockquote>
<p>&#x79D1;&#x5B66;&#x8BA1;&#x6570;&#x6CD5;&#x7684;&#x597D;&#x5904;&#x6211;&#x4EEC;&#x4E0A;&#x5B66;&#x7684;&#x65F6;&#x5019;&#x8001;&#x5E08;&#x5C31;&#x8BF4;&#x8FC7;&#xFF0C;&#x53EF;&#x4EE5;&#x7528;&#x8F83;&#x5C11;&#x7684;&#x6570;&#x4F4D;&#x6765;&#x8BB0;&#x5F55;&#x7EDD;&#x5BF9;&#x503C;&#x975E;&#x5E38;&#x5927;&#x6216;&#x8005;&#x975E;&#x5E38;&#x5C0F;&#x7684;&#x6570;&#xFF1A;</p>
<blockquote>
<p>1000000000 -&gt; 1 x 109<br>
0.000000001 -&gt; 1 x 10-9</p>
</blockquote>
<p>&#x4F46;&#x5F53;&#x4F60;&#x8981;&#x8BB0;&#x5F55;&#x7684;&#x6570;&#x4F4D;&#x6BD4;&#x8F83;&#x957F;&#x7684;&#x65F6;&#x5019;&#xFF1A;</p>
<blockquote>
<p>1000000001 -&gt; 1.000000001 x 109<br>
1.000000001 -&gt; 1.000000001 x 100</p>
</blockquote>
<p>&#x79D1;&#x5B66;&#x8BA1;&#x6570;&#x6CD5;&#x7684;&#x4F18;&#x52BF;&#x5C31;&#x6CA1;&#x4E86;&#x3002;&#x6240;&#x4EE5;&#x79D1;&#x5B66;&#x8BA1;&#x6570;&#x6CD5;&#x90FD;&#x4F1A;&#x89C4;&#x5B9A;&#x6709;&#x6548;&#x6570;&#x5B57;&#x7684;&#x4E2A;&#x6570;&#xFF0C;&#x6709;&#x6548;&#x6570;&#x5B57;&#x4E4B;&#x5916;&#x7684;&#x5C31;&#x56DB;&#x820D;&#x4E94;&#x5165;&#x6389;&#x4E86;&#xFF1A;</p>
<blockquote>
<p>1000000001 -&gt; 1.0 x 109 // &#x6709;&#x6548;&#x6570;&#x5B57; 2 &#x4F4D;<br>
1.000000001 -&gt; 1.0 x 100 // &#x6709;&#x6548;&#x6570;&#x5B57; 2 &#x4F4D;</p>
</blockquote>
<p>&#x8FD9;&#x5C31;&#x9020;&#x6210;&#x4E86;&#x7CBE;&#x5EA6;&#x7684;&#x635F;&#x5931;&#x3002;&#x4F60;&#x770B;&#x5230;&#x4E00;&#x4E2A; 1.0 x 109&#xFF0C;&#x4F60;&#x4E0D;&#x77E5;&#x9053;&#x5B83;&#x662F;&#x4ECE; 10 &#x4EBF;&#x8FD9;&#x4E2A;&#x6570;&#x8F6C;&#x6362;&#x8FC7;&#x6765;&#x7684;&#xFF0C;&#x8FD8;&#x662F;&#x4ECE; 9.6 &#x4EBF;&#x6216;&#x8005; 10.3 &#x4EBF;&#x6216;&#x8005;&#x522B;&#x7684;&#x4EC0;&#x4E48;&#x6570;&#x8F6C;&#x8FC7;&#x6765;&#x7684;&#xFF0C;&#x56E0;&#x4E3A;&#x5B83;&#x4EEC;&#x90FD;&#x53EF;&#x4EE5;&#x5199;&#x6210; 1.0 x 109&#x3002;1.0 x 109 &#x4EE3;&#x8868;&#x7684;&#x4E0D;&#x662F; 10 &#x4EBF;&#x8FD9;&#x4E00;&#x4E2A;&#x6570;&#xFF0C;&#x800C;&#x662F;&#x5B83;&#x9644;&#x8FD1;&#x8303;&#x56F4;&#x5185;&#x7684;&#x4E00;&#x5927;&#x5806;&#x6570;&#xFF0C;&#x8FD9;&#x5C31;&#x662F;&#x7CBE;&#x5EA6;&#x7684;&#x635F;&#x5931;&#x3002;&#x4E0D;&#x8FC7;&#x8FD9;&#x662F;&#x6545;&#x610F;&#x7684;&#xFF0C;&#x79D1;&#x5B66;&#x8BA1;&#x6570;&#x6CD5;&#x5C31;&#x662F;&#x7528;&#x7CBE;&#x5EA6;&#x4F5C;&#x4E3A;&#x4EE3;&#x4EF7;&#x6765;&#x6362;&#x53D6;&#x8BB0;&#x5F55;&#x7684;&#x7B80;&#x6D01;&#x3002;<br>
&#x8BA1;&#x7B97;&#x673A;&#x7684;&#x6D6E;&#x70B9;&#x6570;&#x4E5F;&#x662F;&#x5B8C;&#x5168;&#x4E00;&#x6837;&#x7684;&#x9053;&#x7406;&#x3002;&#x5B83;&#x672C;&#x8D28;&#x4E0A;&#x5C31;&#x662F;&#x4E00;&#x79CD;&#x79D1;&#x5B66;&#x8BA1;&#x6570;&#x6CD5;&#xFF0C;&#x53EA;&#x4E0D;&#x8FC7;&#x662F;&#x4E8C;&#x8FDB;&#x5236;&#x7684;&#x3002;&#x6BD4;&#x5982;&#xFF0C;&#x540C;&#x6837;&#x5728; JVM &#x91CC;&#x5360; 32 &#x4F4D;&#x7684; float (Float) &#x548C; int (Int)&#xFF0C;float &#x5374;&#x53EF;&#x4EE5;&#x8868;&#x8FBE;&#x6BD4; int &#x66F4;&#x5927;&#x7684;&#x6574;&#x6570;&#xFF1A;<br>
<img src="http://image.rengwuxian.com/2023/12/26/3c945317a7ed2.png" alt="&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5751;&#x5F88;&#x6DF1;&#xFF0C;&#x4F46;&#x4E0D;&#x591A;" loading="lazy"><br>
32 &#x4F4D;&#x7684;&#x4E8C;&#x8FDB;&#x5236;&#x6570;&#x636E;&#x53EA;&#x6709; 232 &#x4E2A;&#x53D6;&#x503C;&#xFF0C;&#x518D;&#x52A0;&#x4E0A;&#x8FD8;&#x8981;&#x533A;&#x5206;&#x6B63;&#x8D1F;&#xFF0C;&#x6240;&#x4EE5; <code>int</code> &#x7684;&#x6700;&#x5927;&#x503C;&#x662F; 231 - 1 &#x4E5F;&#x5C31;&#x662F;&#x8FD9;&#x4E2A;&#x6570;&#xFF1A;</p>
<blockquote>
<p><code>2,147,483,647</code></p>
</blockquote>
<p>&#x4F46;&#x662F; <code>float</code> &#x540C;&#x6837;&#x662F; 32 &#x4F4D;&#xFF0C;&#x5374;&#x80FD;&#x7A81;&#x7834;&#x8FD9;&#x4E2A;&#x9650;&#x5236;&#xFF0C;&#x8D4B;&#x503C;&#x4E3A;&#x8FD9;&#x4E48;&#x5927;&#x7684;&#x4E00;&#x4E2A;&#x6570;&#x3002;&#x522B;&#x8BF4; <code>int</code> &#x4E86;&#xFF0C;&#x5B83;&#x7684;&#x8303;&#x56F4;&#x6BD4; 64 &#x4F4D;&#x7684; <code>long</code> &#x8FD8;&#x5927;&#xFF1A;<br>
<img src="http://image.rengwuxian.com/2023/12/26/526f2e3eb3e5d.png" alt="&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5751;&#x5F88;&#x6DF1;&#xFF0C;&#x4F46;&#x4E0D;&#x591A;" loading="lazy"><br>
&#x9664;&#x6B64;&#x4E4B;&#x5916;&#xFF0C;&#x5B83;&#x8FD8;&#x80FD;&#x8868;&#x793A;&#x5C0F;&#x6570;&#xFF1A;</p>
<blockquote>
<p>&#x5C0F;&#x6570;&#x4EE3;&#x7801;&#x3002;</p>
</blockquote>
<p>&#x600E;&#x4E48;&#x505A;&#x5230;&#x7684;&#xFF1F;&#x9760;&#x727A;&#x7272;&#x7CBE;&#x5EA6;&#x6765;&#x505A;&#x5230;&#x7684;&#x3002;<code>float</code> &#x867D;&#x7136;&#x4E5F;&#x662F; 32 &#x4F4D;&#xFF0C;&#x4F46;&#x5B83;&#x4F1A;&#x4ECE;&#x91CC;&#x9762;&#x62FF;&#x51FA; 8 &#x4F4D;&#x6765;&#x4FDD;&#x5B58;&#x6307;&#x6570;&#x503C;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x5C0F;&#x6570;&#x70B9;&#x7684;&#x4F4D;&#x7F6E;&#x3002;8 &#x4F4D;&#x7684;&#x6307;&#x6570;&#x53EF;&#x4EE5;&#x8FBE;&#x5230; &#xB1;27 &#x4E5F;&#x5C31;&#x662F; &#xB1;128&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x5C0F;&#x6570;&#x70B9;&#x5F80;&#x5DE6;&#x6216;&#x8005;&#x5F80;&#x53F3; 128 &#x4E2A;&#x4E8C;&#x8FDB;&#x5236;&#x4F4D;&#xFF0C;&#x6362;&#x7B97;&#x6210;&#x5341;&#x8FDB;&#x5236;&#x662F;&#x5DE6;&#x53F3;&#x5404; 38 &#x4E2A;&#x5341;&#x8FDB;&#x5236;&#x4F4D;&#x3002;&#x6BCF;&#x79FB;&#x52A8;&#x4E00;&#x4F4D;&#x5C31;&#x662F;&#x653E;&#x5927;&#x6216;&#x8005;&#x7F29;&#x5C0F; 10 &#x500D;&#xFF0C;38 &#x4F4D;&#x5440;&#xFF0C;&#x975E;&#x5E38;&#x5927;&#x7684;&#x653E;&#x5927;&#x548C;&#x7F29;&#x5C0F;&#x500D;&#x6570;&#x4E86;&#x2014;&#x2014;<code>int</code> &#x53EA;&#x8BB0;&#x5F55;&#x6574;&#x6570;&#xFF0C;&#x4E0D;&#x8BB0;&#x5F55;&#x5C0F;&#x6570;&#xFF0C;&#x4F46;&#x5B83;&#x6700;&#x5927;&#x7684;&#x503C;&#x4E5F;&#x53EA;&#x662F;&#x4E00;&#x4E2A;&#x5341;&#x4F4D;&#x6570;&#xFF1A;</p>
<blockquote>
<p>2,147,483,647</p>
</blockquote>
<p>&#x8FD9;&#x5C31;&#x662F;&#x4E3A;&#x4EC0;&#x4E48; Java &#x548C; Kotlin &#x7684; <code>float (Float)</code> &#x53EF;&#x4EE5;&#x4FDD;&#x5B58;&#x67D0;&#x4E9B;&#x5F88;&#x5927;&#x7684;&#x6574;&#x6570;&#xFF0C;&#x56E0;&#x4E3A;&#x5B83;&#x6709;&#x4E13;&#x95E8;&#x7684;&#x6307;&#x6570;&#x4F4D;&#xFF1A;<br>
<img src="http://image.rengwuxian.com/2023/12/26/8d5179c97e616.png" alt="&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5751;&#x5F88;&#x6DF1;&#xFF0C;&#x4F46;&#x4E0D;&#x591A;" loading="lazy"><br>
&#x4F46;&#x540C;&#x6837;&#xFF0C;&#x5B83;&#x7528;&#x8FD9; 8 &#x4F4D;&#x6765;&#x4FDD;&#x5B58;&#x6307;&#x6570;&#xFF0C;&#x90A3;&#x4E48;&#x76F8;&#x5E94;&#x7684;&#x5B83;&#x7684;&#x6709;&#x6548;&#x6570;&#x5B57;&#x5C31;&#x53D8;&#x77ED;&#x4E86;&#xFF0C;&#x6240;&#x4EE5;&#x5B83;&#x7684;&#x7CBE;&#x5EA6;&#x662F;&#x6BD4; <code>int</code> &#x8981;&#x4F4E;&#x7684;&#x3002;&#x8FD9;&#x5C31;&#x5BFC;&#x81F4;&#x67D0;&#x4E9B; <code>int</code> &#x80FD;&#x8868;&#x8FBE;&#x7684;&#x6574;&#x6570;&#xFF0C;<code>float</code> &#x5374;&#x8868;&#x8FBE;&#x4E0D;&#x4E86;&#xFF0C;&#x6BD4;&#x5982; 50000005&#xFF08;&#x4E94;&#x5343;&#x4E07;&#x96F6;&#x4E94;&#xFF09;&#xFF1A;<br>
<img src="http://image.rengwuxian.com/2023/12/26/6511eebee9498.png" alt="&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5751;&#x5F88;&#x6DF1;&#xFF0C;&#x4F46;&#x4E0D;&#x591A;" loading="lazy"><br>
&#x8FD9;&#x4E2A;&#x6570;&#x867D;&#x7136;&#x4E0D;&#x957F;&#xFF0C;&#x4F46;&#x662F;&#x7CBE;&#x5EA6;&#x2014;&#x2014;&#x592A;&#x9AD8;&#x4E86;&#x3002;<br>
&#x867D;&#x7136;&#x53EA;&#x662F;&#x8D85;&#x51FA;&#x7CBE;&#x5EA6;&#x800C;&#x4E0D;&#x662F;&#x8D85;&#x51FA;&#x53D6;&#x503C;&#x8303;&#x56F4;&#xFF0C;&#x6240;&#x4EE5;&#x53EA;&#x663E;&#x793A;&#x4E86;&#x9EC4;&#x7EBF;&#x8B66;&#x544A;&#x800C;&#x4E0D;&#x4F1A;&#x62D2;&#x7EDD;&#x7F16;&#x8BD1;&#xFF0C;&#x4F46;&#x7531;&#x4E8E; <code>Float</code> &#x786E;&#x5B9E;&#x8868;&#x8FBE;&#x4E0D;&#x4E86; 50000005&#xFF0C;&#x6240;&#x4EE5;&#x5728;&#x8FD0;&#x884C;&#x65F6;&#x53EA;&#x80FD;&#x5728;&#x5B83;&#x7684;&#x80FD;&#x529B;&#x8303;&#x56F4;&#x5185;&#x62FF;&#x4E00;&#x4E2A;&#x6700;&#x63A5;&#x8FD1;&#x7684;&#x6570;&#x6765;&#x8FDB;&#x884C;&#x4F7F;&#x7528;&#xFF0C;&#x800C;&#x65E0;&#x6CD5;&#x4F7F;&#x7528;&#x8FD9;&#x4E2A;&#x6570;&#x672C;&#x8EAB;&#xFF1A;<br>
<img src="http://image.rengwuxian.com/2023/12/26/3d3ed584f5c9f.png" alt="&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5751;&#x5F88;&#x6DF1;&#xFF0C;&#x4F46;&#x4E0D;&#x591A;" loading="lazy"><br>
<img src="http://image.rengwuxian.com/2023/12/26/e9344670bf65a.png" alt="&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5751;&#x5F88;&#x6DF1;&#xFF0C;&#x4F46;&#x4E0D;&#x591A;" loading="lazy"><br>
&#x53EF;&#x80FD;&#x8DDF;&#x5F88;&#x591A;&#x4EBA;&#x7684;&#x76F4;&#x89C2;&#x60F3;&#x6CD5;&#x4E0D;&#x592A;&#x4E00;&#x6837;&#xFF0C;&#x4E3A;&#x4EC0;&#x4E48;&#x672B;&#x4F4D;&#x662F; 5 &#x4E0D;&#x884C;&#xFF0C;&#x4F46;&#x6362;&#x6210; 4 &#x5C31;&#x53EF;&#x4EE5;&#x4E86;&#xFF1F;&#x4E0D;&#x662F;&#x5E94;&#x8BE5;&#x6362;&#x6210; 0 &#x624D;&#x884C;&#x5417;&#xFF1F;&#x56E0;&#x4E3A;&#x8FD9;&#x662F;&#x4E8C;&#x8FDB;&#x5236;&#x7684;&#x3002;&#x6211;&#x4EEC;&#x770B;&#x7740;&#x8FD9;&#x4E2A;&#x6570;&#x4E0D;&#x591F;&#x6574;&#x3001;&#x7CBE;&#x5EA6;&#x4E0D;&#x591F;&#x4F4E;&#xFF0C;&#x8FD9;&#x662F;&#x56E0;&#x4E3A;&#x6211;&#x4EEC;&#x662F;&#x5341;&#x8FDB;&#x5236;&#x7684;&#x601D;&#x7EF4;&#xFF0C;&#x4F46;&#x53EA;&#x8981;&#x4E8C;&#x8FDB;&#x5236;&#x89C9;&#x5F97;&#x5B83;&#x633A;&#x6574;&#x7684;&#x3001;&#x89C9;&#x5F97;&#x5B83;&#x6CA1;&#x6709;&#x8D85;&#x51FA;&#x7CBE;&#x5EA6;&#x8303;&#x56F4;&#x5C31;&#x591F;&#x4E86;&#x3002;</p>
<blockquote>
<p>50000000: 10111110101111000010000000 // &#x6709;&#x6548;&#x6570;&#x5B57; 19 &#x4F4D;&#xFF0C;holde &#x5F97;&#x4F4F;<br>
50000004: 10111110101111000010000100 // &#x6709;&#x6548;&#x6570;&#x5B57; 24 &#x4F4D;&#xFF0C;&#x540C;&#x6837; hold &#x5F97;&#x4F4F;<br>
50000005: 10111110101111000010000101 // &#x6709;&#x6548;&#x6570;&#x5B57; 26 &#x4F4D;&#xFF0C;hold &#x4E0D;&#x4F4F;&#xFF0C;&#x300C;&#x56DB;&#x820D;&#x4E94;&#x5165;&#x300D;&#x5230; 50000004</p>
</blockquote>
<p>&#x800C; int &#x5728;&#x8FD9;&#x65F6;&#x5019;&#x5C31;&#x5F88;&#x9760;&#x8C31;&#x4E86;&#xFF0C;&#x5B83;&#x662F;&#x53EF;&#x4EE5;&#x8868;&#x8FBE;&#x81EA;&#x5DF1;&#x8303;&#x56F4;&#x5185;&#x7684;&#x4EFB;&#x4F55;&#x6574;&#x6570;&#x7684;&#xFF0C;50000005 &#x5BF9;&#x5B83;&#x5B8C;&#x5168;&#x6CA1;&#x95EE;&#x9898;&#xFF1A;<br>
<img src="http://image.rengwuxian.com/2023/12/26/cd861cec2d408.png" alt="&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5751;&#x5F88;&#x6DF1;&#xFF0C;&#x4F46;&#x4E0D;&#x591A;" loading="lazy"><br>
<img src="http://image.rengwuxian.com/2023/12/26/b181b63391d54.png" alt="&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5751;&#x5F88;&#x6DF1;&#xFF0C;&#x4F46;&#x4E0D;&#x591A;" loading="lazy"><br>
<img src="http://image.rengwuxian.com/2023/12/26/7f70a6233dbd1.png" alt="&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5751;&#x5F88;&#x6DF1;&#xFF0C;&#x4F46;&#x4E0D;&#x591A;" loading="lazy"><br>
&#x8FD9;&#x662F;&#x6574;&#x6570;&#x7684;&#x60C5;&#x51B5;&#xFF0C;&#x6362;&#x6210;&#x5C0F;&#x6570;&#x4E5F;&#x662F;&#x540C;&#x6837;&#x7684;&#x9053;&#x7406;&#x3002;&#x4F60;&#x7528; <code>Float</code> &#x53EF;&#x4EE5;&#x8868;&#x793A; 500000&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x8868;&#x793A; 0.05&#xFF0C;&#x4F46;&#x65E0;&#x6CD5;&#x8868;&#x793A; 500000.05&#xFF0C;&#x56E0;&#x4E3A;&#x5B83;&#x8D85;&#x51FA;&#x7CBE;&#x5EA6;&#x8303;&#x56F4;&#x4E86;&#xFF1A;<br>
<img src="http://image.rengwuxian.com/2023/12/26/41671d5193acb.png" alt="&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5751;&#x5F88;&#x6DF1;&#xFF0C;&#x4F46;&#x4E0D;&#x591A;" loading="lazy"><br>
&#x4E0D;&#x8FC7;&#x4E8C;&#x8FDB;&#x5236;&#x7684;&#x6570;&#x503C;&#x5E76;&#x4E0D;&#x80FD;&#x76F4;&#x63A5;&#x7167;&#x6284;&#x5341;&#x8FDB;&#x5236;&#x7684;&#x5C0F;&#x6570;&#x70B9;&#x5E73;&#x79FB;&#xFF0C;&#x6240;&#x4EE5;&#x4F60;&#x4F1A;&#x53D1;&#x73B0;&#x52A0;&#x4E86;&#x5C0F;&#x6570;&#x70B9;&#x4E4B;&#x540E;&#xFF0C;500000.05f &#x4F1A;&#x88AB;&#x300C;&#x56DB;&#x820D;&#x4E94;&#x5165;&#x300D;&#x5230; 500000.06 &#x800C;&#x6CA1;&#x6709;&#x8DDF;&#x524D;&#x9762;&#x4E00;&#x6837;&#x662F; 04&#xFF1A;<br>
<img src="http://image.rengwuxian.com/2023/12/26/6119d213ccc24.png" alt="&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5751;&#x5F88;&#x6DF1;&#xFF0C;&#x4F46;&#x4E0D;&#x591A;" loading="lazy"><br>
<img src="http://image.rengwuxian.com/2023/12/26/ac926e31fd258.png" alt="&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5751;&#x5F88;&#x6DF1;&#xFF0C;&#x4F46;&#x4E0D;&#x591A;" loading="lazy"><br>
&#x800C;&#x5982;&#x679C;&#x628A;&#x5C0F;&#x6570;&#x70B9;&#x5F80;&#x53F3;&#x79FB;&#x4E00;&#x4F4D;&#xFF0C;&#x6539;&#x6210; 5000000.5&#xFF0C;&#x5C31;&#x76F4;&#x63A5;&#x4E0D;&#x7528;&#x300C;&#x56DB;&#x820D;&#x4E94;&#x5165;&#x300D;&#x4E86;&#xFF1A;<br>
<img src="http://image.rengwuxian.com/2023/12/26/3f1bf81903ce8.png" alt="&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5751;&#x5F88;&#x6DF1;&#xFF0C;&#x4F46;&#x4E0D;&#x591A;" loading="lazy"><br>
<img src="http://image.rengwuxian.com/2023/12/26/6360554ebdd3d.png" alt="&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5751;&#x5F88;&#x6DF1;&#xFF0C;&#x4F46;&#x4E0D;&#x591A;" loading="lazy"><br>
&#x4F60;&#x770B;&#xFF0C;&#x9EC4;&#x7EBF;&#x6CA1;&#x4E86;&#xFF0C;&#x6253;&#x5370;&#x51FA;&#x6765;&#x4E5F;&#x662F;&#x6CA1;&#x95EE;&#x9898;&#x7684;&#x3002;&#x56E0;&#x4E3A; 0.5 &#x7684;&#x4E8C;&#x8FDB;&#x5236;&#x683C;&#x5F0F;&#x662F; 0.1&#xFF0C;&#x53EA;&#x7528;&#x4E00;&#x4F4D;&#x5C0F;&#x6570;&#x5C31;&#x8868;&#x8FBE;&#x4E86;&#xFF0C;&#x6240;&#x4EE5;&#x6574;&#x4E2A;&#x6570;&#x7684;&#x7CBE;&#x5EA6;&#x6CA1;&#x6709;&#x8D85;&#xFF1A;</p>
<blockquote>
<p>5000000.5&#xFF1A; 10011000100101101000000.1 // &#x6709;&#x6548;&#x6570;&#x5B57; 24 &#x4F4D;&#xFF0C;hold &#x5F97;&#x4F4F;</p>
</blockquote>
<p>&#x540C;&#x6837;&#x662F; 32 &#x4F4D;&#x7684;&#x5927;&#x5C0F;&#xFF0C;<code>float</code> &#x5374;&#x6BD4; int &#x5C11;&#x4E86; 8 &#x4F4D;&#x6709;&#x6548;&#x6570;&#x5B57;&#x957F;&#x5EA6;&#xFF0C;&#x964D;&#x4F4E;&#x4E86;&#x7CBE;&#x5EA6;&#xFF0C;&#x8FD9;&#x662F;&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5F31;&#x70B9;&#x6240;&#x5728;&#x3002;&#x800C;&#x8FD9;&#x4E2A;&#x5F31;&#x70B9;&#x4E5F;&#x662F;&#x6545;&#x610F;&#x7684;&#xFF0C;&#x56E0;&#x4E3A;&#x8FD9;&#x5C11;&#x4E86;&#x7684; 8 &#x4F4D;&#x7528;&#x6765;&#x5B58;&#x50A8;&#x6307;&#x6570;&#x4E86;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x5C0F;&#x6570;&#x70B9;&#x7684;&#x4F4D;&#x7F6E;&#xFF0C;&#x6539;&#x53D8;&#x6307;&#x6570;&#x7684;&#x503C;&#x5C31;&#x662F;&#x6539;&#x53D8;&#x5C0F;&#x6570;&#x70B9;&#x7684;&#x4F4D;&#x7F6E;&#x2014;&#x2014;&#x8FD9;&#x4E5F;&#x5C31;&#x662F;&#x300C;&#x6D6E;&#x70B9;&#x6570;&#x300D;&#x8FD9;&#x4E2A;&#x540D;&#x5B57;&#x7684;&#x542B;&#x4E49;&#x3002;&#x6240;&#x4EE5;&#x5B83;&#x662F;&#x7528;&#x7CBE;&#x5EA6;&#x4F5C;&#x4E3A;&#x4EE3;&#x4EF7;&#xFF0C;&#x6362;&#x6765;&#x4E86;&#x66F4;&#x5927;&#x7684;&#x8868;&#x8FBE;&#x8303;&#x56F4;&#xFF0C;&#x8BA9;&#x5B83;&#x53EF;&#x4EE5;&#x8868;&#x8FBE;&#x5C0F;&#x6570;&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x8868;&#x8FBE;&#x5F88;&#x5927;&#x7684;&#x6574;&#x6570;&#xFF0C;&#x8FDC;&#x8FDC;&#x8D85;&#x8FC7; <code>int</code> &#x4E0A;&#x9650;&#x7684;&#x6574;&#x6570;&#x3002;<br>
&#x6D6E;&#x70B9;&#x6570;&#x53EF;&#x4EE5;&#x7528;&#x4E8E;&#x8868;&#x793A;&#x5C0F;&#x6570;&#xFF0C;&#x6240;&#x4EE5;&#x6211;&#x4EEC;&#x901A;&#x5E38;&#x628A;&#x5B83;&#x8DDF;&#x5C0F;&#x6570;&#x753B;&#x7B49;&#x53F7;&#xFF1B;&#x4F46;&#x5176;&#x5B9E;&#x5BF9;&#x4E8E;&#x4E00;&#x4E9B;&#x6570;&#x503C;&#x7279;&#x522B;&#x5927;&#x4F46;&#x6709;&#x6548;&#x6570;&#x5B57;&#x5E76;&#x4E0D;&#x591A;&#x7684;&#x6574;&#x6570;&#x7684;&#x60C5;&#x51B5;&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x8003;&#x8651;&#x4F7F;&#x7528;&#x6D6E;&#x70B9;&#x6570;&#x3002;<br>
&#x4E0D;&#x8FC7;&#x5C31;&#x662F;&#x521A;&#x624D;&#x8BF4;&#x8FC7;&#x7684;&#xFF0C;&#x6709;&#x5F97;&#x6709;&#x5931;&#xFF0C;&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x7CBE;&#x5EA6;&#x6BD4;&#x8F83;&#x4F4E;&#x3002;&#x6709;&#x591A;&#x4F4E;&#x5462;&#xFF1F;&#x5BF9;&#x4E8E; <code>float</code> &#x6765;&#x8BF4;&#xFF0C;&#x5B83;&#x7684;&#x6709;&#x6548;&#x6570;&#x5B57;&#x6362;&#x7B97;&#x6210;&#x5341;&#x8FDB;&#x5236;&#x662F; 6-7 &#x4F4D;&#x3002;&#x5230;&#x4E86; 8 &#x4F4D;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x6709;&#x5F88;&#x591A;&#x6570;&#x5C31;&#x65E0;&#x6CD5;&#x7CBE;&#x786E;&#x8868;&#x8FBE;&#x4E86;&#xFF0C;&#x6BD4;&#x5982; 500000.05&#x3002;&#x800C; <code>double</code> &#x7684;&#x957F;&#x5EA6;&#x662F; <code>float</code> &#x7684;&#x4E24;&#x500D;&#xFF0C;&#x6709; 64 &#x4F4D;&#xFF0C;&#x5B83;&#x7684;&#x7CBE;&#x5EA6;&#x5C31;&#x6BD4;&#x8F83;&#x9AD8;&#x4E86;&#xFF0C;&#x5B83;&#x7684;&#x6709;&#x6548;&#x6570;&#x5B57;&#x76F8;&#x5F53;&#x4E8E; 15-16 &#x4F4D;&#x7684;&#x5341;&#x8FDB;&#x5236;&#x6709;&#x6548;&#x6570;&#x5B57;&#xFF0C;&#x80FD;&#x5E94;&#x4ED8;&#x5927;&#x90E8;&#x5206;&#x7684;&#x9700;&#x6C42;&#x4E86;&#x2014;&#x2014;&#x5F53;&#x7136;&#x4E86;&#x5982;&#x679C;&#x4F60;&#x9762;&#x5411;&#x7684;&#x662F;&#x6574;&#x6570;&#xFF0C;&#x90A3;&#x76F4;&#x63A5;&#x7528; <code>int</code> &#x548C; <code>long</code> &#x53EF;&#x80FD;&#x66F4;&#x597D;&#x3002;</p>
<h2 id="float-vs-double">float vs double</h2>
<p>&#x8BF4;&#x5230;&#x8FD9;&#x513F;&#x5462;&#xFF0C;&#x54B1;&#x5C31;&#x8BF4;&#x4E00;&#x4E0B;&#x5173;&#x4E8E; <code>float (Float)</code> &#x548C; <code>double (Double)</code> &#x7684;&#x9009;&#x62E9;&#x95EE;&#x9898;&#x3002;&#x8FD9;&#x5176;&#x5B9E;&#x662F;&#x4E00;&#x4E2A;&#x5F88;&#x5BB9;&#x6613;&#x51FA;&#x9519;&#x4F46;&#x662F;&#x7ECF;&#x5E38;&#x88AB;&#x5FFD;&#x7565;&#x7684;&#x5730;&#x65B9;&#xFF1A;<code>float</code> &#x7684;&#x7CBE;&#x5EA6;&#x662F;&#x6BD4;&#x8F83;&#x4F4E;&#x7684;&#xFF0C;&#x5BF9;&#x4E8E;&#x5F88;&#x591A;&#x573A;&#x666F;&#x90FD;&#x53EF;&#x80FD;&#x4F1A;&#x4E0D;&#x591F;&#x7528;&#x3002;&#x6BD4;&#x5982;&#x4F60;&#x5982;&#x679C;&#x7528;&#x6765;&#x505A;&#x91D1;&#x989D;&#x7684;&#x8BA1;&#x7B97;&#xFF0C;&#x53BB;&#x6389;&#x5C0F;&#x6570;&#x70B9;&#x53F3;&#x8FB9;&#x7684;&#x4E24;&#x4F4D;&#x4E4B;&#x540E;&#xFF0C;&#x53EA;&#x6709;&#x4E94;&#x4F4D;&#x6570;&#x5B57;&#x53EF;&#x4EE5;&#x7528;&#x4E86;&#xFF0C;&#x4E5F;&#x5C31;&#x662F; 10 &#x4E07;&#x7EA7;&#x7684;&#x91D1;&#x989D;&#x5C31;&#x4E0D;&#x80FD;&#x7528; <code>float</code> &#x4E86;&#x3002;&#x90A3;&#x4E48;&#x5728;&#x9009;&#x62E9;&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x7C7B;&#x578B;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x4F60;&#x8981;&#x65F6;&#x523B;&#x610F;&#x8BC6;&#x5230;&#x8FD9;&#x4EF6;&#x4E8B;&#xFF0C;&#x5728;&#x7CBE;&#x5EA6;&#x4E0D;&#x591F;&#x7528;&#x7684;&#x65F6;&#x5019;&#x5C31;&#x9009; <code>double</code>&#x3002;<br>
&#x8FD9;&#x5176;&#x5B9E;&#x4E5F;&#x662F;&#x4E3A;&#x4EC0;&#x4E48;&#x5728; Java &#x548C; Kotlin &#x91CC;&#x6574;&#x6570;&#x7684;&#x9ED8;&#x8BA4;&#x7C7B;&#x578B;&#x867D;&#x7136;&#x662F;&#x66F4;&#x77ED;&#x7684; <code>int (Int)</code> &#x800C;&#x4E0D;&#x662F; <code>long (Long)</code>&#xFF0C;&#x4F46;&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x9ED8;&#x8BA4;&#x7C7B;&#x578B;&#x5374;&#x662F;&#x66F4;&#x957F;&#x7684; <code>double (Double)</code>&#xFF0C;&#x800C;&#x4E0D;&#x662F; <code>float (Float)</code>&#xFF1A;<br>
<img src="http://image.rengwuxian.com/2023/12/26/6f287b6234c4f.png" alt="&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5751;&#x5F88;&#x6DF1;&#xFF0C;&#x4F46;&#x4E0D;&#x591A;" loading="lazy"></p>
<blockquote>
<p>&#x7C7B;&#x578B;&#x662F; double (Double)&#x3002;</p>
</blockquote>
<p>&#x56E0;&#x4E3A; <code>float (Float)</code> &#x7684;&#x9002;&#x7528;&#x573A;&#x666F;&#x8FC7;&#x4E8E;&#x53D7;&#x9650;&#x4E86;&#x3002;<br>
&#x5F53;&#x7136;&#x4E86;&#x5982;&#x679C;&#x4F60;&#x660E;&#x786E;&#x77E5;&#x9053;&#x5728;&#x67D0;&#x4E2A;&#x573A;&#x666F;&#x4E0B; <code>float</code> &#x591F;&#x7528;&#x4E86;&#xFF0C;&#x90A3;&#x80AF;&#x5B9A;&#x7528; <code>float</code> &#x66F4;&#x597D;&#xFF0C;&#x7701;&#x5185;&#x5B58;&#x561B;&#x3002;<br>
&#x4E0D;&#x8FC7;&#x8BF4;&#x5230;&#x7701;&#x5185;&#x5B58;&#x6211;&#x53C8;&#x8981;&#x8BF4;&#x4E86;&#xFF0C;&#x4E0D;&#x7528;&#x8FC7;&#x4E8E;&#x7EA0;&#x7ED3;&#xFF0C;&#x5BF9;&#x4E8E;&#x5F88;&#x591A;&#x573A;&#x666F;&#x6765;&#x8BF4;&#xFF0C;<code>double</code> &#x7684;&#x53CC;&#x500D;&#x5185;&#x5B58;&#x5360;&#x7528;&#x5E26;&#x6765;&#x7684;&#x6027;&#x80FD;&#x635F;&#x8017;&#x5176;&#x5B9E;&#x662F;&#x5F88;&#x5C0F;&#x7684;&#xFF0C;&#x5C0F;&#x5230;&#x5B8C;&#x5168;&#x53EF;&#x4EE5;&#x5FFD;&#x7565;&#x2014;&#x2014;&#x4F60;&#x60F3;&#x60F3;&#xFF0C;32 &#x4F4D;&#x548C; 64 &#x4F4D;&#x624D;&#x5DEE;&#x591A;&#x5C11;&#xFF1F;&#x5DEE; 32 &#x4F4D;&#xFF0C;&#x4E5F;&#x5C31;&#x662F; 4 &#x4E2A;&#x5B57;&#x8282;&#xFF0C;4 &#x4E2A; B&#xFF0C;&#x4F60;&#x7701; 1000 &#x4E2A;&#x624D; 4K &#x7684;&#x5927;&#x5C0F;&#x2014;&#x2014;&#x6240;&#x4EE5;&#x5982;&#x679C;&#x4F60;&#x771F;&#x7684;&#x60F3;&#x61D2;&#x7701;&#x4E8B;&#xFF0C;&#x5168;&#x90FD;&#x7528; <code>double</code> &#x5927;&#x591A;&#x6570;&#x65F6;&#x5019;&#x4E5F;&#x662F;&#x6CA1;&#x6709;&#x4EFB;&#x4F55;&#x95EE;&#x9898;&#x7684;&#x3002;&#x4E00;&#x4E2A;&#x5B57;&#x7B26;&#x90FD; 16 &#x4F4D;&#x4E86;&#xFF0C;&#x4E5F;&#x6CA1;&#x89C1;&#x8C01;&#x56E0;&#x4E3A;&#x8FD9;&#x4E2A;&#x53BB;&#x7CBE;&#x7B80;&#x8F6F;&#x4EF6;&#x754C;&#x9762;&#x7684;&#x6587;&#x5B57;&#x554A;&#x662F;&#x5427;&#x3002;&#x4E0D;&#x8FC7;&#x4E00;&#x4E9B;&#x8BA1;&#x7B97;&#x5BC6;&#x96C6;&#x578B;&#x6216;&#x8005;&#x5185;&#x5B58;&#x5BC6;&#x96C6;&#x578B;&#x7684;&#x5DE5;&#x4F5C;&#xFF0C;&#x6BD4;&#x5982;&#x9AD8;&#x9891;&#x7684;&#x5FAA;&#x73AF;&#x8FC7;&#x7A0B;&#x6216;&#x8005;&#x67D0;&#x4E9B;&#x9700;&#x8981;&#x5927;&#x91CF;&#x590D;&#x7528;&#x7684;&#x6570;&#x636E;&#x7ED3;&#x6784;&#xFF0C;&#x8FD8;&#x662F;&#x5F97;&#x614E;&#x91CD;&#x8003;&#x8651;&#x6570;&#x503C;&#x7C7B;&#x578B;&#x7684;&#x554A;&#xFF0C;&#x80FD;&#x7528; <code>float</code> &#x5C31;&#x7528; <code>float</code>&#x3002;&#x4F55;&#x6B62;&#x662F; <code>float</code> &#x5440;&#xFF0C;&#x5728;&#x6027;&#x80FD;&#x8981;&#x6C42;&#x9AD8;&#x7684;&#x573A;&#x666F;&#x91CC;&#xFF0C;&#x4F60;&#x751A;&#x81F3;&#x53EF;&#x80FD;&#x9700;&#x8981;&#x8003;&#x8651;&#x8981;&#x4E0D;&#x8981;&#x7528;&#x5355;&#x4E2A; <code>int</code> &#x6216;&#x8005; <code>long</code> &#x53D8;&#x91CF;&#x6765;&#x4EE3;&#x66FF;&#x591A;&#x4E2A; <code>boolean</code> &#x53D8;&#x91CF;&#x53BB;&#x8FDB;&#x884C;&#x8054;&#x5408;&#x5B58;&#x50A8;&#xFF0C;&#x4EE5;&#x6B64;&#x6765;&#x8282;&#x7EA6;&#x5185;&#x5B58;&#x3002;&#x800C;&#x5BF9;&#x4E8E;&#x4E00;&#x822C;&#x573A;&#x666F;&#xFF0C;<code>double</code> &#x867D;&#x7136;&#x5360;&#x53CC;&#x500D;&#x5185;&#x5B58;&#xFF0C;&#x4F46;&#x5176;&#x5B9E;&#x5F71;&#x54CD;&#x4E0D;&#x5927;&#x3002;</p>
<h2 id="01-02-03-%E7%9A%84%E9%97%AE%E9%A2%98">0.1 + 0.2 != 0.3 &#x7684;&#x95EE;&#x9898;</h2>
<p>&#x9664;&#x4E86;&#x7CBE;&#x5EA6;&#xFF0C;&#x6D6E;&#x70B9;&#x6570;&#x8FD8;&#x6709;&#x4E2A;&#x95EE;&#x9898;&#x662F;&#xFF0C;&#x5B83;&#x662F;&#x4E8C;&#x8FDB;&#x5236;&#x7684;&#x3002;&#x8FD9;&#x5BF9;&#x6574;&#x6570;&#x8FD8;&#x597D;&#xFF0C;&#x4F46;&#x5BF9;&#x4E8E;&#x5C0F;&#x6570;&#x6765;&#x8BF4;&#xFF0C;&#x6709;&#x5F88;&#x591A;&#x5341;&#x8FDB;&#x5236;&#x5C0F;&#x6570;&#x662F;&#x65E0;&#x6CD5;&#x8F6C;&#x6362;&#x6210;&#x6709;&#x9650;&#x7684;&#x4E8C;&#x8FDB;&#x5236;&#x5C0F;&#x6570;&#x7684;&#x3002;<br>
&#x4E8C;&#x8FDB;&#x5236;&#x53EA;&#x6709; 0 &#x548C; 1&#xFF0C;&#x6240;&#x4EE5;&#x5B83;&#x7684; 0.1 &#x5C31;&#x662F; 2 &#x7684; -1 &#x6B21;&#x65B9;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x5341;&#x8FDB;&#x5236;&#x7684; 0.5&#x2014;&#x2014;&#x4E8C;&#x8FDB;&#x5236;&#x7684; 0.1 &#x8DDF;&#x5341;&#x8FDB;&#x5236;&#x7684; 0.5 &#x662F;&#x76F8;&#x7B49;&#x7684;&#xFF1B;&#x540C;&#x7406;&#xFF0C;&#x5B83;&#x7684; 0.01 &#x5C31;&#x662F; 2 &#x7684; -2 &#x6B21;&#x65B9;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x5341;&#x8FDB;&#x5236;&#x7684; 0.25&#xFF1B;&#x800C;&#x5B83;&#x4FE9;&#x76F8;&#x52A0;&#x7684;&#x7ED3;&#x679C; 0.11&#xFF0C;&#x5BF9;&#x5E94;&#x7684;&#x5C31;&#x662F;&#x5341;&#x8FDB;&#x5236;&#x7684; 0.75 &#x3002;&#x603B;&#x4E4B;&#xFF0C;&#x4F60;&#x7528; 1 &#x53BB;&#x53CD;&#x590D;&#x5730;&#x9664;&#x4EE5;&#x4E8C;&#xFF0C;&#x8FD9;&#x4E9B;&#x7ED3;&#x679C;&#x2014;&#x2014;&#x4EE5;&#x53CA;&#x8FD9;&#x4E9B;&#x7ED3;&#x679C;&#x7684;&#x52A0;&#x548C;&#x2014;&#x2014;&#x90FD;&#x53EF;&#x4EE5;&#x88AB;&#x4E8C;&#x8FDB;&#x5236;&#x7684;&#x5C0F;&#x6570;&#x5B8C;&#x7F8E;&#x8868;&#x793A;&#x3002;&#x4F46;&#x5982;&#x679C;&#x4E00;&#x4E2A;&#x5C0F;&#x6570;&#x65E0;&#x6CD5;&#x88AB;&#x62C6;&#x6210;&#x8FD9;&#x79CD;&#x5F62;&#x5F0F;&#xFF0C;&#x90A3;&#x5B83;&#x5C31;&#x65E0;&#x6CD5;&#x88AB;&#x5B8C;&#x7F8E;&#x8F6C;&#x6362;&#x6210;&#x4E8C;&#x8FDB;&#x5236;&#xFF0C;&#x6BD4;&#x5982;&#x2014;&#x2014;0.1&#x3002;<br>
&#x53EF;&#x80FD;&#x6709;&#x70B9;&#x53CD;&#x76F4;&#x89C9;&#xFF0C;&#x4F46;&#x5341;&#x8FDB;&#x5236;&#x7684; 0.1 &#x662F;&#x65E0;&#x6CD5;&#x88AB;&#x8F6C;&#x6362;&#x6210;&#x4E00;&#x4E2A;&#x6709;&#x9650;&#x7684;&#x4E8C;&#x8FDB;&#x5236;&#x5C0F;&#x6570;&#x7684;&#xFF0C;&#x5B83;&#x53EA;&#x80FD;&#x7528;&#x4E00;&#x4E2A;&#x65E0;&#x9650;&#x5FAA;&#x73AF;&#x5C0F;&#x6570;&#x6765;&#x8868;&#x8FBE;&#xFF1A;</p>
<blockquote>
<p>0.00011001100110011...</p>
</blockquote>
<p>&#x800C;&#x4E14;&#xFF0C;&#x6D6E;&#x70B9;&#x6570;&#x5E76;&#x4E0D;&#x4F1A;&#x771F;&#x7684;&#x628A;&#x5B83;&#x5F53;&#x505A;&#x65E0;&#x9650;&#x5FAA;&#x73AF;&#x5C0F;&#x6570;&#x6765;&#x4FDD;&#x5B58;&#xFF0C;&#x800C;&#x662F;&#x5728;&#x81EA;&#x5DF1;&#x7684;&#x7CBE;&#x5EA6;&#x8303;&#x56F4;&#x5185;&#x8FDB;&#x884C;&#x622A;&#x65AD;&#xFF0C;&#x628A;&#x5B83;&#x5F53;&#x4E00;&#x4E2A;&#x6709;&#x9650;&#x5C0F;&#x6570;&#x6765;&#x4FDD;&#x5B58;&#x3002;&#x8FD9;&#x5C31;&#x9020;&#x6210;&#x4E86;&#x4E00;&#x5B9A;&#x7684;&#x8BEF;&#x5DEE;&#x3002;&#x6211;&#x4EEC;&#x7528;&#x7684;&#x5404;&#x79CD;&#x7F16;&#x7A0B;&#x8BED;&#x8A00;&#x548C;&#x8FD0;&#x884C;&#x65F6;&#x73AF;&#x5883;&#x4F1A;&#x5BF9;&#x8FD9;&#x79CD;&#x95EE;&#x9898;&#x8FDB;&#x884C;&#x9488;&#x5BF9;&#x6027;&#x4F18;&#x5316;&#xFF0C;&#x8BA9;&#x6211;&#x4EEC;&#x5C1D;&#x8BD5;&#x6253;&#x5370; 0.1 &#x7684;&#x65F6;&#x5019;&#x4F9D;&#x7136;&#x53EF;&#x4EE5;&#x6B63;&#x5E38;&#x6253;&#x5370;&#x51FA; 0.1&#xFF0C;&#x4F46;&#x5728;&#x8FDB;&#x884C;&#x4E86;&#x8FD0;&#x7B97;&#x4E4B;&#x540E;&#xFF0C;&#x53E0;&#x52A0;&#x7684;&#x8BEF;&#x5DEE;&#x53EF;&#x80FD;&#x5C31;&#x4F1A;&#x843D;&#x5728;&#x8FD9;&#x79CD;&#x4F18;&#x5316;&#x7684;&#x8303;&#x56F4;&#x4E4B;&#x5916;&#x4E86;&#xFF0C;&#x8FD9;&#x5C31;&#x662F;&#x4E3A;&#x4EC0;&#x4E48;&#x5728;&#x5F88;&#x591A;&#x8BED;&#x8A00;&#x91CC;&#xFF0C;0.1 + 0.2 &#x4E0D;&#x7B49;&#x4E8E; 0.3&#xFF0C;&#x800C;&#x662F;&#x7B49;&#x4E8E; 0.300000&#x2026;&#x2026;4&#xFF1A;<br>
<img src="http://image.rengwuxian.com/2023/12/26/dfca196ed7232.png" alt="&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5751;&#x5F88;&#x6DF1;&#xFF0C;&#x4F46;&#x4E0D;&#x591A;" loading="lazy"><br>
<img src="http://image.rengwuxian.com/2023/12/26/c276896e06210.png" alt="&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5751;&#x5F88;&#x6DF1;&#xFF0C;&#x4F46;&#x4E0D;&#x591A;" loading="lazy"><br>
&#x540C;&#x6837;&#x7684;&#x4F8B;&#x5B50;&#x8FD8;&#x6709;&#x5F88;&#x591A;&#xFF0C;&#x6BD4;&#x5982; 0.7 / 5.0 &#x4E0D;&#x7B49;&#x4E8E; 0.14&#xFF1A;<br>
<img src="http://image.rengwuxian.com/2023/12/26/e690a598c25c3.png" alt="&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5751;&#x5F88;&#x6DF1;&#xFF0C;&#x4F46;&#x4E0D;&#x591A;" loading="lazy"><br>
<img src="http://image.rengwuxian.com/2023/12/26/29fc2c099420a.png" alt="&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5751;&#x5F88;&#x6DF1;&#xFF0C;&#x4F46;&#x4E0D;&#x591A;" loading="lazy"><br>
&#x6CE8;&#x610F;&#x4E86;&#xFF0C;&#x6211;&#x8FD9;&#x91CC;&#x7528;&#x7684;&#x662F;&#x4E0D;&#x5E26; f &#x7684;&#x5C0F;&#x6570;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x7528;&#x7684; <code>double</code>&#x3002;&#x5982;&#x679C;&#x6211;&#x7ED9;&#x5B83;&#x4EEC;&#x52A0;&#x4E0A; f &#x4E5F;&#x5C31;&#x662F;&#x6539;&#x7528; <code>float</code> &#x7684;&#x8BDD;&#xFF0C;&#x5C31;&#x6062;&#x590D;&#x6B63;&#x5E38;&#x4E86;&#xFF1A;<br>
<img src="http://image.rengwuxian.com/2023/12/26/e74bca2b5148c.png" alt="&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5751;&#x5F88;&#x6DF1;&#xFF0C;&#x4F46;&#x4E0D;&#x591A;" loading="lazy"><br>
<img src="http://image.rengwuxian.com/2023/12/26/085b7d0ce7d9f.png" alt="&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5751;&#x5F88;&#x6DF1;&#xFF0C;&#x4F46;&#x4E0D;&#x591A;" loading="lazy"><br>
&#x8FD9;&#x662F;&#x4E3A;&#x5565;&#xFF1F;&#x8FD9;&#x53EF;&#x4E0D;&#x662F;&#x56E0;&#x4E3A; <code>float</code> &#x7684;&#x7CBE;&#x5EA6;&#x6BD4;&#x8F83;&#x4F4E;&#x6240;&#x4EE5;&#x8BEF;&#x5DEE;&#x88AB;&#x63A9;&#x76D6;&#x4E86;&#xFF0C;&#x800C;&#x662F;&#x5BF9;&#x4E8E;&#x8FD9;&#x4E24;&#x4E2A;&#x7B97;&#x5F0F;&#x6765;&#x8BF4;&#xFF0C;&#x6070;&#x597D; <code>float</code> &#x7684;&#x7CBE;&#x5EA6;&#x5728;&#x622A;&#x65AD;&#x4E4B;&#x540E;&#x7684;&#x8BA1;&#x7B97;&#x7ED3;&#x679C;&#xFF0C;&#x8BEF;&#x5DEE;&#x4F9D;&#x7136;&#x5728;&#x4F18;&#x5316;&#x8303;&#x56F4;&#x5185;&#xFF0C;&#x800C; <code>double</code> &#x7684;&#x6389;&#x5230;&#x4E86;&#x4F18;&#x5316;&#x8303;&#x56F4;&#x4E4B;&#x5916;&#x800C;&#x5DF2;&#x3002;&#x6211;&#x5982;&#x679C;&#x628A;&#x8FD9;&#x4E2A; 0.1 &#x6362;&#x6210; 0.15&#xFF0C;&#x90A3;&#x72B6;&#x51B5;&#x5C31;&#x76F8;&#x53CD;&#x4E86;&#xFF0C;<code>float</code> &#x51FA;&#x73B0;&#x4E86;&#x95EE;&#x9898;&#xFF0C;&#x800C; double &#x53CD;&#x800C;&#x6CA1;&#x95EE;&#x9898;&#x4E86;&#xFF1A;<br>
<img src="http://image.rengwuxian.com/2023/12/26/09ba2d362797d.png" alt="&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5751;&#x5F88;&#x6DF1;&#xFF0C;&#x4F46;&#x4E0D;&#x591A;" loading="lazy"><br>
<img src="http://image.rengwuxian.com/2023/12/26/483f42cbe2c32.png" alt="&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5751;&#x5F88;&#x6DF1;&#xFF0C;&#x4F46;&#x4E0D;&#x591A;" loading="lazy"><br>
&#x4E3A;&#x5565;&#xFF1F;&#x56E0;&#x4E3A;&#x8FD9;&#x6B21; <code>float</code> &#x6389;&#x5230;&#x8303;&#x56F4;&#x4E4B;&#x5916;&#x4E86;&#x3002;<br>
&#x6240;&#x4EE5;&#xFF0C;&#x8FD9;&#x79CD;&#x8BA1;&#x7B97;&#x4E4B;&#x540E;&#x51FA;&#x73B0;&#x6570;&#x503C;&#x504F;&#x5DEE;&#x7684;&#x95EE;&#x9898;&#xFF0C;&#x662F;&#x666E;&#x904D;&#x5B58;&#x5728;&#x7684;&#xFF0C;&#x5B83;&#x751A;&#x81F3;&#x4E0D;&#x662F;&#x7CBE;&#x5EA6;&#x592A;&#x4F4E;&#x800C;&#x5BFC;&#x81F4;&#x7684;&#xFF0C;&#x800C;&#x5C31;&#x662F;&#x56E0;&#x4E3A;&#x5341;&#x8FDB;&#x5236;&#x5C0F;&#x6570;&#x65E0;&#x6CD5;&#x5F80;&#x4E8C;&#x8FDB;&#x5236;&#x8FDB;&#x884C;&#x5B8C;&#x7F8E;&#x8F6C;&#x6362;&#x6240;&#x5BFC;&#x81F4;&#x7684;&#xFF0C;&#x4E0D;&#x7BA1;&#x4F60;&#x7528;&#x591A;&#x9AD8;&#x7CBE;&#x5EA6;&#x7684;&#x90FD;&#x4F1A;&#x51FA;&#x8FD9;&#x79CD;&#x95EE;&#x9898;&#xFF0C;&#x53EA;&#x8981;&#x4F60;&#x7528;&#x7684;&#x662F;&#x6D6E;&#x70B9;&#x6570;&#x3002;&#x6211;&#x4EEC;&#x7528;&#x7684;&#x5404;&#x79CD;&#x7F16;&#x7A0B;&#x8BED;&#x8A00;&#x7684;&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5B9E;&#x73B0;&#xFF0C;&#x9075;&#x5FAA;&#x7684;&#x90FD;&#x662F;&#x540C;&#x4E00;&#x5957;&#x6807;&#x51C6;&#xFF0C;&#x8FD9;&#x4E2A;&#x6807;&#x51C6;&#x662F; IEEE &#x63A8;&#x51FA;&#x7684;&#x2014;&#x2014;&#x8981;&#x602A;&#x602A;&#x5B83;&#x53BB;&#x3002;</p>
<h2 id="%E5%BA%94%E5%AF%B9%E4%B8%80%EF%BC%9A%E4%B8%BB%E5%8A%A8%E9%99%90%E5%88%B6%E7%B2%BE%E5%BA%A6">&#x5E94;&#x5BF9;&#x4E00;&#xFF1A;&#x4E3B;&#x52A8;&#x9650;&#x5236;&#x7CBE;&#x5EA6;</h2>
<p>&#x90A3;&#x600E;&#x4E48;&#x529E;&#x5462;&#xFF1F;&#x4E00;&#x822C;&#x6765;&#x8BF4;&#x6709;&#x4E24;&#x79CD;&#x5E94;&#x5BF9;&#x65B9;&#x5411;&#x3002;<br>
&#x7B2C;&#x4E00;&#x79CD;&#x662F;&#x5728;&#x8BA1;&#x7B97;&#x4E4B;&#x540E;&#x3001;&#x8F93;&#x51FA;&#x6216;&#x8005;&#x6BD4;&#x8F83;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x4E3B;&#x52A8;&#x9650;&#x5236;&#x7CBE;&#x5EA6;&#xFF1A;</p>
<pre><code class="language-kotlin">val a = ((0.1 + 0.2) * 1000).round() / 1000 // 0.3
</code></pre>
<pre><code class="language-kotlin">if (abs(0.1 + 0.2 - 0.3) &lt; 0.001) {
    ...
}
</code></pre>
<p>&#x770B;&#x7740;&#x6709;&#x70B9;&#x61A8;&#x662F;&#x5427;&#xFF1F;&#x751A;&#x81F3;&#x6709;&#x4E00;&#x4E1D;&#x7F9E;&#x803B;&#x3002;&#x6CA1;&#x529E;&#x6CD5;&#xFF0C;&#x5199;&#x5427;&#xFF01;&#x6211;&#x4E5F;&#x8FD9;&#x4E48;&#x5199;&#x7684;&#xFF0C;&#x5927;&#x5BB6;&#x90FD;&#x8FD9;&#x4E48;&#x5199;&#x7684;&#x3002;&#x6D6E;&#x70B9;&#x6570;&#x5C31;&#x8FD9;&#x6837;&#xFF01;</p>
<h2 id="%E5%BA%94%E5%AF%B9%E4%BA%8C%EF%BC%9A%E4%B8%8D%E7%94%A8%E6%B5%AE%E7%82%B9%E6%95%B0%EF%BC%88%E4%B8%8D%E6%98%AF%E5%BC%80%E7%8E%A9%E7%AC%91%EF%BC%89">&#x5E94;&#x5BF9;&#x4E8C;&#xFF1A;&#x4E0D;&#x7528;&#x6D6E;&#x70B9;&#x6570;&#xFF08;&#x4E0D;&#x662F;&#x5F00;&#x73A9;&#x7B11;&#xFF09;</h2>
<p>&#x9664;&#x6B64;&#x4E4B;&#x5916;&#xFF0C;&#x53E6;&#x4E00;&#x4E2A;&#x5E94;&#x5BF9;&#x65B9;&#x5411;&#x5C31;&#x662F;&#xFF0C;&#x4F60;&#x5E72;&#x8106;&#x522B;&#x7528;&#x6D6E;&#x70B9;&#x6570;&#x4E86;&#xFF0C;&#x7528;&#x522B;&#x7684;&#x65B9;&#x6848;&#x3002;&#x6BD4;&#x5982; Java &#x6709;&#x4E2A;&#x53EB; <code>BigDecimal</code> &#x7684;&#x4E1C;&#x897F;&#xFF0C;&#x5C31;&#x662F;&#x4E13;&#x95E8;&#x8FDB;&#x884C;&#x7CBE;&#x786E;&#x8BA1;&#x7B97;&#x7528;&#x7684;&#x3002;&#x4E0D;&#x8FC7; <code>BigDecimal</code> &#x7684;&#x4F7F;&#x7528;&#x6CA1;&#x6709;&#x6D6E;&#x70B9;&#x6570;&#x8FD9;&#x4E48;&#x7B80;&#x5355;&#xFF0C;&#x8FD0;&#x7B97;&#x901F;&#x5EA6;&#x4E5F;&#x6BD4;&#x6D6E;&#x70B9;&#x6570;&#x6162;&#xFF0C;&#x6240;&#x4EE5;&#x5927;&#x591A;&#x6570;&#x60C5;&#x51B5;&#x4E0B;&#xFF0C;&#x5FCD;&#x4E00;&#x5FCD;&#xFF0C;&#x7528;&#x6D6E;&#x70B9;&#x6570;&#x8FD8;&#x662F;&#x4F1A;&#x597D;&#x4E00;&#x70B9;&#x3002;</p>
<h2 id="%E6%80%BB%E7%BB%93">&#x603B;&#x7ED3;</h2>
<p>&#x597D;&#xFF0C;&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x4E1C;&#x897F;&#x5927;&#x6982;&#x5C31;&#x8FD9;&#x4E48;&#x591A;&#x3002;<br>
&#x4E0B;&#x671F;&#x6709;&#x70B9;&#x60F3;&#x518D;&#x8BF4;&#x70B9; Compose &#x7684;&#x4E1C;&#x897F;&#x4E86;&#xFF0C;&#x4E0D;&#x8FC7;&#x4E5F;&#x4E0D;&#x4E00;&#x5B9A;&#xFF0C;&#x6211;&#x770B;&#x60C5;&#x51B5;&#x5427;&#x3002;&#x5982;&#x679C;&#x4F60;&#x559C;&#x6B22;&#x6211;&#x7684;&#x89C6;&#x9891;&#xFF0C;&#x8FD8;&#x8BF7;&#x5E2E;&#x6211;&#x70B9;&#x8D5E;&#x548C;&#x8F6C;&#x53D1;&#x3002;&#x5173;&#x6CE8;&#x6211;&#xFF0C;&#x4E86;&#x89E3;&#x66F4;&#x591A; Android &#x5F00;&#x53D1;&#x7684;&#x77E5;&#x8BC6;&#x548C;&#x6280;&#x80FD;&#x3002;&#x6211;&#x662F;&#x6254;&#x7269;&#x7EBF;&#xFF0C;&#x6211;&#x4E0D;&#x548C;&#x4F60;&#x6BD4;&#x9AD8;&#x4F4E;&#xFF0C;&#x6211;&#x53EA;&#x52A9;&#x4F60;&#x6210;&#x957F;&#x3002;&#x6211;&#x4EEC;&#x4E0B;&#x671F;&#x89C1;&#xFF01;<br>
<img src="http://image.rengwuxian.com/2023/12/27/210647777b3c9.jpg" alt="&#x6D6E;&#x70B9;&#x6570;&#x7684;&#x5751;&#x5F88;&#x6DF1;&#xFF0C;&#x4F46;&#x4E0D;&#x591A;" loading="lazy"></p>
]]></content:encoded></item><item><title><![CDATA[这玩意真的有用吗？对，是的！Kotlin 的 Nothing 详解]]></title><description><![CDATA[Kotlin 的 Nothing 类，一般只被我们间接使用（例如通过抛异常），而很少直接应用。但其实它是个非常便捷的工具类，尤其在写项目框架和 SDK 的时候。]]></description><link>https://rengwuxian.com/kotlin-nothing/</link><guid isPermaLink="false">645ca3d0db750454c6173ccd</guid><category><![CDATA[Kotlin]]></category><dc:creator><![CDATA[扔物线]]></dc:creator><pubDate>Thu, 11 May 2023 08:15:58 GMT</pubDate><media:content url="https://rengwuxian.com/content/images/2023/05/Kotlin---Nothing-----.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h2 id="%E8%A7%86%E9%A2%91%E5%85%88%E8%A1%8C">&#x89C6;&#x9891;&#x5148;&#x884C;</h2>
<h3 id="%E5%93%94%E5%93%A9%E5%93%94%E5%93%A9">&#x54D4;&#x54E9;&#x54D4;&#x54E9;</h3>
<iframe width="100%" height="480" src="//player.bilibili.com/player.html?bvid=BV1Mc411P7Ka&amp;page=1&amp;autoplay=0" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe>
<h3 id="youtube">YouTube</h3>
<iframe width="100%" height="480" src="https://www.youtube.com/embed/QZdQ7zQkfZA" title="Unit &#x4E3A;&#x5565;&#x8FD8;&#x80FD;&#x5F53;&#x51FD;&#x6570;&#x53C2;&#x6570;&#xFF1F;&#x9762;&#x5411;&#x5B9E;&#x7528;&#x7684; Kotlin Unit &#x8BE6;&#x89E3;" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
<blockquote>
<img src="https://rengwuxian.com/content/images/2023/05/Kotlin---Nothing-----.png" alt="&#x8FD9;&#x73A9;&#x610F;&#x771F;&#x7684;&#x6709;&#x7528;&#x5417;&#xFF1F;&#x5BF9;&#xFF0C;&#x662F;&#x7684;&#xFF01;Kotlin &#x7684; Nothing &#x8BE6;&#x89E3;"><p>&#x4E0B;&#x9762;&#x662F;&#x89C6;&#x9891;&#x5185;&#x5BB9;&#x7684;&#x811A;&#x672C;&#x6587;&#x6848;&#x539F;&#x7A3F;&#x5206;&#x4EAB;&#x3002;</p>
</blockquote>
<p><img src="http://image.rengwuxian.com/2023/05/08/fe402c850832a.jpg" alt="&#x8FD9;&#x73A9;&#x610F;&#x771F;&#x7684;&#x6709;&#x7528;&#x5417;&#xFF1F;&#x5BF9;&#xFF0C;&#x662F;&#x7684;&#xFF01;Kotlin &#x7684; Nothing &#x8BE6;&#x89E3;" loading="lazy"></p>
<h2 id="%E6%96%87%E6%A1%88%E5%8E%9F%E7%A8%BF">&#x6587;&#x6848;&#x539F;&#x7A3F;</h2>
<p>Kotlin &#x7684; <code>Nothing</code> &#x7C7B;&#xFF0C;&#x65E0;&#x6CD5;&#x521B;&#x5EFA;&#x51FA;&#x4EFB;&#x4F55;&#x5B9E;&#x4F8B;&#xFF1A;</p>
<pre><code class="language-kotlin">public class Nothing private constructor()
</code></pre>
<p>&#x6240;&#x4EE5;&#x6240;&#x6709; <code>Nothing</code> &#x7C7B;&#x578B;&#x7684;&#x53D8;&#x91CF;&#x6216;&#x8005;&#x51FD;&#x6570;&#xFF0C;&#x90FD;&#x627E;&#x4E0D;&#x5230;&#x53EF;&#x7528;&#x7684;&#x503C;&#xFF1A;</p>
<pre><code class="language-kotlin">val nothing: Nothing = ???
fun nothing(): Nothing {
  ...
  return ???
}
</code></pre>
<p>&#x5C31;&#x8FD9;&#x4E48;&#x7B80;&#x5355;&#x3002;&#x4F46;&#x2014;&#x2014;&#x5B83;&#x6709;&#x5565;&#x7528;&#x554A;&#xFF1F;</p>
<h2 id="nothing-%E7%9A%84%E6%9C%AC%E8%B4%A8"><code>Nothing</code> &#x7684;&#x672C;&#x8D28;</h2>
<p>&#x5927;&#x5BB6;&#x597D;&#xFF0C;&#x6211;&#x662F;&#x6254;&#x7269;&#x7EBF;&#x6731;&#x51EF;&#x3002;&#x4E0A;&#x671F;&#x8BB2;&#x4E86; Kotlin &#x7684; <code>Unit</code>&#xFF0C;&#x8FD9;&#x671F;&#x8BB2; <code>Nothing</code>&#x3002;<br>
<code>Nothing</code> &#x7684;&#x6E90;&#x7801;&#x5F88;&#x7B80;&#x5355;&#xFF1A;</p>
<pre><code class="language-kotlin">public class Nothing private constructor()
</code></pre>
<p>&#x53EF;&#x4EE5;&#x770B;&#x5230;&#x5B83;&#x672C;&#x8EAB;&#x867D;&#x7136;&#x662F; <code>public</code> &#x7684;&#xFF0C;&#x4F46;&#x5B83;&#x7684;&#x6784;&#x9020;&#x51FD;&#x6570;&#x662F; <code>private</code> &#x7684;&#xFF0C;&#x8FD9;&#x5C31;&#x5BFC;&#x81F4;&#x6211;&#x4EEC;&#x6CA1;&#x6CD5;&#x521B;&#x5EFA;&#x5B83;&#x7684;&#x5B9E;&#x4F8B;&#xFF1B;&#x800C;&#x4E14;&#x5B83;&#x4E0D;&#x50CF; <code>Unit</code> &#x90A3;&#x6837;&#x662F;&#x4E2A; <code>object</code>&#xFF1A;</p>
<pre><code class="language-kotlin">public object Unit {
  override fun toString() = &quot;kotlin.Unit&quot;
}
</code></pre>
<p>&#x800C;&#x662F;&#x4E2A;&#x666E;&#x901A;&#x7684; <code>class</code>&#xFF1B;&#x5E76;&#x4E14;&#x5728;&#x6E90;&#x7801;&#x91CC; Kotlin &#x4E5F;&#x6CA1;&#x6709;&#x5E2E;&#x6211;&#x4EEC;&#x521B;&#x5EFA;&#x5B83;&#x7684;&#x5B9E;&#x4F8B;&#x3002;</p>
<p>&#x8FD9;&#x4E9B;&#x6761;&#x4EF6;&#x52A0;&#x8D77;&#x6765;&#xFF0C;&#x7ED3;&#x679C;&#x5C31;&#x662F;&#xFF1A;<code>Nothing</code> &#x8FD9;&#x4E2A;&#x7C7B;&#x65E2;&#x6CA1;&#x6709;&#x3001;&#x4E5F;&#x4E0D;&#x4F1A;&#x6709;&#x4EFB;&#x4F55;&#x7684;&#x5B9E;&#x4F8B;&#x5BF9;&#x8C61;&#x3002;</p>
<p>&#x57FA;&#x4E8E;&#x8FD9;&#x6837;&#x7684;&#x524D;&#x63D0;&#xFF0C;&#x5F53;&#x6211;&#x4EEC;&#x5199;&#x51FA;&#x8FD9;&#x4E2A;&#x51FD;&#x6570;&#x58F0;&#x660E;&#x7684;&#x65F6;&#x5019;&#xFF1A;</p>
<pre><code class="language-kotlin">fun nothing(): Nothing {

}
</code></pre>
<p>&#x6211;&#x4EEC;&#x4E0D;&#x53EF;&#x80FD;&#x627E;&#x5230;&#x4E00;&#x4E2A;&#x5408;&#x9002;&#x7684;&#x503C;&#x6765;&#x8FD4;&#x56DE;&#x3002;&#x4F60;&#x5FC5;&#x987B;&#x8FD4;&#x56DE;&#x4E00;&#x4E2A;&#x503C;&#xFF0C;&#x4F46;&#x5374;&#x6C38;&#x8FDC;&#x627E;&#x4E0D;&#x5230;&#x5408;&#x9002;&#x7684;&#x8FD4;&#x56DE;&#x503C;&#x3002;&#x6096;&#x8BBA;&#x4E86;&#x3002;</p>
<h2 id="%E4%BD%9C%E7%94%A8%E4%B8%80%EF%BC%9A%E4%BD%9C%E4%B8%BA%E5%87%BD%E6%95%B0%E3%80%8C%E6%B0%B8%E4%B8%8D%E8%BF%94%E5%9B%9E%E3%80%8D%E7%9A%84%E6%8F%90%E7%A4%BA">&#x4F5C;&#x7528;&#x4E00;&#xFF1A;&#x4F5C;&#x4E3A;&#x51FD;&#x6570;&#x300C;&#x6C38;&#x4E0D;&#x8FD4;&#x56DE;&#x300D;&#x7684;&#x63D0;&#x793A;</h2>
<p>&#x600E;&#x4E48;&#x529E;&#xFF1F;</p>
<p>&#x4E0D;&#x600E;&#x4E48;&#x529E;&#x3002;&#x8FD9;&#x4E2A;&#x6096;&#x8BBA;&#xFF0C;&#x5C31;&#x662F; <code>Nothing</code> &#x5B58;&#x5728;&#x7684;&#x610F;&#x4E49;&#xFF1A;&#x5B83;&#x627E;&#x4E0D;&#x5230;&#x4EFB;&#x4F55;&#x53EF;&#x7528;&#x7684;&#x503C;&#xFF0C;&#x6240;&#x4EE5;&#xFF0C;&#x4EE5;&#x5B83;&#x4E3A;&#x8FD4;&#x56DE;&#x503C;&#x7C7B;&#x578B;&#x7684;&#x4E00;&#x5B9A;&#x662F;&#x4E2A;&#x4E0D;&#x4F1A;&#x8FD4;&#x56DE;&#x7684;&#x51FD;&#x6570;&#xFF0C;&#x6BD4;&#x5982;&#x2014;&#x2014;&#x5B83;&#x53EF;&#x4EE5;&#x603B;&#x662F;&#x629B;&#x5F02;&#x5E38;&#x3002;<br>
&#x4EC0;&#x4E48;&#x610F;&#x601D;&#xFF1F;&#x5C31;&#x662F;&#x8BF4;&#xFF0C;&#x6211;&#x8FD9;&#x4E48;&#x5199;&#x662F;&#x53EF;&#x4EE5;&#x7684;&#xFF1A;</p>
<pre><code class="language-kotlin">fun nothing() : Nothing {
  throw RuntimeException(&quot;Nothing!&quot;)
}
</code></pre>
<p>&#x8FD9;&#x4E2A;&#x5199;&#x6CD5;&#x5E76;&#x6CA1;&#x6709;&#x8FD4;&#x56DE;&#x4EFB;&#x4F55;&#x7ED3;&#x679C;&#xFF0C;&#x800C;&#x662F;&#x629B;&#x5F02;&#x5E38;&#x4E86;&#xFF0C;&#x6240;&#x4EE5;&#x662F;&#x5408;&#x6CD5;&#x7684;&#x3002;</p>
<p>&#x53EF;&#x80FD;&#x6709;&#x7684;&#x4EBA;&#x4F1A;&#x89C9;&#x5F97;&#x6709;&#x95EE;&#x9898;&#xFF1A;&#x629B;&#x5F02;&#x5E38;&#x5C31;&#x53EF;&#x4EE5;&#x4E3A;&#x6240;&#x6B32;&#x4E3A;&#x5417;&#xFF1F;&#x629B;&#x5F02;&#x5E38;&#x5C31;&#x53EF;&#x4EE5;&#x5FFD;&#x7565;&#x8FD4;&#x56DE;&#x503C;&#x4E86;&#x5417;&#xFF1F;&#x2014;&#x2014;&#x554A;&#x5BF9;&#xFF0C;&#x629B;&#x5F02;&#x5E38;&#x5C31;&#x662F;&#x53EF;&#x4EE5;&#x5FFD;&#x7565;&#x8FD4;&#x56DE;&#x503C;&#xFF0C;&#x800C;&#x4E14;&#x8FD9;&#x4E0D;&#x662F; <code>Nothing</code> &#x7684;&#x7279;&#x6027;&#xFF0C;&#x800C;&#x662F;&#x672C;&#x6765;&#x5C31;&#x662F;&#x8FD9;&#x6837;&#xFF0C;&#x800C;&#x4E14;&#x4F60;&#x672C;&#x6765;&#x5C31;&#x77E5;&#x9053;&#xFF0C;&#x53EA;&#x662F;&#x5230;&#x8FD9;&#x91CC;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x4F60;&#x53EF;&#x80FD;&#x4F1A;&#x5FD8;&#x4E86;&#x3002;<br>
&#x4F8B;&#x5982;&#x8FD9;&#x4E2A;&#x5199;&#x6CD5;&#xFF1A;</p>
<pre><code class="language-kotlin">fun getName() : String {
  if (nameValue != null) {
    return nameValue
  } else {
    throw NullPointerException(&quot;nameValue &#x4E0D;&#x80FD;&#x4E3A;&#x7A7A;&#xFF01;&quot;)
  }
}
</code></pre>
<p>&#x2014;&#x2014;&#x5176;&#x5B9E;&#x8FD9;&#x4E2A;&#x51FD;&#x6570;&#x53EF;&#x4EE5;&#x6709;&#x66F4;&#x52A0;&#x7B80;&#x6D01;&#x7684;&#x5199;&#x6CD5;&#xFF1A;</p>
<pre><code class="language-kotlin">fun getName() = nameValue ?: throw NullPointerException(&quot;nameValue &#x4E0D;&#x80FD;&#x4E3A;&#x7A7A;&#xFF01;&quot;)
</code></pre>
<p>&#x4E0D;&#x8FC7;&#x6211;&#x4EEC;&#x4E3A;&#x4E86;&#x65B9;&#x4FBF;&#x8BB2;&#x89E3;&#xFF0C;&#x5C31;&#x4E0D;&#x7B80;&#x5316;&#x4E86;&#xFF1A;</p>
<pre><code class="language-kotlin">fun getName() : String {
  if (nameValue != null) {
    return nameValue
  } else {
    throw NullPointerException(&quot;nameValue &#x4E0D;&#x80FD;&#x4E3A;&#x7A7A;&#xFF01;&quot;)
  }
}
</code></pre>
<p>&#x5728;&#x8FD9;&#x4E2A;&#x51FD;&#x6570;&#x91CC;&#xFF0C;&#x4E00;&#x4E2A; <code>if</code> &#x5224;&#x65AD;&#xFF0C;<code>true</code> &#x5C31;&#x8FD4;&#x56DE;&#xFF0C;<code>false</code> &#x5C31;&#x629B;&#x5F02;&#x5E38;&#xFF0C;&#x8FD9;&#x4E2A;&#x5199;&#x6CD5;&#x5F88;&#x5E38;&#x89C1;&#x5427;&#xFF1F;&#x5B83;&#x5728; <code>else</code> &#x7684;&#x8FD9;&#x4E2A;&#x5206;&#x652F;&#xFF0C;&#x662F;&#x4E0D;&#x662F;&#x5C31;&#x53EA;&#x629B;&#x5F02;&#x5E38;&#x800C;&#x4E0D;&#x8FD4;&#x56DE;&#x503C;&#x4E86;&#xFF1F;&#x5B9E;&#x9645;&#x4E0A; Java &#x548C; Kotlin &#x7684;&#x4EFB;&#x4F55;&#x65B9;&#x6CD5;&#x6216;&#x8005;&#x8BF4;&#x51FD;&#x6570;&#xFF0C;&#x5728;&#x629B;&#x5F02;&#x5E38;&#x7684;&#x65F6;&#x5019;&#x90FD;&#x662F;&#x4E0D;&#x8FD4;&#x56DE;&#x503C;&#x7684;&#x2014;&#x2014;&#x4F60;&#x90FD;&#x629B;&#x5F02;&#x5E38;&#x7684;&#x8FD8;&#x8FD4;&#x56DE;&#x5565;&#x5440;&#x8FD4;&#x56DE;&#xFF1F;&#x662F;&#x5427;&#xFF1F;</p>
<p>&#x6240;&#x4EE5;&#x6211;&#x5982;&#x679C;&#x6539;&#x6210;&#x8FD9;&#x6837;&#xFF1A;</p>
<pre><code class="language-kotlin">fun getName() : String {
  throw NullPointerException(&quot;&#x4E0D;&#x80FD;&#x4E3A;&#x7A7A;&#xFF01;&quot;)
}
</code></pre>
<p>&#x5176;&#x5B9E;&#x4E5F;&#x662F;&#x53EF;&#x4EE5;&#x7684;&#x3002;&#x53EA;&#x662F;&#x770B;&#x8D77;&#x6765;&#x6BD4;&#x8F83;&#x5947;&#x602A;&#x7F62;&#x4E86;&#xFF0C;&#x4F1A;&#x8BA9;&#x4EBA;&#x89C9;&#x5F97;&#x300C;&#x600E;&#x4E48;&#x4F1A;&#x8FD9;&#x4E48;&#x5199;&#x5462;&#x300D;&#xFF1F;&#x4F46;&#x5B83;&#x7684;&#x5199;&#x6CD5;&#x672C;&#x8EAB;&#x662F;&#x5B8C;&#x5168;&#x5408;&#x6CD5;&#x7684;&#x3002;&#x800C;&#x4E14;&#x5982;&#x679C;&#x6211;&#x628A;&#x51FD;&#x6570;&#x7684;&#x540D;&#x5B57;&#x6539;&#x4E00;&#x4E0B;&#xFF0C;&#x518D;&#x52A0;&#x4E2A;&#x6CE8;&#x91CA;&#xFF1A;</p>
<pre><code class="language-kotlin">/**
 &#x5F53;&#x9047;&#x5230;&#x59D3;&#x540D;&#x4E3A;&#x7A7A;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x8BF7;&#x8C03;&#x7528;&#x8FD9;&#x4E2A;&#x51FD;&#x6570;&#x6765;&#x629B;&#x5F02;&#x5E38;
*/
fun throwOnNameNull() : String {
  throw NullPointerException(&quot;&#x59D3;&#x540D;&#x4E0D;&#x80FD;&#x4E3A;&#x7A7A;&#xFF01;&quot;)
}
</code></pre>
<p>&#x8FD9;&#x5C31;&#x5F88;&#x5408;&#x7406;&#x4E86;&#x5427;&#xFF1F;&#x4E0D;&#x5E72;&#x522B;&#x7684;&#xFF0C;&#x5C31;&#x53EA;&#x662F;&#x629B;&#x5F02;&#x5E38;&#x3002;&#x8FD9;&#x662F;&#x4E00;&#x79CD;&#x5F88;&#x5E38;&#x7528;&#x7684;&#x5DE5;&#x5177;&#x51FD;&#x6570;&#x7684;&#x5199;&#x6CD5;&#xFF0C;&#x5305;&#x62EC; Kotlin &#x548C; Compose &#x7684;&#x5B98;&#x65B9;&#x6E90;&#x7801;&#x91CC;&#x4E5F;&#x6709;&#x8FD9;&#x79CD;&#x4E1C;&#x897F;&#x3002;</p>
<p>&#x90A3;&#x4E48;&#x6211;&#x4EEC;&#x7EE7;&#x7EED;&#x6765;&#x770B;&#x5B83;&#x7684;&#x8FD4;&#x56DE;&#x503C;&#x7C7B;&#x578B;&#xFF1A;&#x6211;&#x90FD;&#x4E0D;&#x8FD4;&#x56DE;&#x4E86;&#xFF0C;&#x5C31;&#x6CA1;&#x5FC5;&#x8981;&#x8FD8;&#x5199; <code>String</code> &#x4E86;&#x5427;&#xFF1F;&#x90A3;&#x5199;&#x4EC0;&#x4E48;&#xFF1F;&#x53EF;&#x4EE5;&#x628A;&#x5B83;&#x6539;&#x6210; <code>Unit</code>&#xFF1A;</p>
<pre><code class="language-kotlin">/**
 &#x5F53;&#x4EFB;&#x4F55;&#x53D8;&#x91CF;&#x4E3A;&#x7A7A;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x8BF7;&#x7EDF;&#x4E00;&#x8C03;&#x7528;&#x8FD9;&#x4E2A;&#x51FD;&#x6570;&#x6765;&#x629B;&#x5F02;&#x5E38;
*/
fun throwOnNameNull() : Unit {
  throw NullPointerException(&quot;&#x59D3;&#x540D;&#x4E0D;&#x80FD;&#x4E3A;&#x7A7A;&#xFF01;&quot;)
}
</code></pre>
<p>&#x6709;&#x95EE;&#x9898;&#x5417;&#xFF1F;&#x6CA1;&#x95EE;&#x9898;&#x3002;</p>
<p>&#x4E0D;&#x8FC7;&#xFF0C;Kotlin &#x53C8;&#x8FDB;&#x4E86;&#x4E00;&#x6B65;&#xFF0C;&#x63D0;&#x4F9B;&#x4E86;&#x4E00;&#x4E2A;&#x989D;&#x5916;&#x7684;&#x9009;&#x9879;&#xFF1A;&#x4F60;&#x8FD8;&#x53EF;&#x4EE5;&#x628A;&#x5B83;&#x6539;&#x6210; <code>Nothing</code>&#xFF1A;</p>
<pre><code class="language-kotlin">/**
 &#x5F53;&#x4EFB;&#x4F55;&#x53D8;&#x91CF;&#x4E3A;&#x7A7A;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x8BF7;&#x7EDF;&#x4E00;&#x8C03;&#x7528;&#x8FD9;&#x4E2A;&#x51FD;&#x6570;&#x6765;&#x629B;&#x5F02;&#x5E38;
*/
fun throwOnNameNull() : Nothing {
  throw NullPointerException(&quot;&#x59D3;&#x540D;&#x4E0D;&#x80FD;&#x4E3A;&#x7A7A;&#xFF01;&quot;)
}
</code></pre>
<p>&#x867D;&#x7136;&#x6211;&#x627E;&#x4E0D;&#x5230; <code>Nothing</code> &#x7684;&#x5B9E;&#x4F8B;&#xFF0C;&#x4F46;&#x662F;&#x8FD9;&#x4E2A;&#x51FD;&#x6570;&#x672C;&#x6765;&#x5C31;&#x662F;&#x6C38;&#x8FDC;&#x629B;&#x5F02;&#x5E38;&#x7684;&#xFF0C;&#x627E;&#x4E0D;&#x5230;&#x5B9E;&#x4F8B;&#x4E5F;&#x6CA1;&#x5173;&#x7CFB;&#x3002;&#x54CE;&#xFF0C;&#x8FD9;&#x4E0D;&#x5C31;&#x80FD;&#x7528;&#x4E86;&#x5417;&#xFF1F;&#x5BF9;&#x5427;&#xFF1F;</p>
<p>&#x4E0D;&#x8FC7;&#xFF0C;&#x80FD;&#x7528;&#x5F52;&#x80FD;&#x7528;&#xFF0C;&#x8FD9;&#x4E48;&#x5199;&#x6709;&#x5565;&#x610F;&#x4E49;&#x554A;&#xFF1F;&#x662F;&#x5427;&#xFF1F;&#x4EF7;&#x503C;&#x5728;&#x54EA;&#xFF1F;&#x2014;&#x2014;&#x4EF7;&#x503C;&#x5C31;&#x5728;&#x4E8E;&#xFF0C;<code>Nothing</code> &#x8FD9;&#x4E2A;&#x8FD4;&#x56DE;&#x503C;&#x7C7B;&#x578B;&#x80FD;&#x591F;&#x7ED9;&#x4F7F;&#x7528;&#x5B83;&#x7684;&#x5F00;&#x53D1;&#x8005;&#x4E00;&#x4E2A;&#x660E;&#x786E;&#x7684;&#x63D0;&#x793A;&#xFF1A;&#x8FD9;&#x662F;&#x4E2A;&#x6C38;&#x8FDC;&#x4E0D;&#x4F1A;&#x8FD4;&#x56DE;&#x7684;&#x51FD;&#x6570;&#x3002;&#x8FD9;&#x79CD;&#x63D0;&#x793A;&#x672C;&#x8EAB;&#xFF0C;&#x5C31;&#x4F1A;&#x7ED9;&#x5F00;&#x53D1;&#x63D0;&#x4F9B;&#x4E00;&#x4E9B;&#x65B9;&#x4FBF;&#xFF0C;&#x5B83;&#x80FD;&#x5F88;&#x597D;&#x5730;&#x907F;&#x514D;&#x51FD;&#x6570;&#x7684;&#x8C03;&#x7528;&#x8005;&#x5BF9;&#x51FD;&#x6570;&#x7684;&#x8BEF;&#x89E3;&#x800C;&#x5BFC;&#x81F4;&#x7684;&#x4E00;&#x4E9B;&#x95EE;&#x9898;&#x3002;&#x6211;&#x4EEC;&#x4ECE; Java &#x8FC7;&#x6765;&#x7684;&#x4EBA;&#x53EF;&#x80FD;&#x7B2C;&#x4E00;&#x65F6;&#x95F4;&#x4E0D;&#x592A;&#x80FD;&#x611F;&#x53D7;&#x5230;&#x8FD9;&#x79CD;&#x4E1C;&#x897F;&#x7684;&#x7528;&#x5904;&#xFF0C;&#x5176;&#x5B9E;&#x4F60;&#x8981;&#x771F;&#x8BF4;&#x5B83;&#x4F5C;&#x7528;&#x6709;&#x591A;&#x5927;&#x5427;&#xFF0C;&#x6211;&#x89C9;&#x5F97;&#x4E0D;&#x7B97;&#x5927;&#xFF0C;&#x4E3B;&#x8981;&#x662F;&#x5F88;&#x65B9;&#x4FBF;&#x3002;&#x5B83;&#x662F;&#x5C5E;&#x4E8E;&#x300C;&#x4F60;&#x6CA1;&#x6709;&#x7684;&#x8BDD;&#x4E5F;&#x4E0D;&#x89C9;&#x5F97;&#x6709;&#x4EC0;&#x4E48;&#x4E0D;&#x597D;&#x7684;&#xFF0C;&#x4F46;&#x662F;&#x6709;&#x4E86;&#x4E4B;&#x540E;&#x5C31;&#x518D;&#x4E5F;&#x4E0D;&#x60F3;&#x6CA1;&#x6709;&#x5B83;&#x300D;&#x7684;&#x90A3;&#x79CD;&#x5C0F;&#x65B9;&#x4FBF;&#x3002;&#x5C31;&#x8DDF; 120Hz &#x7684;&#x5C4F;&#x5E55;&#x5237;&#x65B0;&#x7387;&#x6709;&#x70B9;&#x50CF;&#xFF0C;&#x591A;&#x5C11;&#x5E26;&#x70B9;&#x6BD2;&#x3002;</p>
<p>Kotlin &#x7684;&#x6E90;&#x7801;&#x3001;Compose &#x7684;&#x6E90;&#x7801;&#x91CC;&#x90FD;&#x6709;&#x4E0D;&#x5C11;&#x8FD9;&#x6837;&#x7684;&#x5B9E;&#x8DF5;&#xFF0C;&#x6BD4;&#x5982; Compose &#x7684; <code>noLocalProviderFor()</code> &#x51FD;&#x6570;&#xFF1A;</p>
<pre><code class="language-kotlin">private fun noLocalProvidedFor(name: String): Nothing {
  error(&quot;CompositionLocal $name not present&quot;)
}
</code></pre>
<p>&#x597D;&#xFF0C;&#x8FD9;&#x5C31;&#x662F; Nothing &#x7684;&#x4F5C;&#x7528;&#x4E4B;&#x4E00;&#xFF1A;&#x4F5C;&#x4E3A;&#x51FD;&#x6570;&#x7684;&#x8FD4;&#x56DE;&#x503C;&#x7C7B;&#x578B;&#xFF0C;&#x6765;&#x660E;&#x786E;&#x8868;&#x8FBE;&#x300C;&#x8FD9;&#x662F;&#x4E2A;&#x6C38;&#x4E0D;&#x8FD4;&#x56DE;&#x7684;&#x51FD;&#x6570;&#x300D;&#x3002;</p>
<p>&#x5176;&#x5B9E; <code>Nothing</code> &#x7684;&#x300C;&#x6C38;&#x4E0D;&#x8FD4;&#x56DE;&#x300D;&#x9664;&#x4E86;&#x629B;&#x5F02;&#x5E38;&#x4E4B;&#x5916;&#xFF0C;&#x8FD8;&#x6709;&#x4E00;&#x79CD;&#x573A;&#x666F;&#xFF0C;&#x5C31;&#x662F;&#x65E0;&#x9650;&#x5FAA;&#x73AF;&#xFF1A;</p>
<pre><code class="language-kotlin">fun foreverRepeat(): Nothing {
  while (true) {
    ...
  }
}
</code></pre>
<p>&#x4E0D;&#x8FC7;&#x4E00;&#x822C;&#x5F88;&#x5C11;&#x6709;&#x4EBA;&#x8FD9;&#x4E48;&#x53BB;&#x7528;&#xFF0C;&#x5927;&#x90E8;&#x5206;&#x90FD;&#x662F;&#x7528;&#x5728;&#x6211;&#x521A;&#x624D;&#x8BF4;&#x7684;&#x629B;&#x5F02;&#x5E38;&#x7684;&#x573A;&#x666F;&#xFF0C;&#x8FD9;&#x662F;&#x975E;&#x5E38;&#x5E38;&#x89C1;&#x7684;&#x4E00;&#x79CD;&#x7528;&#x6CD5;&#xFF0C;&#x4F60;&#x5199;&#x4E1A;&#x52A1;&#x53EF;&#x80FD;&#x7528;&#x4E0D;&#x5230;&#xFF0C;&#x4F46;&#x662F;&#x57FA;&#x7840;&#x67B6;&#x6784;&#x56E2;&#x961F;&#x7ED9;&#x5168;&#x516C;&#x53F8;&#x5199;&#x6846;&#x67B6;&#x6216;&#x8005;&#x5BF9;&#x5916;&#x5199; SDK &#x7684;&#x8BDD;&#xFF0C;&#x7528;&#x5230;&#x5B83;&#x7684;&#x6982;&#x7387;&#x5C31;&#x975E;&#x5E38;&#x5927;&#x4E86;&#x3002;</p>
<h2 id="%E4%BD%9C%E7%94%A8%E4%BA%8C%EF%BC%9A%E4%BD%9C%E4%B8%BA%E6%B3%9B%E5%9E%8B%E5%AF%B9%E8%B1%A1%E7%9A%84%E4%B8%B4%E6%97%B6%E7%A9%BA%E7%99%BD%E5%A1%AB%E5%85%85">&#x4F5C;&#x7528;&#x4E8C;&#xFF1A;&#x4F5C;&#x4E3A;&#x6CDB;&#x578B;&#x5BF9;&#x8C61;&#x7684;&#x4E34;&#x65F6;&#x7A7A;&#x767D;&#x586B;&#x5145;</h2>
<p>&#x53E6;&#x5916; <code>Nothing</code> &#x9664;&#x4E86;&#x300C;&#x6CA1;&#x6709;&#x53EF;&#x7528;&#x7684;&#x5B9E;&#x4F8B;&#x300D;&#x4E4B;&#x5916;&#xFF0C;&#x8FD8;&#x6709;&#x4E2A;&#x7279;&#x6027;&#xFF1A;&#x5B83;&#x662F;&#x6240;&#x6709;&#x7C7B;&#x578B;&#x5171;&#x540C;&#x7684;&#x5B50;&#x7C7B;&#x578B;&#x3002;&#x8FD9;&#x5176;&#x5B9E;&#x662F;&#x8FDD;&#x53CD;&#x4E86; Kotlin &#x7684;&#x300C;&#x7C7B;&#x4E0D;&#x5141;&#x8BB8;&#x591A;&#x91CD;&#x7EE7;&#x627F;&#x300D;&#x7684;&#x89C4;&#x5B9A;&#x7684;&#xFF0C;&#x4F46;&#x662F; Kotlin &#x5F3A;&#x884C;&#x6269;&#x5145;&#x4E86;&#x89C4;&#x5219;&#xFF1A;<code>Nothing</code> &#x9664;&#x5916;&#xFF0C;&#x5B83;&#x4E0D;&#x53D7;&#x8FD9;&#x4E2A;&#x89C4;&#x5219;&#x7684;&#x7EA6;&#x675F;&#x3002;&#x867D;&#x7136;&#x8FD9;&#x8FDD;&#x53CD;&#x4E86;&#x300C;&#x7C7B;&#x4E0D;&#x5141;&#x8BB8;&#x591A;&#x91CD;&#x7EE7;&#x627F;&#x300D;&#xFF0C;&#x4F46;&#x56E0;&#x4E3A; <code>Nothing</code> &#x4E0D;&#x5B58;&#x5728;&#x5B9E;&#x4F8B;&#x5BF9;&#x8C61;&#xFF0C;&#x6240;&#x4EE5;&#x5B83;&#x7684;&#x591A;&#x91CD;&#x7EE7;&#x627F;&#x662F;&#x4E0D;&#x4F1A;&#x5E26;&#x6765;&#x5B9E;&#x9645;&#x7684;&#x98CE;&#x9669;&#x7684;&#x3002;&#x2014;&#x2014;&#x6211;&#x4EE5;&#x524D;&#x8FD8;&#x8DDF;&#x4EBA;&#x8BF4;&#x300C;<code>Nothing</code> &#x662F;&#x6240;&#x6709;&#x7C7B;&#x578B;&#x7684;&#x5B50;&#x7C7B;&#x578B;&#x300D;&#x8FD9;&#x79CD;&#x8BF4;&#x6CD5;&#x662F;&#x9519;&#x8BEF;&#x7684;&#xFF0C;&#x60ED;&#x6127;&#x60ED;&#x6127;&#xFF0C;&#x662F;&#x6211;&#x8BF4;&#x9519;&#x4E86;&#x3002;</p>
<p>&#x4E0D;&#x8FC7;&#xFF0C;&#x8FD9;&#x4E2A;&#x7279;&#x6027;&#x53C8;&#x6709;&#x4EC0;&#x4E48;&#x4F5C;&#x7528;&#x5462;&#xFF1F;&#x5B83;&#x5C31;&#x80FD;&#x8BA9;&#x4F60;&#x5BF9;&#x4E8E;&#x4EFB;&#x4F55;&#x53D8;&#x91CF;&#x7684;&#x8D4B;&#x503C;&#xFF0C;&#x90FD;&#x53EF;&#x4EE5;&#x5728;&#x7B49;&#x53F7;&#x53F3;&#x8FB9;&#x5199;&#x4E00;&#x4E2A; <code>Nothing</code>&#xFF1A;</p>
<pre><code class="language-kotlin">val nothing: Nothing = TODO()
var apple: Apple = nothing
</code></pre>
<p>&#x8FD9;&#x513F;&#x5176;&#x5B9E;&#x6709;&#x4E2A;&#x95EE;&#x9898;&#xFF1A;&#x6211;&#x521A;&#x8BF4;&#x4E86; <code>Nothing</code> &#x4E0D;&#x4F1A;&#x6709;&#x4EFB;&#x4F55;&#x7684;&#x5B9E;&#x4F8B;&#xFF0C;&#x5BF9;&#x5427;&#xFF1F;&#x90A3;&#x4E48;&#x8FD9;&#x4E2A;&#x53F3;&#x8FB9;&#x5C31;&#x7B97;&#x80FD;&#x586B; <code>Nothing</code> &#x7C7B;&#x578B;&#x7684;&#x5BF9;&#x8C61;&#xFF0C;&#x53EF;&#x662F;&#x8FD9;&#x4E2A;&#x5BF9;&#x8C61;&#x6211;&#x7528;&#x8C01;&#x554A;&#xFF1F;</p>
<pre><code class="language-kotlin">val nothing: Nothing = ???
var apple: Apple = nothing
</code></pre>
<p>&#x8C01;&#x4E5F;&#x6CA1;&#x6CD5;&#x7528;&#x3002;</p>
<p>&#x4F46;&#x662F;&#x6211;&#x5982;&#x679C;&#x4E0D;&#x76F4;&#x63A5;&#x7528; <code>Nothing</code>&#xFF0C;&#x800C;&#x662F;&#x628A;&#x5B83;&#x4F5C;&#x4E3A;&#x6CDB;&#x578B;&#x7C7B;&#x578B;&#x7684;&#x5B9E;&#x4F8B;&#x5316;&#x53C2;&#x6570;&#xFF1A;</p>
<pre><code class="language-kotlin">val emptyList: List&lt;Nothing&gt; = ???
var apples: List&lt;Apple&gt; = emptyList
</code></pre>
<p>&#x8FD9;&#x5C31;&#x53EF;&#x4EE5;&#x5199;&#x4E86;&#x3002;&#x4E00;&#x4E2A;&#x5143;&#x7D20;&#x7C7B;&#x578B;&#x4E3A;<code>Nothing</code> &#x7684; <code>List</code>&#xFF0C;&#x5C06;&#x4F1A;&#x5BFC;&#x81F4;&#x6211;&#x65E0;&#x6CD5;&#x627E;&#x5230;&#x4EFB;&#x4F55;&#x7684;&#x5143;&#x7D20;&#x5B9E;&#x4F8B;&#x6765;&#x586B;&#x5145;&#x8FDB;&#x53BB;&#xFF0C;&#x4F46;&#x662F;&#x8FD9;&#x4E2A; <code>List</code> &#x672C;&#x8EAB;&#x662F;&#x53EF;&#x4EE5;&#x88AB;&#x521B;&#x5EFA;&#x7684;&#xFF1A;</p>
<pre><code class="language-kotlin">val emptyList: List&lt;Nothing&gt; = listOf()
var apples: List&lt;Apple&gt; = emptyList
</code></pre>
<p>&#x53EA;&#x4E0D;&#x8FC7;&#x8FD9;&#x79CD;&#x5199;&#x6CD5;&#x770B;&#x8D77;&#x6765;&#x597D;&#x50CF;&#x6709;&#x70B9;&#x5E9F;&#xFF0C;&#x56E0;&#x4E3A;&#x5B83;&#x6C38;&#x8FDC;&#x90FD;&#x53EA;&#x80FD;&#x662F;&#x4E00;&#x4E2A;&#x7A7A;&#x7684; <code>List</code>&#x3002;&#x4F46;&#x662F;&#xFF0C;&#x5982;&#x679C;&#x7ED3;&#x5408;&#x4E0A;&#x6211;&#x4EEC;&#x521A;&#x8BF4;&#x7684;&#x300C;<code>Nothing</code> &#x662F;&#x6240;&#x6709;&#x7C7B;&#x578B;&#x7684;&#x5B50;&#x7C7B;&#x578B;&#x300D;&#x8FD9;&#x4E2A;&#x7279;&#x6027;&#xFF0C;&#x6211;&#x4EEC;&#x662F;&#x4E0D;&#x662F;&#x53EF;&#x4EE5;&#x628A;&#x8FD9;&#x4E2A;&#x7A7A;&#x7684; <code>List</code> &#x8D4B;&#x503C;&#x7ED9;&#x4EFB;&#x4F55;&#x7684; <code>List</code> &#x53D8;&#x91CF;&#xFF1F;</p>
<pre><code class="language-kotlin">val emptyList: List&lt;Nothing&gt; = listOf()
var apples: List&lt;Apple&gt; = emptyList
var users: List&lt;User&gt; = emptyList
var phones: List&lt;Phone&gt; = emptyList
var images: List&lt;Image&gt; = emptyList
</code></pre>
<p>&#x8FD9;&#x6837;&#xFF0C;&#x662F;&#x4E0D;&#x662F;&#x5C31;&#x63D0;&#x4F9B;&#x4E86;&#x4E00;&#x4E2A;&#x901A;&#x7528;&#x7684;&#x7A7A; <code>List</code> &#x51FA;&#x6765;&#xFF0C;&#x8BA9;&#x8FD9;&#x4E00;&#x4E2A;&#x5BF9;&#x8C61;&#x53EF;&#x4EE5;&#x7528;&#x4E8E;&#x6240;&#x6709; <code>List</code> &#x7684;&#x521D;&#x59CB;&#x5316;&#xFF1F;&#x6709;&#x4EC0;&#x4E48;&#x597D;&#x5904;&#xFF1F;&#x65E2;&#x7701;&#x4E8B;&#xFF0C;&#x53C8;&#x7701;&#x5185;&#x5B58;&#xFF0C;&#x8FD9;&#x5C31;&#x662F;&#x597D;&#x5904;&#x3002;</p>
<p>&#x8FD9;&#x79CD;&#x7528;&#x6CD5;&#x4E0D;&#x53EA;&#x53EF;&#x4EE5;&#x7528;&#x5728; <code>List</code>&#xFF0C;<code>Set</code> &#x548C; <code>Map</code> &#x4E5F;&#x90FD;&#x6CA1;&#x95EE;&#x9898;&#xFF1A;</p>
<pre><code class="language-kotlin">val emptySet: Set&lt;Nothing&gt; = setOf()
var apples: Set&lt;Apple&gt; = emptySet
var users: Set&lt;User&gt; = emptySet
var phones: Set&lt;Phone&gt; = emptySet
var images: Set&lt;Image&gt; = emptySet
</code></pre>
<pre><code class="language-kotlin">val emptyMap: Map&lt;String, Nothing&gt; = emptyMap()
var apples: Map&lt;String, Apple&gt; = emptyMap
var users: Map&lt;String, User&gt; = emptyMap
var phones: Map&lt;String, Phone&gt; = emptyMap
var images: Map&lt;String, Image&gt; = emptyMap
</code></pre>
<p>&#x800C;&#x4E14;&#x4E5F;&#x4E0D;&#x9650;&#x4E8E;&#x96C6;&#x5408;&#x7C7B;&#x578B;&#xFF0C;&#x53EA;&#x8981;&#x662F;&#x6CDB;&#x578B;&#x90FD;&#x53EF;&#x4EE5;&#xFF0C;&#x4F60;&#x81EA;&#x5B9A;&#x4E49;&#x7684;&#x4E5F;&#x884C;&#xFF1A;</p>
<pre><code class="language-kotlin">val emptyProducer: Producer&lt;Nothing&gt; = Producer()
var appleProducer: Producer&lt;Apple&gt; = emptyProducer
var userProducer: Producer&lt;User&gt; = emptyProducer
var phoneProducer: Producer&lt;Phone&gt; = emptyProducer
var imageProducer: Producer&lt;Image&gt; = emptyProducer
</code></pre>
<p>&#x5B83;&#x7684;&#x6838;&#x5FC3;&#x5728;&#x4E8E;&#xFF0C;&#x4F60;&#x5229;&#x7528; <code>Nothing</code> &#x53EF;&#x4EE5;&#x521B;&#x5EFA;&#x51FA;&#x4E00;&#x4E2A;&#x901A;&#x7528;&#x7684;&#x300C;&#x7A7A;&#x767D;&#x300D;&#x5BF9;&#x8C61;&#xFF0C;&#x5B83;&#x4EC0;&#x4E48;&#x5B9E;&#x8D28;&#x5185;&#x5BB9;&#x4E5F;&#x6CA1;&#x6709;&#xFF0C;&#x4EC0;&#x4E48;&#x5B9E;&#x8D28;&#x5DE5;&#x4F5C;&#x4E5F;&#x505A;&#x4E0D;&#x4E86;&#xFF0C;&#x4F46;&#x53EF;&#x4EE5;&#x7528;&#x6765;&#x4F5C;&#x4E3A;&#x6CDB;&#x578B;&#x53D8;&#x91CF;&#x7684;&#x4E00;&#x4E2A;&#x901A;&#x7528;&#x7684;&#x7A7A;&#x767D;&#x5360;&#x4F4D;&#x503C;&#x3002;&#x8FD9;&#x5C31;&#x662F; <code>Nothing</code> &#x7684;&#x7B2C;&#x4E8C;&#x4E2A;&#x4E3B;&#x8981;&#x7528;&#x5904;&#xFF1A;&#x4F5C;&#x4E3A;&#x6CDB;&#x578B;&#x53D8;&#x91CF;&#x7684;&#x901A;&#x7528;&#x7684;&#x3001;&#x7A7A;&#x767D;&#x7684;&#x4E34;&#x65F6;&#x586B;&#x5145;&#x3002;&#x591A;&#x8BF4;&#x4E00;&#x53E5;&#xFF1A;&#x8FD9;&#x79CD;&#x7A7A;&#x767D;&#x7684;&#x586B;&#x5145;&#x4E00;&#x5B9A;&#x662F;&#x4E34;&#x65F6;&#x7684;&#x624D;&#x6709;&#x610F;&#x4E49;&#xFF0C;&#x4F60;&#x5982;&#x679C;&#x53BB;&#x89C2;&#x5BDF;&#x4E00;&#x4E0B;&#x5C31;&#x4F1A;&#x53D1;&#x73B0;&#xFF0C;&#x8FD9;&#x79CD;&#x7528;&#x6CD5;&#x901A;&#x5E38;&#x90FD;&#x662F;&#x8D4B;&#x503C;&#x7ED9; <code>var</code> &#x5C5E;&#x6027;&#xFF0C;&#x800C;&#x4E0D;&#x4F1A;&#x8D4B;&#x503C;&#x7ED9; <code>val</code>&#xFF1A;</p>
<pre><code class="language-kotlin">val emptyProducer: Producer&lt;Nothing&gt; = Producer()
// &#x6CA1;&#x4EBA;&#x8FD9;&#x4E48;&#x5199;&#xFF1A;
val appleProducer: Producer&lt;Apple&gt; = emptyProducer
val userProducer: Producer&lt;User&gt; = emptyProducer
val phoneProducer: Producer&lt;Phone&gt; = emptyProducer
val imageProducer: Producer&lt;Image&gt; = emptyProducer
</code></pre>
<p>&#x56E0;&#x4E3A;&#x8D4B;&#x503C;&#x7ED9; <code>val</code> &#x90A3;&#x5C31;&#x662F;&#x6C38;&#x4E45;&#x7684;&#x300C;&#x7A7A;&#x767D;&#x300D;&#x4E86;&#xFF0C;&#x6C38;&#x4E45;&#x7684;&#x7A7A;&#x767D;&#x90A3;&#x4E0D;&#x53EB;&#x7A7A;&#x767D;&#xFF0C;&#x53EB;&#x5E9F;&#x67F4;&#xFF0C;&#x8FD9;&#x4E2A;&#x53D8;&#x91CF;&#x5C31;&#x6CA1;&#x610F;&#x4E49;&#x4E86;&#x3002;</p>
<h2 id="%E4%BD%9C%E7%94%A8%E4%B8%89%EF%BC%9A%E8%AF%AD%E6%B3%95%E7%9A%84%E5%AE%8C%E6%95%B4%E5%8C%96">&#x4F5C;&#x7528;&#x4E09;&#xFF1A;&#x8BED;&#x6CD5;&#x7684;&#x5B8C;&#x6574;&#x5316;</h2>
<p>&#x53E6;&#x5916;&#xFF0C;<code>Nothing</code> &#x7684;&#x300C;&#x662F;&#x6240;&#x6709;&#x7C7B;&#x578B;&#x7684;&#x5B50;&#x7C7B;&#x578B;&#x300D;&#x8FD9;&#x4E2A;&#x7279;&#x70B9;&#xFF0C;&#x8FD8;&#x5E2E;&#x52A9;&#x4E86; Kotlin &#x8BED;&#x6CD5;&#x7684;&#x5B8C;&#x6574;&#x5316;&#x3002;&#x5728; Kotlin &#x7684;&#x4E0B;&#x5C42;&#x903B;&#x8F91;&#x91CC;&#xFF0C;<code>throw</code> &#x8FD9;&#x4E2A;&#x5173;&#x952E;&#x5B57;&#x662F;&#x6709;&#x8FD4;&#x56DE;&#x503C;&#x7684;&#xFF0C;&#x5B83;&#x7684;&#x8FD4;&#x56DE;&#x503C;&#x7C7B;&#x578B;&#x5C31;&#x662F; <code>Nothing</code>&#x3002;&#x867D;&#x7136;&#x8BF4;&#x7531;&#x4E8E;&#x629B;&#x5F02;&#x5E38;&#x8FD9;&#x4EF6;&#x4E8B;&#x5DF2;&#x7ECF;&#x8DF3;&#x51FA;&#x4E86;&#x7A0B;&#x5E8F;&#x7684;&#x6B63;&#x5E38;&#x903B;&#x8F91;&#xFF0C;&#x6240;&#x4EE5; <code>throw</code> &#x8FD4;&#x56DE;&#x4E0D;&#x8FD4;&#x56DE;&#x503C;&#x3001;&#x8FD4;&#x56DE;&#x503C;&#x7C7B;&#x578B;&#x662F;&#x4E0D;&#x662F; <code>Nothing</code> &#x5BF9;&#x4E8E;&#x5B83;&#x672C;&#x8EAB;&#x90FD;&#x4E0D;&#x91CD;&#x8981;&#xFF0C;&#x4F46;&#x5B83;&#x8BA9;&#x8FD9;&#x79CD;&#x5199;&#x6CD5;&#x6210;&#x4E3A;&#x4E86;&#x5408;&#x6CD5;&#x7684;&#xFF1A;</p>
<pre><code class="language-kotlin">val nothing: Nothing = throw RuntimeException(&quot;&#x629B;&#x5F02;&#x5E38;&#xFF01;&quot;)
</code></pre>
<p>&#x5E76;&#x4E14;&#x56E0;&#x4E3A; <code>Nothing</code> &#x662F;&#x6240;&#x6709;&#x7C7B;&#x578B;&#x7684;&#x5B50;&#x7C7B;&#x578B;&#xFF0C;&#x6240;&#x4EE5;&#x6211;&#x4EEC;&#x8FD9;&#x4E48;&#x5199;&#x4E5F;&#x884C;&#xFF1A;</p>
<pre><code class="language-kotlin">val nothing: String = throw RuntimeException(&quot;&#x629B;&#x5F02;&#x5E38;&#xFF01;&quot;)
</code></pre>
<p>&#x770B;&#x8D77;&#x6765;&#x6CA1;&#x7528;&#x662F;&#x5427;&#xFF1F;&#x5982;&#x679C;&#x6211;&#x518D;&#x628A;&#x5B83;&#x6539;&#x6539;&#xFF0C;&#x5C31;&#x6709;&#x7528;&#x4E86;&#xFF1A;</p>
<pre><code class="language-kotlin">var _name: String? = null
val name: String = _name ?: throw NullPointerException(&quot;_name &#x5728;&#x8FD0;&#x884C;&#x65F6;&#x4E0D;&#x80FD;&#x4E3A;&#x7A7A;&#xFF01;&quot;)
</code></pre>
<p>throw &#x7684;&#x8FD4;&#x56DE;&#x503C;&#x662F; <code>Nothing</code>&#xFF0C;&#x6211;&#x4EEC;&#x5C31;&#x53EF;&#x4EE5;&#x628A;&#x5B83;&#x5199;&#x5728;&#x7B49;&#x53F7;&#x7684;&#x53F3;&#x8FB9;&#xFF0C;&#x5728;&#x8BED;&#x6CD5;&#x5C42;&#x9762;&#x5047;&#x88C5;&#x6210;&#x4E00;&#x4E2A;&#x503C;&#x6765;&#x4F7F;&#x7528;&#xFF0C;&#x4F46;&#x5176;&#x5B9E;&#x76EE;&#x7684;&#x662F;&#x5728;&#x4F8B;&#x5916;&#x60C5;&#x51B5;&#x65F6;&#x629B;&#x5F02;&#x5E38;&#x3002;</p>
<p>Kotlin &#x91CC;&#x9762;&#x6709;&#x4E2A; <code>TODO()</code> &#x51FD;&#x6570;&#x5BF9;&#x5427;&#xFF1A;</p>
<pre><code class="language-kotlin">val someValue: String = TODO()
</code></pre>
<p>&#x8FD9;&#x79CD;&#x5199;&#x6CD5;&#x4E0D;&#x4F1A;&#x62A5;&#x9519;&#xFF0C;&#x5E76;&#x4E0D;&#x662F; IDE &#x6216;&#x8005;&#x7F16;&#x8BD1;&#x5668;&#x505A;&#x4E86;&#x7279;&#x6B8A;&#x5904;&#x7406;&#xFF0C;&#x800C;&#x662F;&#x56E0;&#x4E3A; <code>TODO()</code> &#x7684;&#x5185;&#x90E8;&#x662F;&#x4E00;&#x4E2A; <code>throw</code>&#xFF1A;<br>
<img src="http://image.rengwuxian.com/2023/05/11/07c03d49d7286.jpg" alt="&#x8FD9;&#x73A9;&#x610F;&#x771F;&#x7684;&#x6709;&#x7528;&#x5417;&#xFF1F;&#x5BF9;&#xFF0C;&#x662F;&#x7684;&#xFF01;Kotlin &#x7684; Nothing &#x8BE6;&#x89E3;" loading="lazy"><br>
<code>TODO()</code> &#x8FD4;&#x56DE;&#x7684;&#x662F; <code>Nothing</code>&#xFF0C;&#x662F; <code>String</code> &#x7684;&#x5B50;&#x7C7B;&#xFF0C;&#x600E;&#x4E48;&#x4E0D;&#x80FD;&#x5199;&#x4E86;&#xFF1F;&#x5B8C;&#x5168;&#x5408;&#x6CD5;&#xFF01;&#x867D;&#x7136; <code>throw</code> &#x4E0D;&#x4F1A;&#x771F;&#x6B63;&#x5730;&#x8FD4;&#x56DE;&#xFF0C;&#x4F46;&#x8FD9;&#x8BA9;&#x8BED;&#x6CD5;&#x5C42;&#x9762;&#x53D8;&#x5F97;&#x5B8C;&#x5168;&#x8BF4;&#x5F97;&#x901A;&#x4E86;&#xFF0C;&#x8FD9;&#x4E5F;&#x662F; <code>Nothing</code> &#x7684;&#x4EF7;&#x503C;&#x6240;&#x5728;&#x3002;</p>
<p>&#x9664;&#x4E86; <code>throw</code> &#x4E4B;&#x5916;&#xFF0C;<code>return</code> &#x4E5F;&#x662F;&#x88AB;&#x89C4;&#x5B9A;&#x4E3A;&#x8FD4;&#x56DE; <code>Nothing</code> &#x7684;&#x4E00;&#x4E2A;&#x5173;&#x952E;&#x5B57;&#xFF0C;&#x6240;&#x4EE5;&#x6211;&#x4E5F;&#x53EF;&#x4EE5;&#x8FD9;&#x4E48;&#x5199;&#xFF1A;</p>
<pre><code class="language-kotlin">fun sayMyName(first: String, second: String) {
  val name = if (first == &quot;Walter&quot; &amp;&amp; second == &quot;White&quot;) {
    &quot;Heisenberg&quot;
  } else {
    return // &#x8BED;&#x6CD5;&#x5C42;&#x9762;&#x7684;&#x8FD4;&#x56DE;&#x503C;&#x7C7B;&#x578B;&#x4E3A; Nothing&#xFF0C;&#x8D4B;&#x503C;&#x7ED9; name
  }
  println(name)
}
</code></pre>
<p>&#x8FD9;&#x6BB5;&#x4EE3;&#x7801;&#x4E5F;&#x662F;&#x53EF;&#x4EE5;&#x7B80;&#x5316;&#x7684;&#xFF1A;</p>
<pre><code class="language-kotlin">fun sayMyName(first: String, second: String) {
  if (first == &quot;Walter&quot; &amp;&amp; second == &quot;White&quot;) println(&quot;Heisenberg&quot;)
}
</code></pre>
<p>&#x4E0D;&#x8FC7;&#x540C;&#x6837;&#xFF0C;&#x54B1;&#x4E0D;&#x662F;&#x4E3A;&#x4E86;&#x8BB2;&#x4E1C;&#x897F;&#x4E48;&#xFF0C;&#x5C31;&#x4E0D;&#x7B80;&#x5316;&#x4E86;&#xFF1A;</p>
<pre><code class="language-kotlin">fun sayMyName(first: String, second: String) {
  val name = if (first == &quot;Walter&quot; &amp;&amp; second == &quot;White&quot;) {
    &quot;Heisenberg&quot;
  } else {
    return // &#x8BED;&#x6CD5;&#x5C42;&#x9762;&#x7684;&#x8FD4;&#x56DE;&#x503C;&#x7C7B;&#x578B;&#x4E3A; Nothing&#xFF0C;&#x8D4B;&#x503C;&#x7ED9; name
  }
  println(name)
}
</code></pre>
<p>&#x867D;&#x7136;&#x76F4;&#x63A5;&#x5F3A;&#x884C;&#x89E3;&#x91CA;&#x4E3A;&#x300C;<code>return</code> &#x60F3;&#x600E;&#x4E48;&#x5199;&#x5C31;&#x600E;&#x4E48;&#x5199;&#x300D;&#x4E5F;&#x662F;&#x53EF;&#x4EE5;&#x7684;&#xFF0C;&#x4F46; Kotlin &#x8FD8;&#x662F;&#x6269;&#x5145;&#x4E86;&#x89C4;&#x5219;&#xFF0C;&#x89C4;&#x5B9A; <code>return</code> &#x7684;&#x8FD4;&#x56DE;&#x503C;&#x662F; <code>Nothing</code>&#xFF0C;&#x8BA9;&#x4EE3;&#x7801;&#x4ECE;&#x8BED;&#x6CD5;&#x5C42;&#x9762;&#x5C31;&#x80FD;&#x5F97;&#x5230;&#x89E3;&#x91CA;&#x3002;</p>
<p>&#x8FD9;&#x5C31;&#x662F; <code>Nothing</code> &#x7684;&#x6700;&#x540E;&#x4E00;&#x4E2A;&#x4F5C;&#x7528;&#xFF1A;&#x8BED;&#x6CD5;&#x5C42;&#x9762;&#x7684;&#x5B8C;&#x6574;&#x5316;&#x3002;</p>
<h2 id="%E6%80%BB%E7%BB%93">&#x603B;&#x7ED3;</h2>
<p>&#x597D;&#xFF0C;<code>Nothing</code> &#x7684;&#x5B9A;&#x4E49;&#x3001;&#x5B9A;&#x4F4D;&#x548C;&#x7528;&#x6CD5;&#x5C31;&#x662F;&#x8FD9;&#x4E9B;&#x3002;&#x5982;&#x679C;&#x6CA1;&#x8BB0;&#x5168;&#xFF0C;&#x5F88;&#x6B63;&#x5E38;&#xFF0C;&#x518D;&#x770B;&#x4E00;&#x904D;&#x3002;&#x4F60;&#x770B;&#x89C6;&#x9891;&#x82B1;&#x7684;&#x65F6;&#x95F4;&#x4E00;&#x5B9A;&#x6CA1;&#x6709;&#x6211;&#x7814;&#x7A76;&#x5B83;&#x82B1;&#x7684;&#x65F6;&#x95F4;&#x591A;&#xFF0C;&#x6240;&#x4EE5;&#x591A;&#x770B;&#x4E24;&#x904D;&#x5E94;&#x8BE5;&#x4E0D;&#x7B97;&#x6D6A;&#x8D39;&#x65F6;&#x95F4;&#x3002;<br>
&#x4E0B;&#x671F;&#x6211;&#x4F1A;&#x8BB2;&#x4E00;&#x4E2A;&#x5F88;&#x591A;&#x4EBA;&#x4E0D;&#x5173;&#x6CE8;&#x4F46;&#x5F88;&#x6709;&#x7528;&#x7684;&#x8BDD;&#x9898;&#xFF1A;Kotlin &#x7684;&#x6570;&#x503C;&#x7CFB;&#x7EDF;&#xFF0C;&#x6BD4;&#x5982; <code>Float</code> &#x548C; <code>Double</code> &#x600E;&#x4E48;&#x9009;&#x3001;&#x4E3A;&#x4EC0;&#x4E48; <code>0.7 / 5.0</code> &#x2260; <code>0.14</code> &#x8FD9;&#x7C7B;&#x7684;&#x95EE;&#x9898;&#x3002;&#x5173;&#x6CE8;&#x6211;&#xFF0C;&#x4E86;&#x89E3;&#x66F4;&#x591A; Android &#x5F00;&#x53D1;&#x76F8;&#x5173;&#x7684;&#x77E5;&#x8BC6;&#x548C;&#x6280;&#x80FD;&#x3002;&#x6211;&#x662F;&#x6254;&#x7269;&#x7EBF;&#xFF0C;&#x6211;&#x4E0D;&#x548C;&#x4F60;&#x6BD4;&#x9AD8;&#x4F4E;&#xFF0C;&#x6211;&#x53EA;&#x52A9;&#x4F60;&#x6210;&#x957F;&#x3002;&#x6211;&#x4EEC;&#x4E0B;&#x671F;&#x89C1;&#xFF01;</p>
<p><img src="http://image.rengwuxian.com/2023/05/08/fe402c850832a.jpg" alt="&#x8FD9;&#x73A9;&#x610F;&#x771F;&#x7684;&#x6709;&#x7528;&#x5417;&#xFF1F;&#x5BF9;&#xFF0C;&#x662F;&#x7684;&#xFF01;Kotlin &#x7684; Nothing &#x8BE6;&#x89E3;" loading="lazy"></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[Unit 为啥还能当函数参数？面向实用的 Kotlin Unit 详解]]></title><description><![CDATA[很多从 Java 转到 Kotlin 的人都会有一个疑惑：为什么 Kotlin 没有沿用 Java 的 void 关键字，而要引入这个叫 Unit 的新东西？今天给大家一次性讲清楚 Unit 的定义、作用和用法。]]></description><link>https://rengwuxian.com/kotlin-unit/</link><guid isPermaLink="false">645863cddb750454c6173c95</guid><category><![CDATA[Kotlin]]></category><dc:creator><![CDATA[扔物线]]></dc:creator><pubDate>Mon, 08 May 2023 07:49:55 GMT</pubDate><media:content url="https://rengwuxian.com/content/images/2023/05/Kotlin---Unit-----.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h2 id="%E8%A7%86%E9%A2%91%E5%85%88%E8%A1%8C">&#x89C6;&#x9891;&#x5148;&#x884C;</h2>
<h3 id="%E5%93%94%E5%93%A9%E5%93%94%E5%93%A9">&#x54D4;&#x54E9;&#x54D4;&#x54E9;</h3>
<iframe width="100%" height="480" src="//player.bilibili.com/player.html?bvid=BV1gP411U7M1&amp;page=1&amp;high_quality=1&amp;autoplay=0" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"></iframe>
<h3 id="youtube">YouTube</h3>
<iframe width="100%" height="480" src="https://www.youtube.com/embed/vhqs79aBe3Y" title="Unit &#x4E3A;&#x5565;&#x8FD8;&#x80FD;&#x5F53;&#x51FD;&#x6570;&#x53C2;&#x6570;&#xFF1F;&#x9762;&#x5411;&#x5B9E;&#x7528;&#x7684; Kotlin Unit &#x8BE6;&#x89E3;" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share" allowfullscreen></iframe>
<blockquote>
<img src="https://rengwuxian.com/content/images/2023/05/Kotlin---Unit-----.png" alt="Unit &#x4E3A;&#x5565;&#x8FD8;&#x80FD;&#x5F53;&#x51FD;&#x6570;&#x53C2;&#x6570;&#xFF1F;&#x9762;&#x5411;&#x5B9E;&#x7528;&#x7684; Kotlin Unit &#x8BE6;&#x89E3;"><p>&#x4E0B;&#x9762;&#x662F;&#x89C6;&#x9891;&#x5185;&#x5BB9;&#x7684;&#x811A;&#x672C;&#x6587;&#x6848;&#x539F;&#x7A3F;&#x5206;&#x4EAB;&#x3002;</p>
</blockquote>
<p><img src="http://image.rengwuxian.com/2023/05/08/fe402c850832a.jpg" alt="Unit &#x4E3A;&#x5565;&#x8FD8;&#x80FD;&#x5F53;&#x51FD;&#x6570;&#x53C2;&#x6570;&#xFF1F;&#x9762;&#x5411;&#x5B9E;&#x7528;&#x7684; Kotlin Unit &#x8BE6;&#x89E3;" loading="lazy"></p>
<h2 id="%E6%96%87%E6%A1%88%E5%8E%9F%E7%A8%BF">&#x6587;&#x6848;&#x539F;&#x7A3F;</h2>
<p>&#x5F88;&#x591A;&#x4ECE; Java &#x8F6C;&#x5230; Kotlin &#x7684;&#x4EBA;&#x90FD;&#x4F1A;&#x6709;&#x4E00;&#x4E2A;&#x7591;&#x60D1;&#xFF1A;&#x4E3A;&#x4EC0;&#x4E48; Kotlin &#x6CA1;&#x6709;&#x6CBF;&#x7528; Java &#x7684; <code>void</code> &#x5173;&#x952E;&#x5B57;&#xFF0C;&#x800C;&#x8981;&#x5F15;&#x5165;&#x8FD9;&#x4E2A;&#x53EB; <code>Unit</code> &#x7684;&#x65B0;&#x4E1C;&#x897F;&#xFF1F;</p>
<pre><code class="language-java">// Java
public void sayHello() {
  System.out.println(&quot;Hello!&quot;);
}
</code></pre>
<pre><code class="language-kotlin">// Kotlin
fun sayHello(): Unit {
  println(&quot;Hello!&quot;)
}
</code></pre>
<p>&#x4E0D;&#x8FC7;&#x8FD9;&#x4E2A;&#x95EE;&#x9898;&#x4E00;&#x822C;&#x4E5F;&#x4E0D;&#x4F1A;&#x7EF4;&#x6301;&#x5F88;&#x4E45;&#xFF0C;&#x56E0;&#x4E3A;&#x5C31;&#x7B97;&#x4F60;&#x4E0D;&#x660E;&#x767D;&#xFF0C;&#x597D;&#x50CF;&#x2026;&#x2026;&#x4E5F;&#x4E0D;&#x5F71;&#x54CD;&#x5199;&#x4EE3;&#x7801;&#x3002;</p>
<p>&#x76F4;&#x5230;&#x8FD9;&#x4E24;&#x5E74;&#xFF0C;&#x5927;&#x5BB6;&#x53D1;&#x73B0; Compose &#x7684;&#x5B98;&#x65B9;&#x793A;&#x4F8B;&#x4EE3;&#x7801;&#x91CC;&#x7ADF;&#x7136;&#x6709;&#x628A; <code>Unit</code> &#x586B;&#x5230;&#x51FD;&#x6570;&#x53C2;&#x6570;&#x91CC;&#x7684;&#x60C5;&#x51B5;&#xFF1A;</p>
<pre><code class="language-kotlin">LaunchedEffect(Unit) {
  xxxx
  xxxxxx
  xxx
}
</code></pre>
<p>&#x6211;&#x4EEC;&#x624D;&#x89C9;&#x5F97;&#xFF1A;&#x300C;&#x554A;&#xFF1F;&#x8FD8;&#x80FD;&#x8FD9;&#x4E48;&#x5199;&#xFF1F;&#x300D;</p>
<h2 id="unit-%E7%9A%84%E6%9C%AC%E8%B4%A8"><code>Unit</code> &#x7684;&#x672C;&#x8D28;</h2>
<p>&#x5927;&#x5BB6;&#x597D;&#xFF0C;&#x6211;&#x662F;&#x6254;&#x7269;&#x7EBF;&#x6731;&#x51EF;&#x3002;</p>
<p>&#x4ECA;&#x5929;&#x6765;&#x8BB2;&#x4E00;&#x8BB2; <code>Unit</code> &#x8FD9;&#x4E2A;&#x7279;&#x6B8A;&#x7684;&#x7C7B;&#x578B;&#x3002;</p>
<p>&#x6211;&#x4EEC;&#x5728;&#x521A;&#x5B66; Kotlin &#x7684;&#x65F6;&#x5019;&#xFF0C;&#x5C31;&#x77E5;&#x9053; Java &#x7684; <code>void</code> &#x5173;&#x952E;&#x5B57;&#x5728; Kotlin &#x91CC;&#x6CA1;&#x6709;&#x4E86;&#xFF0C;&#x53D6;&#x800C;&#x4EE3;&#x4E4B;&#x7684;&#x662F;&#x4E00;&#x4E2A;&#x53EB;&#x505A; <code>Unit</code> &#x7684;&#x4E1C;&#x897F;&#xFF1A;</p>
<pre><code class="language-java">// Java
public void sayHello() {
  System.out.println(&quot;Hello!&quot;)
}
</code></pre>
<pre><code class="language-kotlin">// Kotlin
fun sayHello(): Unit {
  println(&quot;Hello!&quot;)
}
</code></pre>
<p>&#x800C;&#x8FD9;&#x4E2A; <code>Unit</code>&#xFF0C;&#x548C; Java &#x7684; <code>void</code> &#x5176;&#x5B9E;&#x662F;&#x4E0D;&#x4E00;&#x6837;&#x7684;&#x3002;&#x6BD4;&#x5982; <code>Unit</code> &#x7684;&#x8FD4;&#x56DE;&#x503C;&#x7C7B;&#x578B;&#xFF0C;&#x6211;&#x4EEC;&#x662F;&#x53EF;&#x4EE5;&#x7701;&#x7565;&#x6389;&#x4E0D;&#x5199;&#x7684;&#xFF1A;</p>
<pre><code class="language-kotlin">// Kotlin
fun sayHello() {
  println(&quot;Hello!&quot;)
}
</code></pre>
<p>&#x4E0D;&#x8FC7;&#x7701;&#x7565;&#x53EA;&#x662F;&#x8BED;&#x6CD5;&#x4E0A;&#x7684;&#x4FBF;&#x5229;&#xFF0C;&#x5B9E;&#x9645;&#x4E0A; Kotlin &#x8FD8;&#x662F;&#x4F1A;&#x628A;&#x5B83;&#x7406;&#x89E3;&#x6210; <code>Unit</code>&#x3002;</p>
<p><code>Unit</code> &#x548C; Java &#x7684; <code>void</code> &#x771F;&#x6B63;&#x7684;&#x533A;&#x522B;&#x5728;&#x4E8E;&#xFF0C;<code>void</code> &#x662F;&#x771F;&#x7684;&#x8868;&#x793A;&#x4EC0;&#x4E48;&#x90FD;&#x4E0D;&#x8FD4;&#x56DE;&#xFF0C;&#x800C; Kotlin &#x7684; <code>Unit</code> &#x5374;&#x662F;&#x4E00;&#x4E2A;&#x771F;&#x5B9E;&#x5B58;&#x5728;&#x7684;&#x7C7B;&#x578B;&#xFF1A;</p>
<pre><code class="language-kotlin">public object Unit {
    override fun toString() = &quot;kotlin.Unit&quot;
}
</code></pre>
<p>&#x5B83;&#x662F;&#x4E00;&#x4E2A; <code>object</code>&#xFF0C;&#x4E5F;&#x5C31;&#x662F; Kotlin &#x91CC;&#x7684;&#x5355;&#x4F8B;&#x7C7B;&#x578B;&#x6216;&#x8005;&#x8BF4;&#x5355;&#x4F8B;&#x5BF9;&#x8C61;&#x3002;&#x5F53;&#x4E00;&#x4E2A;&#x51FD;&#x6570;&#x7684;&#x8FD4;&#x56DE;&#x503C;&#x7C7B;&#x578B;&#x662F; <code>Unit</code> &#x7684;&#x65F6;&#x5019;&#xFF0C;&#x5B83;&#x662F;&#x9700;&#x8981;&#x8FD4;&#x56DE;&#x4E00;&#x4E2A; <code>Unit</code> &#x7C7B;&#x578B;&#x7684;&#x5BF9;&#x8C61;&#x7684;&#xFF1A;</p>
<pre><code class="language-kotlin">// Kotlin
fun sayHello() {
  println(&quot;Hello!&quot;)
  return Unit
}
</code></pre>
<p>&#x53EA;&#x4E0D;&#x8FC7;&#x56E0;&#x4E3A;&#x5B83;&#x662F;&#x4E2A; <code>object</code> &#xFF0C;&#x6240;&#x4EE5;&#x552F;&#x4E00;&#x80FD;&#x8FD4;&#x56DE;&#x7684;&#x503C;&#x5C31;&#x662F; <code>Unit</code> &#x672C;&#x8EAB;&#x3002;</p>
<p>&#x53E6;&#x5916;&#xFF0C;&#x8FD9;&#x4E00;&#x884C; <code>return</code> &#x6211;&#x4EEC;&#x4E5F;&#x53EF;&#x4EE5;&#x7701;&#x7565;&#x4E0D;&#x5199;&#xFF1A;</p>
<pre><code class="language-kotlin">// Kotlin
fun sayHello() {
  println(&quot;Hello!&quot;)
}
</code></pre>
<p>&#x56E0;&#x4E3A;&#x5C31;&#x50CF;&#x8FD4;&#x56DE;&#x503C;&#x7C7B;&#x578B;&#x4E00;&#x6837;&#xFF0C;&#x8FD9;&#x4E00;&#x884C; <code>return</code>&#xFF0C;Kotlin &#x4E5F;&#x4F1A;&#x5E2E;&#x6211;&#x4EEC;&#x81EA;&#x52A8;&#x52A0;&#x4E0A;&#xFF1A;</p>
<pre><code class="language-kotlin">// Kotlin
fun sayHello(): Unit {
  println(&quot;Hello!&quot;)
  return Unit
}
</code></pre>
<p>&#x8FD9;&#x4E24;&#x4E2A; <code>Unit</code> &#x662F;&#x4E0D;&#x4E00;&#x6837;&#x7684;&#xFF0C;&#x4E0A;&#x9762;&#x7684;&#x662F; <code>Unit</code> &#x8FD9;&#x4E2A;&#x7C7B;&#x578B;&#xFF0C;&#x4E0B;&#x9762;&#x7684;&#x662F; <code>Unit</code> &#x8FD9;&#x4E2A;&#x5355;&#x4F8B;&#x5BF9;&#x8C61;&#xFF0C;&#x5B83;&#x4FE9;&#x957F;&#x5F97;&#x4E00;&#x6837;&#x4F46;&#x662F;&#x662F;&#x4E0D;&#x540C;&#x7684;&#x4E1C;&#x897F;&#x3002;&#x6CE8;&#x610F;&#x4E86;&#xFF0C;&#x8FD9;&#x4E2A;&#x5E76;&#x4E0D;&#x662F; Kotlin &#x7ED9; <code>Unit</code> &#x7684;&#x7279;&#x6743;&#xFF0C;&#x800C;&#x662F; <code>object</code> &#x672C;&#x6765;&#x5C31;&#x6709;&#x7684;&#x8BED;&#x6CD5;&#x7279;&#x6027;&#x3002;&#x4F60;&#x5982;&#x679C;&#x6709;&#x9700;&#x8981;&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x7528;&#x540C;&#x6837;&#x7684;&#x683C;&#x5F0F;&#x6765;&#x4F7F;&#x7528;&#x522B;&#x7684;&#x5355;&#x4F8B;&#x5BF9;&#x8C61;&#xFF0C;&#x662F;&#x4E0D;&#x4F1A;&#x62A5;&#x9519;&#x7684;&#xFF1A;</p>
<pre><code class="language-kotlin">object Rengwuxian

fun getRengwuxian(): Rengwuxian {
  return Rengwuxian
}
</code></pre>
<p>&#x5305;&#x62EC;&#x4F60;&#x4E5F;&#x53EF;&#x4EE5;&#x8FD9;&#x6837;&#x5199;&#xFF1A;</p>
<pre><code class="language-kotlin">val unit: Unit = Unit
</code></pre>
<p>&#x4E5F;&#x662F;&#x4E00;&#x6837;&#x7684;&#x9053;&#x7406;&#xFF0C;&#x7B49;&#x53F7;&#x5DE6;&#x8FB9;&#x662F;&#x7C7B;&#x578B;&#xFF0C;&#x7B49;&#x53F7;&#x53F3;&#x8FB9;&#x662F;&#x5BF9;&#x8C61;&#x2014;&#x2014;&#x5F53;&#x7136;&#x8FD9;&#x4E48;&#x5199;&#x6CA1;&#x4EC0;&#x4E48;&#x5B9E;&#x9645;&#x4F5C;&#x7528;&#x554A;&#xFF0C;&#x5355;&#x4F8B;&#x4F60;&#x5C31;&#x76F4;&#x63A5;&#x7528;&#x5C31;&#x884C;&#x4E86;&#x3002;</p>
<p>&#x6240;&#x4EE5;&#x5728;&#x7ED3;&#x6784;&#x4E0A;&#xFF0C;<code>Unit</code> &#x5E76;&#x6CA1;&#x6709;&#x4EFB;&#x4F55;&#x7684;&#x7279;&#x522B;&#x4E4B;&#x5904;&#xFF0C;&#x5B83;&#x5C31;&#x53EA;&#x662F;&#x4E00;&#x4E2A; Kotlin &#x7684; <code>object</code> &#x800C;&#x5DF2;&#x3002;&#x9664;&#x4E86;&#x5BF9;&#x4E8E;&#x51FD;&#x6570;&#x8FD4;&#x56DE;&#x503C;&#x7C7B;&#x578B;&#x548C;&#x8FD4;&#x56DE;&#x503C;&#x7684;&#x81EA;&#x52A8;&#x8865;&#x5145;&#x4E4B;&#x5916;&#xFF0C;Kotlin &#x5BF9;&#x5B83;&#x6CA1;&#x6709;&#x518D;&#x65BD;&#x52A0;&#x4EFB;&#x4F55;&#x7684;&#x9B54;&#x6CD5;&#x4E86;&#x3002;&#x5B83;&#x7684;&#x7279;&#x6B8A;&#x4E4B;&#x5904;&#xFF0C;&#x66F4;&#x591A;&#x7684;&#x662F;&#x5728;&#x4E8E;&#x8BED;&#x4E49;&#x548C;&#x7528;&#x9014;&#x7684;&#x89D2;&#x5EA6;&#xFF1A;&#x5B83;&#x662F;&#x4E2A;&#x7531;&#x5B98;&#x65B9;&#x89C4;&#x5B9A;&#x51FA;&#x6765;&#x7684;&#x3001;&#x7528;&#x4E8E;&#x300C;&#x4EC0;&#x4E48;&#x4E5F;&#x4E0D;&#x8FD4;&#x56DE;&#x300D;&#x7684;&#x573A;&#x666F;&#x7684;&#x8FD4;&#x56DE;&#x503C;&#x7C7B;&#x578B;&#x3002;&#x4F46;&#x8FD9;&#x53EA;&#x662F;&#x5B83;&#x88AB;&#x89C4;&#x5B9A;&#x7684;&#x7528;&#x6CD5;&#x800C;&#x5DF2;&#xFF0C;&#x800C;&#x672C;&#x8D28;&#x4E0A;&#x5B83;&#x771F;&#x5C31;&#x662F;&#x4E2A;&#x5B9E;&#x5B9E;&#x5728;&#x5728;&#x7684;&#x7C7B;&#x578B;&#x3002;&#x4E5F;&#x5C31;&#x662F;&#x5728; Kotlin &#x91CC;&#xFF0C;&#x5E76;&#x4E0D;&#x5B58;&#x5728;&#x771F;&#x6B63;&#x6CA1;&#x6709;&#x8FD4;&#x56DE;&#x503C;&#x7684;&#x51FD;&#x6570;&#xFF0C;&#x6240;&#x6709;&#x300C;&#x6CA1;&#x6709;&#x8FD4;&#x56DE;&#x503C;&#x300D;&#x7684;&#x51FD;&#x6570;&#x5B9E;&#x8D28;&#x4E0A;&#x7684;&#x8FD4;&#x56DE;&#x503C;&#x7C7B;&#x578B;&#x90FD;&#x662F; <code>Unit</code>&#xFF0C;&#x800C;&#x8FD4;&#x56DE;&#x503C;&#x4E5F;&#x90FD;&#x662F; <code>Unit</code> &#x8FD9;&#x4E2A;&#x5355;&#x4F8B;&#x5BF9;&#x8C61;&#xFF0C;&#x8FD9;&#x662F; <code>Unit</code> &#x548C; Java &#x7684; <code>void</code> &#x5728;&#x672C;&#x8D28;&#x4E0A;&#x7684;&#x4E0D;&#x540C;&#x3002;</p>
<h2 id="unit-%E7%9A%84%E4%BB%B7%E5%80%BC%E6%89%80%E5%9C%A8"><code>Unit</code> &#x7684;&#x4EF7;&#x503C;&#x6240;&#x5728;</h2>
<p>&#x90A3;&#x4E48;&#x63A5;&#x4E0B;&#x6765;&#x7684;&#x95EE;&#x9898;&#x5C31;&#x662F;&#xFF1A;&#x8FD9;&#x4E48;&#x505A;&#x7684;&#x610F;&#x4E49;&#x5728;&#x54EA;&#xFF1F;</p>
<p>&#x610F;&#x4E49;&#x5C31;&#x5728;&#x4E8E;&#xFF0C;<code>Unit</code> &#x53BB;&#x6389;&#x4E86;&#x65E0;&#x8FD4;&#x56DE;&#x503C;&#x7684;&#x51FD;&#x6570;&#x7684;&#x7279;&#x6B8A;&#x6027;&#xFF0C;&#x6D88;&#x9664;&#x4E86;&#x6709;&#x8FD4;&#x56DE;&#x503C;&#x548C;&#x65E0;&#x8FD4;&#x56DE;&#x503C;&#x7684;&#x51FD;&#x6570;&#x7684;&#x672C;&#x8D28;&#x533A;&#x522B;&#xFF0C;&#x8FD9;&#x6837;&#x5F88;&#x591A;&#x4E8B;&#x505A;&#x8D77;&#x6765;&#x5C31;&#x4F1A;&#x66F4;&#x7B80;&#x5355;&#x4E86;&#x3002;</p>
<h3 id="%E4%BE%8B%EF%BC%9A%E6%9C%89%E8%BF%94%E5%9B%9E%E5%80%BC%E7%9A%84%E5%87%BD%E6%95%B0%E5%9C%A8%E9%87%8D%E5%86%99%E6%97%B6%E6%B2%A1%E6%9C%89%E8%BF%94%E5%9B%9E%E5%80%BC">&#x4F8B;&#xFF1A;&#x6709;&#x8FD4;&#x56DE;&#x503C;&#x7684;&#x51FD;&#x6570;&#x5728;&#x91CD;&#x5199;&#x65F6;&#x6CA1;&#x6709;&#x8FD4;&#x56DE;&#x503C;</h3>
<p>&#x6BD4;&#x5982;&#xFF1F;</p>
<p>&#x6BD4;&#x5982;&#x5728; Java &#x91CC;&#x9762;&#xFF0C;&#x7531;&#x4E8E; <code>void</code> &#x5E76;&#x4E0D;&#x662F;&#x4E00;&#x79CD;&#x771F;&#x6B63;&#x7684;&#x7C7B;&#x578B;&#xFF0C;&#x6240;&#x4EE5;&#x4EFB;&#x4F55;&#x6709;&#x8FD4;&#x56DE;&#x503C;&#x7684;&#x65B9;&#x6CD5;&#x5728;&#x5B50;&#x7C7B;&#x91CC;&#x7684;&#x91CD;&#x5199;&#x65B9;&#x6CD5;&#x4E5F;&#x90FD;&#x5FC5;&#x987B;&#x6709;&#x8FD4;&#x56DE;&#x503C;&#xFF0C;&#x800C;&#x4E0D;&#x80FD;&#x5199;&#x6210; <code>void</code>&#xFF0C;&#x4E0D;&#x7BA1;&#x4F60;&#x7528;&#x4E0D;&#x7528;&#x6CDB;&#x578B;&#x90FD;&#x662F;&#x4E00;&#x6837;&#x7684;&#xFF1A;</p>
<pre><code class="language-java">public abstract class Maker {
  public abstract Object make();
}

public class AppleMaker extends Maker {
  // &#x5408;&#x6CD5;
  @Override
  public Apple make() {
    return new Apple();
  }
}

public class NewWorldMaker extends Maker {
  // &#x975E;&#x6CD5;
  @Override
  public void make() {
    world.refresh();
  }
}
</code></pre>
<p><img src="http://image.rengwuxian.com/2023/05/08/0c50c2a1f3bd2.jpg" alt="Unit &#x4E3A;&#x5565;&#x8FD8;&#x80FD;&#x5F53;&#x51FD;&#x6570;&#x53C2;&#x6570;&#xFF1F;&#x9762;&#x5411;&#x5B9E;&#x7528;&#x7684; Kotlin Unit &#x8BE6;&#x89E3;" loading="lazy"></p>
<pre><code class="language-java">public abstract class Maker&lt;T&gt; {
  public abstract T make();
}

public class AppleMaker extends Maker&lt;Apple&gt; {
  // &#x5408;&#x6CD5;
  Override
  public Apple make() {
    return new Apple();
  }
}

public class NewWorldMaker extends Maker&lt;void&gt; {
  // &#x975E;&#x6CD5;
  Override
  public void make() {
    world.refresh();
  }
}
</code></pre>
<p><img src="http://image.rengwuxian.com/2023/05/08/dcb2ba053445b.jpg" alt="Unit &#x4E3A;&#x5565;&#x8FD8;&#x80FD;&#x5F53;&#x51FD;&#x6570;&#x53C2;&#x6570;&#xFF1F;&#x9762;&#x5411;&#x5B9E;&#x7528;&#x7684; Kotlin Unit &#x8BE6;&#x89E3;" loading="lazy"></p>
<p>&#x4F60;&#x53EA;&#x80FD;&#x53BB;&#x5199;&#x4E00;&#x884C; <code>return null</code> &#x6765;&#x624B;&#x52A8;&#x5B9E;&#x73B0;&#x63A5;&#x8FD1;&#x4E8E;&#x300C;&#x4EC0;&#x4E48;&#x90FD;&#x4E0D;&#x8FD4;&#x56DE;&#x300D;&#x7684;&#x6548;&#x679C;&#xFF1A;</p>
<pre><code class="language-java">public class NewWorldMaker extends Maker {
  @Override
  public Object make() {
    world.refresh();
    return null;
  }
}
</code></pre>
<p><img src="http://image.rengwuxian.com/2023/05/08/e4df0a679b4dd.jpg" alt="Unit &#x4E3A;&#x5565;&#x8FD8;&#x80FD;&#x5F53;&#x51FD;&#x6570;&#x53C2;&#x6570;&#xFF1F;&#x9762;&#x5411;&#x5B9E;&#x7528;&#x7684; Kotlin Unit &#x8BE6;&#x89E3;" loading="lazy"></p>
<p>&#x800C;&#x4E14;&#x5982;&#x679C;&#x4F60;&#x7528;&#x7684;&#x662F;&#x6CDB;&#x578B;&#xFF0C;&#x53EF;&#x80FD;&#x8FD8;&#x9700;&#x8981;&#x7528;&#x4E00;&#x4E2A;&#x4E13;&#x95E8;&#x7684;&#x865A;&#x5047;&#x7C7B;&#x578B;&#x6765;&#x8BA9;&#x6548;&#x679C;&#x8FBE;&#x5230;&#x5B8C;&#x7F8E;&#xFF1A;</p>
<pre><code class="language-java">public class NewWorldMaker extends Maker&lt;Void&gt; {
  @Override
  public Void make() {
    world.refresh();
    return null;
  }
}
</code></pre>
<p><img src="http://image.rengwuxian.com/2023/05/08/563198558e7af.jpg" alt="Unit &#x4E3A;&#x5565;&#x8FD8;&#x80FD;&#x5F53;&#x51FD;&#x6570;&#x53C2;&#x6570;&#xFF1F;&#x9762;&#x5411;&#x5B9E;&#x7528;&#x7684; Kotlin Unit &#x8BE6;&#x89E3;" loading="lazy"><br>
&#x800C;&#x5728; Kotlin &#x91CC;&#xFF0C;<code>Unit</code> &#x662F;&#x4E00;&#x79CD;&#x771F;&#x5B9E;&#x5B58;&#x5728;&#x7684;&#x7C7B;&#x578B;&#xFF0C;&#x6240;&#x4EE5;&#x76F4;&#x63A5;&#x5199;&#x5C31;&#x884C;&#x4E86;&#xFF1A;</p>
<pre><code class="language-kotlin">abstract class Maker {
  abstract fun make(): Any
}

class AppleMaker : Maker() {
  override fun make(): Apple {
    return Apple()
  }
}

class NewWorldMaker : Maker() {
  override fun make() {
    world.refresh()
  }
}
</code></pre>
<pre><code class="language-kotlin">abstract class Maker&lt;T&gt; {
  abstract fun make(): T
}

class AppleMaker : Maker&lt;Apple&gt;() {
  override fun make(): Apple {
    return Apple()
  }
}

class NewWorldMaker : Maker&lt;Unit&gt;() {
  override fun make() {
    world.refresh()
  }
}
</code></pre>
<p>&#x8FD9;&#x5C31;&#x662F; <code>Unit</code> &#x7684;&#x53BB;&#x7279;&#x6B8A;&#x6027;&#x2014;&#x2014;&#x6216;&#x8005;&#x8BF4;&#x901A;&#x7528;&#x6027;&#x2014;&#x2014;&#x6240;&#x7ED9;&#x6211;&#x4EEC;&#x5E26;&#x6765;&#x7684;&#x4FBF;&#x5229;&#x3002;</p>
<h3 id="%E4%BE%8B%EF%BC%9A%E5%87%BD%E6%95%B0%E7%B1%BB%E5%9E%8B%E7%9A%84%E5%87%BD%E6%95%B0%E5%8F%82%E6%95%B0">&#x4F8B;&#xFF1A;&#x51FD;&#x6570;&#x7C7B;&#x578B;&#x7684;&#x51FD;&#x6570;&#x53C2;&#x6570;</h3>
<p>&#x540C;&#x6837;&#x7684;&#xFF0C;&#x8FD9;&#x79CD;&#x53BB;&#x7279;&#x6B8A;&#x6027;&#x5BF9;&#x4E8E; Kotlin &#x7684;&#x51FD;&#x6570;&#x5F0F;&#x7F16;&#x7A0B;&#x4E5F;&#x63D0;&#x4F9B;&#x4E86;&#x65B9;&#x4FBF;&#x3002;&#x4E00;&#x4E2A;&#x51FD;&#x6570;&#x7684;&#x51FD;&#x6570;&#x7C7B;&#x578B;&#x7684;&#x53C2;&#x6570;&#xFF0C;&#x5728;&#x51FD;&#x6570;&#x8C03;&#x7528;&#x7684;&#x65F6;&#x5019;&#x586B;&#x5165;&#x7684;&#x5B9E;&#x53C2;&#xFF0C;&#x53EA;&#x8981;&#x7B26;&#x5408;&#x58F0;&#x660E;&#x91CC;&#x9762;&#x7684;&#x8FD4;&#x56DE;&#x503C;&#x7C7B;&#x578B;&#xFF0C;&#x5B83;&#x662F;&#x53EF;&#x4EE5;&#x6709;&#x8FD4;&#x56DE;&#x503C;&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x6CA1;&#x6709;&#x8FD4;&#x56DE;&#x503C;&#x7684;&#xFF1A;</p>
<pre><code class="language-kotlin">fun runTask(task: () -&gt; Any) {
  when (val result = task()) {
    Unit -&gt; println(&quot;result is Unit&quot;)
    String -&gt; println(&quot;result is a String: $result&quot;)
    else -&gt; println(&quot;result is an unknown type&quot;)
  }
}

...

runTask { } // () -&gt; Unit
runTask { println(&quot;&#x5B8C;&#x6210;&#xFF01;&quot;) } // () -&gt; String
runTask { 1 } // () -&gt; Int
</code></pre>
<p>Java &#x4E0D;&#x652F;&#x6301;&#x628A;&#x65B9;&#x6CD5;&#x5F53;&#x505A;&#x5BF9;&#x8C61;&#x6765;&#x4F20;&#x9012;&#xFF0C;&#x6240;&#x4EE5;&#x6211;&#x4EEC;&#x6CA1;&#x6CD5;&#x8DDF; Java &#x505A;&#x5BF9;&#x6BD4;&#xFF1B;&#x4F46;&#x5982;&#x679C; Kotlin &#x4E0D;&#x662F;&#x50CF;&#x73B0;&#x5728;&#x8FD9;&#x6837;&#x7528;&#x4E86; <code>Unit</code>&#xFF0C;&#x800C;&#x662F;&#x7167;&#x6284;&#x4E86; Java &#x7684; <code>void</code> &#x5173;&#x952E;&#x5B57;&#xFF0C;&#x6211;&#x4EEC;&#x5C31;&#x80AF;&#x5B9A;&#x6CA1;&#x529E;&#x6CD5;&#x8FD9;&#x6837;&#x5199;&#x3002;</p>
<h3 id="%E5%B0%8F%E7%BB%93%EF%BC%9A%E5%8E%BB%E7%89%B9%E6%AE%8A%E5%8C%96">&#x5C0F;&#x7ED3;&#xFF1A;&#x53BB;&#x7279;&#x6B8A;&#x5316;</h3>
<p>&#x8FD9;&#x5C31;&#x662F;&#x6211;&#x521A;&#x624D;&#x6240;&#x8BF4;&#x7684;&#xFF0C;&#x5BF9;&#x4E8E;&#x65E0;&#x8FD4;&#x56DE;&#x503C;&#x7684;&#x51FD;&#x6570;&#x7684;&#x300C;&#x53BB;&#x7279;&#x6B8A;&#x5316;&#x300D;&#xFF0C;&#x662F; <code>Unit</code> &#x6700;&#x6838;&#x5FC3;&#x7684;&#x4EF7;&#x503C;&#x3002;&#x5B83;&#x76F8;&#x5F53;&#x4E8E;&#x662F;&#x5BF9; Java &#x7684; <code>void</code> &#x8FDB;&#x884C;&#x4E86;&#x7F3A;&#x9677;&#x7684;&#x4FEE;&#x590D;&#xFF0C;&#x8BA9;&#x672C;&#x6765;&#x6709;&#x7684;&#x95EE;&#x9898;&#x73B0;&#x5728;&#x6CA1;&#x6709;&#x4E86;&#x3002;&#x800C;&#x5BF9;&#x4E8E;&#x5B9E;&#x9645;&#x5F00;&#x53D1;&#xFF0C;&#x5B83;&#x7684;&#x4F5C;&#x7528;&#x662F;&#x5C5E;&#x4E8E;&#x6DA6;&#x7269;&#x7EC6;&#x65E0;&#x58F0;&#x7684;&#xFF0C;&#x4F60;&#x4E0D;&#x9700;&#x8981;&#x61C2;&#x6211;&#x8BF4;&#x7684;&#x8FD9;&#x4E00;&#x5927;&#x5806;&#x4E1C;&#x897F;&#xFF0C;&#x4E5F;&#x4E0D;&#x5F71;&#x54CD;&#x4F60;&#x4EAB;&#x53D7; <code>Unit</code> &#x7684;&#x8FD9;&#x4E9B;&#x597D;&#x5904;&#x3002;</p>
<p>&#x2026;&#x2026;&#x2026;&#x2026;</p>
<p>&#x90A3;&#x6211;&#x51FA;&#x8FD9;&#x671F;&#x89C6;&#x9891;&#x5E72;&#x561B;&#xFF1F;</p>
<p>&#x2014;&#x2014;&#x5F00;&#x4E2A;&#x73A9;&#x7B11;&#x3002;&#x4E86;&#x89E3;&#x5404;&#x79CD;&#x9B54;&#x6CD5;&#x80CC;&#x540E;&#x7684;&#x5B9E;&#x8D28;&#xFF0C;&#x5BF9;&#x4E8E;&#x6211;&#x4EEC;&#x638C;&#x63E1;&#x548C;&#x6B63;&#x786E;&#x5730;&#x4F7F;&#x7528;&#x4E00;&#x95E8;&#x8BED;&#x8A00;&#x662F;&#x5F88;&#x6709;&#x5FC5;&#x8981;&#x7684;&#x3002;</p>
<h2 id="%E5%BB%B6%E4%BC%B8%EF%BC%9A%E5%BD%93%E5%81%9A%E7%BA%AF%E7%B2%B9%E7%9A%84%E5%8D%95%E4%BE%8B%E5%AF%B9%E8%B1%A1%E6%9D%A5%E4%BD%BF%E7%94%A8">&#x5EF6;&#x4F38;&#xFF1A;&#x5F53;&#x505A;&#x7EAF;&#x7CB9;&#x7684;&#x5355;&#x4F8B;&#x5BF9;&#x8C61;&#x6765;&#x4F7F;&#x7528;</h2>
<p>&#x6BD4;&#x5982;&#xFF0C;&#x77E5;&#x9053; <code>Unit</code> &#x662F;&#x4EC0;&#x4E48;&#x4E4B;&#x540E;&#xFF0C;&#x4F60;&#x5C31;&#x80FD;&#x7406;&#x89E3;&#x4E3A;&#x4EC0;&#x4E48;&#x5B83;&#x80FD;&#x4F5C;&#x4E3A;&#x51FD;&#x6570;&#x7684;&#x53C2;&#x6570;&#x53BB;&#x88AB;&#x4F7F;&#x7528;&#x3002;</p>
<p>Compose &#x91CC;&#x7684;&#x534F;&#x7A0B;&#x51FD;&#x6570; <code>LaunchedEffect()</code> &#x8981;&#x6C42;&#x6211;&#x4EEC;&#x586B;&#x5165;&#x81F3;&#x5C11;&#x4E00;&#x4E2A; <code>key</code> &#x53C2;&#x6570;&#xFF0C;&#x6765;&#x8BA9;&#x534F;&#x7A0B;&#x5728;&#x754C;&#x9762;&#x72B6;&#x6001;&#x53D8;&#x5316;&#x65F6;&#x53EF;&#x4EE5;&#x81EA;&#x52A8;&#x91CD;&#x542F;&#xFF1A;</p>
<pre><code class="language-kotlin">LaunchedEffect(key) {
  xxxx
  xxxxxx
  xxx
}
</code></pre>
<p>&#x800C;&#x5982;&#x679C;&#x6211;&#x4EEC;&#x6CA1;&#x6709;&#x81EA;&#x52A8;&#x91CD;&#x542F;&#x7684;&#x9700;&#x6C42;&#xFF0C;&#x5C31;&#x53EF;&#x4EE5;&#x5728;&#x53C2;&#x6570;&#x91CC;&#x586B;&#x4E0A;&#x4E00;&#x4E2A; <code>Unit</code>&#xFF1A;</p>
<pre><code class="language-kotlin">LaunchedEffect(Unit) {
  xxxx
  xxxxxx
  xxx
}
</code></pre>
<p>&#x56E0;&#x4E3A; <code>Unit</code> &#x662F;&#x4E0D;&#x53D8;&#x7684;&#xFF0C;&#x6240;&#x4EE5;&#x628A;&#x5B83;&#x586B;&#x8FDB;&#x53C2;&#x6570;&#x91CC;&#xFF0C;&#x8FD9;&#x4E2A;&#x534F;&#x7A0B;&#x5C31;&#x4E0D;&#x4F1A;&#x81EA;&#x52A8;&#x91CD;&#x542F;&#x4E86;&#x3002;&#x8FD9;&#x62DB;&#x7528;&#x7740;&#x975E;&#x5E38;&#x65B9;&#x4FBF;&#xFF0C;Compose &#x7684;&#x5B98;&#x65B9;&#x793A;&#x4F8B;&#x91CC;&#x4E5F;&#x6709;&#x8FD9;&#x6837;&#x7684;&#x4EE3;&#x7801;&#x3002;&#x4E0D;&#x8FC7;&#x8FD9;&#x4E2A;&#x548C; <code>Unit</code> &#x81EA;&#x8EAB;&#x7684;&#x5B9A;&#x4F4D;&#x5DF2;&#x7ECF;&#x65E0;&#x5173;&#x4E86;&#xFF0C;&#x800C;&#x4EC5;&#x4EC5;&#x662F;&#x5728;&#x4F7F;&#x7528;&#x5B83;&#x300C;&#x5355;&#x4F8B;&#x300D;&#x7684;&#x6027;&#x8D28;&#x3002;&#x5B9E;&#x9645;&#x4E0A;&#xFF0C;&#x4F60;&#x5728;&#x62EC;&#x53F7;&#x91CC;&#x628A;&#x5B83;&#x6362;&#x6210;&#x4EFB;&#x4F55;&#x7684;&#x5E38;&#x91CF;&#xFF0C;&#x6548;&#x679C;&#x90FD;&#x662F;&#x5B8C;&#x5168;&#x4E00;&#x6837;&#x7684;&#xFF0C;&#x6BD4;&#x5982; <code>true</code>&#x3001;&#x6BD4;&#x5982; <code>false</code>&#x3001;&#x6BD4;&#x5982; <code>1</code>&#x3001;&#x6BD4;&#x5982; <code>0</code>&#x3001;&#x6BD4;&#x5982; <code>&#x4F60;&#x597D;</code>&#xFF0C;&#x90FD;&#x662F;&#x53EF;&#x4EE5;&#x7684;&#x3002;&#x6240;&#x4EE5;&#x5982;&#x679C;&#x4F60;&#x4EC0;&#x4E48;&#x65F6;&#x5019;&#x60F3;&#x300C;&#x968F;&#x4FBF;&#x62FF;&#x4E2A;&#x5BF9;&#x8C61;&#x8FC7;&#x6765;&#x300D;&#xFF0C;&#x6216;&#x8005;&#x300C;&#x968F;&#x4FBF;&#x62FF;&#x4E2A;&#x5355;&#x4F8B;&#x5BF9;&#x8C61;&#x8FC7;&#x6765;&#x300D;&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x4F7F;&#x7528; <code>Unit</code>&#xFF0C;&#x5B83;&#x548C;&#x4F60;&#x81EA;&#x5DF1;&#x521B;&#x5EFA;&#x4E00;&#x4E2A; <code>object</code> &#x7136;&#x540E;&#x53BB;&#x4F7F;&#x7528;&#xFF0C;&#x6548;&#x679C;&#x662F;&#x4E00;&#x6837;&#x7684;&#x3002;</p>
<h2 id="%E6%80%BB%E7%BB%93">&#x603B;&#x7ED3;</h2>
<p>&#x597D;&#xFF0C;&#x8FD9;&#x5C31;&#x662F; Kotlin &#x7684; <code>Unit</code>&#xFF0C;&#x5E0C;&#x671B;&#x8FD9;&#x4E2A;&#x89C6;&#x9891;&#x53EF;&#x4EE5;&#x5E2E;&#x52A9;&#x4F60;&#x66F4;&#x597D;&#x5730;&#x4E86;&#x89E3;&#x548C;&#x4F7F;&#x7528;&#x5B83;&#x3002;&#x4E0B;&#x671F;&#x6211;&#x4F1A;&#x8BB2; Kotlin &#x91CC;&#x53E6;&#x4E00;&#x4E2A;&#x7279;&#x6B8A;&#x7684;&#x7C7B;&#x578B;&#xFF1A;<code>Nothing</code>&#x3002;&#x5173;&#x6CE8;&#x6211;&#xFF0C;&#x4E86;&#x89E3;&#x66F4;&#x591A; Android &#x5F00;&#x53D1;&#x7684;&#x77E5;&#x8BC6;&#x548C;&#x6280;&#x80FD;&#x3002;&#x6211;&#x662F;&#x6254;&#x7269;&#x7EBF;&#xFF0C;&#x6211;&#x4E0D;&#x548C;&#x4F60;&#x6BD4;&#x9AD8;&#x4F4E;&#xFF0C;&#x6211;&#x53EA;&#x52A9;&#x4F60;&#x6210;&#x957F;&#x3002;&#x6211;&#x4EEC;&#x4E0B;&#x671F;&#x89C1;&#xFF01;</p>
<p><img src="http://image.rengwuxian.com/2023/05/08/fe402c850832a.jpg" alt="Unit &#x4E3A;&#x5565;&#x8FD8;&#x80FD;&#x5F53;&#x51FD;&#x6570;&#x53C2;&#x6570;&#xFF1F;&#x9762;&#x5411;&#x5B9E;&#x7528;&#x7684; Kotlin Unit &#x8BE6;&#x89E3;" loading="lazy"></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[【世纪纠结】Jetpack Compose 和自定义 View，学哪个？]]></title><description><![CDATA[「学 Compose 还是学自定义  View？」这个问题从去年初我发第一个 Compose 主题的视频到现在，一直有人问我。这个问题的背后表达了一种担忧：会不会等我学完自定义 View，它却过时了？

今天来跟大家聊聊「学 Compose 还是学自定义 View」的问题。]]></description><link>https://rengwuxian.com/compose-vs-view/</link><guid isPermaLink="false">6268e1de50ce1e03499cc79d</guid><category><![CDATA[Compose]]></category><category><![CDATA[自定义 View]]></category><dc:creator><![CDATA[扔物线]]></dc:creator><pubDate>Mon, 31 Oct 2022 10:51:51 GMT</pubDate><media:content url="https://rengwuxian.com/content/images/2022/10/Compose----View-------1.jpg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h2 id="%E8%A7%86%E9%A2%91%E5%85%88%E8%A1%8C">&#x89C6;&#x9891;&#x5148;&#x884C;</h2>
<iframe width="100%" height="480" src="//player.bilibili.com/player.html?bvid=BV1eD4y147Fy&amp;page=1&amp;high_quality=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>
<blockquote>
<img src="https://rengwuxian.com/content/images/2022/10/Compose----View-------1.jpg" alt="&#x3010;&#x4E16;&#x7EAA;&#x7EA0;&#x7ED3;&#x3011;Jetpack Compose &#x548C;&#x81EA;&#x5B9A;&#x4E49; View&#xFF0C;&#x5B66;&#x54EA;&#x4E2A;&#xFF1F;"><p>&#x4E0B;&#x9762;&#x662F;&#x89C6;&#x9891;&#x5185;&#x5BB9;&#x7684;&#x811A;&#x672C;&#x6574;&#x7406;&#x7A3F;&#x3002;&#x5982;&#x679C;&#x4F60;&#x770B;&#x4E86;&#x89C6;&#x9891;&#xFF0C;&#x90A3;&#x4E0B;&#x9762;&#x7684;&#x6587;&#x7A3F;&#x5C31;&#x4E0D;&#x7528;&#x770B;&#x4E86;&#x3002;</p>
</blockquote>
<h2 id="%E6%AD%A3%E6%96%87">&#x6B63;&#x6587;</h2>
<p>&#x300C;&#x5B66; Compose &#x8FD8;&#x662F;&#x5B66;&#x81EA;&#x5B9A;&#x4E49;  View&#xFF1F;&#x300D;&#x8FD9;&#x4E2A;&#x95EE;&#x9898;&#x4ECE;&#x53BB;&#x5E74;&#x521D;&#x6211;&#x53D1;&#x7B2C;&#x4E00;&#x4E2A; Compose &#x4E3B;&#x9898;&#x7684;&#x89C6;&#x9891;&#x5230;&#x73B0;&#x5728;&#xFF0C;&#x4E00;&#x76F4;&#x6709;&#x4EBA;&#x95EE;&#x6211;&#x3002;&#x8FD9;&#x4E2A;&#x95EE;&#x9898;&#x7684;&#x80CC;&#x540E;&#x8868;&#x8FBE;&#x4E86;&#x4E00;&#x79CD;&#x62C5;&#x5FE7;&#xFF1A;&#x4F1A;&#x4E0D;&#x4F1A;&#x7B49;&#x6211;&#x5B66;&#x5B8C;&#x81EA;&#x5B9A;&#x4E49; View&#xFF0C;&#x5B83;&#x5374;&#x8FC7;&#x65F6;&#x4E86;&#xFF1F;</p>
<p>&#x5927;&#x5BB6;&#x597D;&#xFF0C;&#x6211;&#x662F;&#x6254;&#x7269;&#x7EBF;&#x6731;&#x51EF;&#x3002;</p>
<blockquote>
<p>&#x6700;&#x8FD1;&#x60C5;&#x51B5;&#x6BD4;&#x8F83;&#x7279;&#x6B8A;&#xFF0C;&#x6211;&#x88AB;&#x5C01;&#x5728;&#x5C0F;&#x533A;&#x91CC;&#x4E86;&#x3002;&#x867D;&#x7136;&#x529E;&#x516C;&#x5BA4;&#x5C31;&#x5728;&#x9A6C;&#x8DEF;&#x5BF9;&#x9762;&#xFF0C;&#x4F46;&#x662F;&#x54AB;&#x5C3A;&#x5929;&#x6DAF;&#xFF0C;&#x6211;&#x8FD8;&#x662F;&#x62FF;&#x4E0D;&#x5230;&#x6211;&#x7684;&#x6444;&#x50CF;&#x8BBE;&#x5907;&#x3002;&#x6240;&#x4EE5;&#x4ECA;&#x5929;&#x5C31;&#x7528;&#x624B;&#x673A;&#x6765;&#x5F55;&#x4E00;&#x671F;&#x3002;</p>
</blockquote>
<p>&#x4ECA;&#x5929;&#x6765;&#x8DDF;&#x5927;&#x5BB6;&#x804A;&#x804A;&#x300C;&#x5B66; Compose &#x8FD8;&#x662F;&#x5B66;&#x81EA;&#x5B9A;&#x4E49; View&#x300D;&#x7684;&#x95EE;&#x9898;&#x3002;</p>
<p>&#x9996;&#x5148;&#x6211;&#x4EEC;&#x786E;&#x5B9A;&#x4E00;&#x4E0B;&#x524D;&#x63D0;&#xFF1A;&#x8FD9;&#x662F;&#x4E2A;&#x4E2A;&#x4EBA;&#x804C;&#x4E1A;&#x53D1;&#x5C55;&#x89D2;&#x5EA6;&#x7684;&#x8BA8;&#x8BBA;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x6240;&#x8C13;&#x7684;&#x5229;&#x76CA;&#x5BFC;&#x5411;&#x3002;&#x5173;&#x4E8E; Compose &#x548C;&#x81EA;&#x5B9A;&#x4E49; View &#x54EA;&#x4E2A;&#x66F4;&#x597D;&#x6216;&#x8005;&#x6211;&#x66F4;&#x559C;&#x6B22;&#x54EA;&#x4E2A;&#xFF0C;&#x5728;&#x8FD9;&#x4E2A;&#x89C6;&#x9891;&#x91CC;&#x4E0D;&#x505A;&#x8BA8;&#x8BBA;&#x3002;</p>
<h2 id="%E4%BB%8E%E5%8E%9F%E7%90%86%E7%9C%8B%EF%BC%8Ccompose-%E4%BC%BC%E4%B9%8E%E5%8F%AF%E4%BB%A5%E5%8F%96%E4%BB%A3-view">&#x4ECE;&#x539F;&#x7406;&#x770B;&#xFF0C;Compose &#x4F3C;&#x4E4E;&#x53EF;&#x4EE5;&#x53D6;&#x4EE3; View</h2>
<p>&#x5927;&#x5BB6;&#x66F4;&#x5173;&#x5FC3;&#x7684;&#x662F;&#x3010;**&#x73B0;&#x5728;&#x3011;**&#x5B66;&#x54EA;&#x4E2A;&#xFF0C;&#x5982;&#x679C;&#x8BA9;&#x6211;&#x7B80;&#x5355;&#x76F4;&#x63A5;&#x5730;&#x56DE;&#x7B54;&#xFF1A;&#x81EA;&#x5B9A;&#x4E49; View&#x3002;&#x4F46;&#x8FD9;&#x4E2A;&#x8BDD;&#x9898;&#x4E0D;&#x662F;&#x4E00;&#x53E5;&#x8BDD;&#x8FD9;&#x4E48;&#x7B80;&#x5355;&#xFF0C;&#x5982;&#x679C;&#x4F60;&#x6253;&#x7B97;&#x505A;&#x51FA;&#x6700;&#x9002;&#x5408;&#x81EA;&#x5DF1;&#x7684;&#x51B3;&#x5B9A;&#xFF0C;&#x4F60;&#x6700;&#x597D;&#x628A;&#x6574;&#x4E2A;&#x89C6;&#x9891;&#x770B;&#x5B8C;&#x3002;</p>
<p>&#x9996;&#x5148;&#xFF0C;&#x6211;&#x4EEC;&#x6765;&#x505A;&#x4E00;&#x4E2A;&#x5BF9;&#x672A;&#x6765;&#x7684;&#x5C55;&#x671B;&#xFF1A;Compose &#x4F5C;&#x4E3A; Android &#x5B98;&#x65B9;&#x7ED9;&#x51FA;&#x7684;&#x65B0;&#x7684; UI &#x65B9;&#x6848;&#xFF0C;&#x672A;&#x6765;&#x53EF;&#x4EE5;&#x5B8C;&#x5168;&#x53D6;&#x4EE3; View &#x7684;&#x65B9;&#x6848;&#x5417;&#xFF1F;</p>
<p>Compose &#x662F;&#x57FA;&#x4E8E; View &#x7CFB;&#x7EDF;&#x7684;&#xFF0C;&#x5B83;&#x7684;&#x539F;&#x7406;&#x662F;&#x901A;&#x8FC7;&#x4E00;&#x4E2A;&#x81EA;&#x5B9A;&#x4E49;&#x7684; <code>View</code>&#xFF0C;&#x53BB;&#x5BF9;&#x5B83;&#x7684; <code>onMeasure()</code>&#x3001;<code>onLayout()</code>&#x3001;<code>onDraw()</code>&#x3001;<code>dispatchTouchEvent()</code> &#x7B49;&#x7B49;&#x65B9;&#x6CD5;&#x8FDB;&#x884C;&#x6DF1;&#x5EA6;&#x5B9A;&#x5236;&#xFF0C;&#x6765;&#x5B9E;&#x73B0;&#x300C;&#x5728;&#x540C;&#x4E00;&#x4E2A; <code>View</code> &#x7684;&#x5185;&#x90E8;&#x5B8C;&#x6210;&#x6574;&#x4E2A; UI &#x7EC4;&#x4EF6;&#x6811;&#x300D;&#x8FD9;&#x6837;&#x7684;&#x6548;&#x679C;&#x3002;&#x4E5F;&#x5C31;&#x662F;&#x5728; Compose &#x4EE3;&#x7801;&#x91CC;&#x9762;&#xFF0C;&#x4F60;&#x5199;&#x7684;&#x4E00;&#x4E2A;&#x5305;&#x542B;&#x4E86;&#x591A;&#x5C42;&#x590D;&#x6742;&#x7EC4;&#x4EF6;&#x7684;&#x5B8C;&#x6574;&#x754C;&#x9762;&#xFF0C;&#x5B83;&#x5B9E;&#x9645;&#x4E0A;&#x6709;&#x53EF;&#x80FD;&#x5168;&#x90FD;&#x88AB;&#x7ED8;&#x5236;&#x5728;&#x4E86;&#x540C;&#x4E00;&#x4E2A; <code>View</code> &#x4E0A;&#xFF0C;&#x5E76;&#x4E14;&#x89E6;&#x6478;&#x4E8B;&#x4EF6;&#x4E5F;&#x90FD;&#x662F;&#x7531;&#x540C;&#x4E00;&#x4E2A; <code>View</code> &#x6765;&#x8FDB;&#x884C;&#x5B9E;&#x9645;&#x627F;&#x8F7D;&#x548C;&#x8BC6;&#x522B;&#x7684;&#x3002;</p>
<p>&#x7531;&#x4E8E;&#x8FD9;&#x6837;&#x7684;&#x5E95;&#x5C42;&#x539F;&#x7406;&#xFF0C;Compose &#x662F;&#x4E0D;&#x4F1A;&#x6709;&#x80FD;&#x529B;&#x4E0A;&#x7684;&#x5929;&#x7136;&#x9650;&#x5236;&#x7684;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x4F20;&#x7EDF; View &#x65B9;&#x6848;&#x80FD;&#x505A;&#x7684;&#x4E8B; Compose &#x5168;&#x90FD;&#x53EF;&#x4EE5;&#x505A;&#xFF0C;&#x6BD4;&#x5982;&#x5404;&#x79CD;&#x590D;&#x6742;&#x7684;&#x52A8;&#x753B;&#x3001;&#x624B;&#x52BF;&#x3001;&#x5D4C;&#x5957;&#x7684;&#x591A;&#x5C42;&#x7EA7;&#x5E03;&#x5C40;&#xFF0C;Compose &#x90FD;&#x53EF;&#x4EE5;&#x505A;&#x5230;&#x3002;&#x8FD9;&#x4E2A;&#x6211;&#x5728;&#x8BFB; Compose &#x7684;&#x4EE3;&#x7801;&#x4E4B;&#x524D;&#x8FD8;&#x6709;&#x70B9;&#x6253;&#x9F13;&#xFF0C;&#x5728;&#x8BFB;&#x5B8C;&#x5B83;&#x7684;&#x4EE3;&#x7801;&#x4E4B;&#x540E;&#x6211;&#x662F;&#x975E;&#x5E38;&#x786E;&#x5B9A;&#x7684;&#x3002;</p>
<p>Compose &#x6CA1;&#x6709;&#x505A;&#x51FA;&#x5BF9;&#x7B49;&#x5B9E;&#x73B0;&#x7684;&#x53EA;&#x6709; <code>SurfaceView</code> &#x548C; <code>TextureView</code> &#x8FD9;&#x4E24;&#x4E2A;&#x7C7B;&#xFF0C;&#x5B83;&#x4EEC;&#x662F;&#x7528;&#x4E8E;&#x9AD8;&#x901F;&#x5237;&#x65B0;&#x7684;&#x5185;&#x5BB9;&#x7684;&#xFF0C;&#x6BD4;&#x5982;&#x89C6;&#x9891;&#x64AD;&#x653E;&#x6216;&#x8005;&#x76F8;&#x673A;&#x7684;&#x53D6;&#x666F;&#x5668;&#x754C;&#x9762;&#x3002;&#x4F60;&#x5728;&#x5199; Compose &#x4EE3;&#x7801;&#x7684;&#x65F6;&#x5019;&#x5982;&#x679C;&#x60F3;&#x7528;&#x5230;&#x5B83;&#x4FE9;&#x7684;&#x6548;&#x679C;&#xFF0C;&#x4F60;&#x627E;&#x4E0D;&#x5230;&#x5BF9;&#x5E94;&#x7684; Compose &#x7EC4;&#x4EF6;&#xFF0C;&#x800C;&#x662F;&#x9700;&#x8981;&#x8001;&#x8001;&#x5B9E;&#x5B9E;&#x53BB;&#x7528;&#x539F;&#x751F;&#x7684; <code>SurfaceView</code> &#x6216;&#x8005; <code>TextureView</code>&#x3002;&#x4F46;&#x662F;&#x8FD9;&#x662F;&#x56E0;&#x4E3A;&#x5B83;&#x4FE9;&#x7684;&#x6838;&#x5FC3;&#x5E76;&#x4E0D;&#x662F; View&#xFF0C;&#x800C;&#x662F; Android &#x6240;&#x63D0;&#x4F9B;&#x7684;&#x90A3;&#x4E00;&#x5957;&#x8DDF; <code>Surface</code> &#x7C7B;&#x76F8;&#x5173;&#x7684;&#x663E;&#x793A;&#x7CFB;&#x7EDF;&#xFF0C;&#x6240;&#x4EE5;&#x4E0D;&#x7BA1;&#x4F60;&#x7528; Compose &#x8FD8;&#x662F;&#x4E0D;&#x7528; Compose&#xFF0C;&#x8FD9;&#x4FE9;&#x4E1C;&#x897F;&#x90FD;&#x662F;&#x5355;&#x72EC;&#x5B66;&#x7684;&#x3002;&#x6362;&#x53E5;&#x8BDD;&#x8BF4;&#xFF0C;&#x5C31;&#x7B97;&#x4E0D;&#x7528; Compose&#xFF0C;&#x6709;&#x51E0;&#x4E2A;&#x4EBA;&#x77E5;&#x9053;&#x600E;&#x4E48;&#x7528; <code>SurfaceView</code> &#x7684;&#xFF1F;&#x2014;&#x2014;&#x5C31;&#x662F;&#x8FD9;&#x4E2A;&#x9053;&#x7406;&#x3002;</p>
<p>&#x6240;&#x4EE5;&#xFF0C;&#x4ECE;&#x539F;&#x7406;&#x7684;&#x89D2;&#x5EA6;&#x6765;&#x770B;&#xFF0C;Compose &#x662F;&#x6709;&#x80FD;&#x529B;&#x5B8C;&#x5168;&#x53D6;&#x4EE3; View &#x7684;&#x3002;</p>
<h2 id="%E4%BD%86%E7%9F%AD%E6%9C%9F%E5%86%85%E4%B8%8D%E4%BC%9A%E5%8F%91%E7%94%9F">&#x4F46;&#x77ED;&#x671F;&#x5185;&#x4E0D;&#x4F1A;&#x53D1;&#x751F;</h2>
<p>&#x90A3;&#x4E48;&#x4E0B;&#x4E00;&#x4E2A;&#x95EE;&#x9898;&#x5C31;&#x662F;&#xFF1A;&#x8FD9;&#x4EF6;&#x4E8B;&#x771F;&#x7684;&#x4F1A;&#x53D1;&#x751F;&#x5417;&#xFF1F;Compose &#x7406;&#x8BBA;&#x4E0A;&#x6709;&#x80FD;&#x529B;&#x53D6;&#x4EE3; View &#x662F;&#x5427;&#xFF1F;&#x4F46;&#x5B83;&#x672A;&#x6765;&#x771F;&#x7684;&#x4F1A;&#x53D6;&#x4EE3; View&#xFF0C;&#x6210;&#x4E3A;&#x5199; UI &#x7684;&#x4E3B;&#x6D41;&#x505A;&#x6CD5;&#x5417;&#xFF1F;</p>
<p>&#x9996;&#x5148;&#x6211;&#x89C9;&#x5F97;&#x662F;&#x4F1A;&#x7684;&#x3002;Compose &#x53D1;&#x5C55;&#x5230;&#x73B0;&#x5728;&#xFF0C;&#x867D;&#x7136;&#x8FD8;&#x6CA1;&#x6709;&#x8FBE;&#x5230;&#x5B8C;&#x5584;&#x7684;&#x5F62;&#x6001;&#x2014;&#x2014;&#x6BD4;&#x5982;&#x4F20;&#x7EDF; View &#x7CFB;&#x7EDF;&#x7684;&#x67D0;&#x4E9B;&#x5B98;&#x65B9;&#x7EC4;&#x4EF6;&#x6216;&#x8005;&#x5F00;&#x6E90;&#x7EC4;&#x4EF6;&#xFF0C;Compose &#x91CC;&#x8FD8;&#x6CA1;&#x6709;&#x76F8;&#x5E94;&#x7684;&#x5B9E;&#x73B0;&#xFF0C;&#x4EE5;&#x53CA;&#x6ED1;&#x52A8;&#x7EC4;&#x4EF6;&#x7684;&#x6027;&#x80FD;&#x73B0;&#x5728;&#x548C;&#x4F20;&#x7EDF;&#x7684; <code>RecyclerView</code> &#x8FD8;&#x6709;&#x5DEE;&#x8DDD;&#x2014;&#x2014;&#x4F46;&#x662F;&#x5230;&#x73B0;&#x5728;&#x4E3A;&#x6B62;&#xFF0C;Compose &#x548C; View &#x7CFB;&#x7EDF;&#x7684;&#x8FD9;&#x4E9B;&#x5DEE;&#x8DDD;&#xFF0C;&#x5DF2;&#x7ECF;&#x6CA1;&#x6709;&#x4E0D;&#x53EF;&#x5F25;&#x5408;&#x7684;&#x4E86;&#x3002;&#x53EA;&#x8981;&#x7ED9;&#x5B83;&#x51E0;&#x5E74;&#x65F6;&#x95F4;&#xFF0C;&#x8FD9;&#x4E9B;&#x5DEE;&#x8DDD;&#x90FD;&#x80FD;&#x8865;&#x9F50;&#x3002;Compose &#x8FD9;&#x4E2A;&#x4E1C;&#x897F;&#xFF0C;&#x6700;&#x5927;&#x7684;&#x98CE;&#x9669;&#x5728;&#x4E8E;&#x5B98;&#x65B9;&#x5F00;&#x53D1;&#x4E86;&#x51E0;&#x5E74;&#x4E4B;&#x540E;&#xFF0C;&#x53D1;&#x73B0;&#x5B83;&#x7684;&#x5751;&#x592A;&#x5927;&#xFF0C;&#x600E;&#x4E48;&#x90FD;&#x586B;&#x4E0D;&#x5E73;&#xFF0C;&#x6700;&#x7EC8;&#x5F03;&#x5751;&#xFF0C;&#x5BA3;&#x5E03;&#x780D;&#x6389; Compose &#x9879;&#x76EE;&#xFF0C;&#x8BA9;&#x5927;&#x5BB6;&#x56DE;&#x5230; View &#x53BB;&#x3002;&#x5B98;&#x65B9;&#x5F03;&#x5751;&#xFF0C;&#x8FD9;&#x662F; Compose &#x6700;&#x5927;&#x7684;&#x98CE;&#x9669;&#x3002;&#x4F46;&#x662F;&#x6211;&#x53EF;&#x4EE5;&#x544A;&#x8BC9;&#x5927;&#x5BB6;&#xFF0C;&#x73B0;&#x5728; Compose &#x5DF2;&#x7ECF;&#x8FC8;&#x8FC7;&#x8FD9;&#x4E2A;&#x574E;&#x4E86;&#xFF0C;&#x5B83;&#x73B0;&#x5728;&#x9057;&#x7559;&#x7684;&#x90FD;&#x662F;&#x4E00;&#x4E9B;&#x9760;&#x65F6;&#x95F4;&#x6765;&#x6162;&#x6162;&#x6253;&#x78E8;&#x5C31;&#x53EF;&#x4EE5;&#x89E3;&#x51B3;&#x7684;&#x5C0F;&#x95EE;&#x9898;&#x3002;&#x518D;&#x52A0;&#x4E0A; Android  &#x5B98;&#x65B9;&#x7684;&#x6001;&#x5EA6;&#x4E5F;&#x662F;&#x975E;&#x5E38;&#x575A;&#x51B3;&#xFF0C;&#x8981;&#x8BA9; Compose &#x66FF;&#x4EE3; View &#x6210;&#x4E3A;&#x65B0;&#x7684; UI &#x65B9;&#x6848;&#xFF0C;&#x6240;&#x4EE5; Compose  &#x53D6;&#x4EE3; View&#xFF0C;&#x5DF2;&#x7ECF;&#x662F;&#x5FC5;&#x7136;&#x4F1A;&#x53D1;&#x751F;&#x7684;&#x4E8B;&#x60C5;&#x4E86;&#x3002;</p>
<p>&#x4F46;&#x662F;&#xFF01;&#x6709;&#x4E00;&#x4E2A;&#x95EE;&#x9898;&#x662F;&#xFF0C;&#x8FD9;&#x79CD;&#x66FF;&#x4EE3;&#x77ED;&#x671F;&#x5185;&#x5E76;&#x4E0D;&#x4F1A;&#x5B8C;&#x6210;&#x3002;</p>
<p>&#x4E3A;&#x4EC0;&#x4E48;&#xFF1F;&#x56E0;&#x4E3A;&#x5F53;&#x4E0B;&#x51E0;&#x4E4E;&#x6240;&#x6709;&#x516C;&#x53F8;&#x7684;&#x73B0;&#x6709;&#x4EE3;&#x7801;&#x90FD;&#x662F;&#x57FA;&#x4E8E; View &#x7CFB;&#x7EDF;&#x7684;&#x3002;&#x4F60;&#x5199;&#x65B0;&#x4EE3;&#x7801;&#x5F53;&#x7136;&#x53EF;&#x4EE5;&#x9009;&#x62E9; Compose&#xFF0C;&#x4F46;&#x662F;&#x8001;&#x4EE3;&#x7801;&#x7EF4;&#x62A4;&#x7684;&#x65F6;&#x5019;&#x4E0D;&#x8FD8;&#x662F;&#x8981;&#x548C; View &#x6253;&#x4EA4;&#x9053;&#x5417;&#xFF0C;&#x662F;&#x5427;&#xFF1F;&#x2014;&#x2014;&#x4E0D;&#x8FC7;&#x8FD9;&#x4E2A;&#x5176;&#x5B9E;&#x4E5F;&#x548C;&#x73AF;&#x5883;&#x6709;&#x5173;&#x7CFB;&#xFF0C;&#x6211;&#x4EEC;&#x56FD;&#x5185;&#x6709;&#x4E00;&#x4E2A;&#x60C5;&#x51B5;&#x662F;&#xFF0C;&#x5DE8;&#x578B; App &#x6BD4;&#x8F83;&#x591A;&#x3002;&#x4E00;&#x4E2A;&#x8F6F;&#x4EF6;&#x7684;&#x89C4;&#x6A21;&#x8D8A;&#x5E9E;&#x5927;&#xFF0C;&#x5B83;&#x8F6C;&#x8EAB;&#x5C31;&#x8D8A;&#x6162;&#xFF0C;&#x90A3;&#x4E9B;&#x5DE8;&#x578B; App&#xFF0C;&#x5B83;&#x672C;&#x8EAB;&#x5C31;&#x975E;&#x5E38;&#x590D;&#x6742;&#x4E86;&#xFF0C;&#x4F60;&#x5F80;&#x91CC;&#x9762;&#x52A0;&#x4EFB;&#x4F55;&#x4E00;&#x4E2A;&#x65B0;&#x4F9D;&#x8D56;&#x90FD;&#x4F1A;&#x8FDB;&#x4E00;&#x6B65;&#x589E;&#x52A0;&#x5B83;&#x7684;&#x590D;&#x6742;&#x5EA6;&#x3002;&#x66F4;&#x4E0D;&#x7528;&#x8BF4; Compose  &#x8FD9;&#x79CD; UI &#x5E93;&#xFF0C;&#x5B83;&#x7684;&#x63A5;&#x5165;&#x4E00;&#x5B9A;&#x4E0D;&#x662F;&#x4E00;&#x4E2A;&#x6240;&#x8C13;&#x7684;&#x5927;&#x89C4;&#x6A21;&#x91CD;&#x6784;&#x5C31;&#x66FF;&#x6362;&#x5B8C;&#x6210;&#x4E86;&#xFF0C;&#x6CA1;&#x4EBA;&#x6562;&#x8FD9;&#x4E48;&#x5E72;&#xFF0C;&#x80AF;&#x5B9A;&#x4F1A;&#x662F;&#x4E00;&#x4E2A;&#x6E10;&#x8FDB;&#x5F0F;&#x7684;&#x66FF;&#x6362;&#x8FC7;&#x7A0B;&#xFF0C;&#x4ECA;&#x5929;&#x66FF;&#x6362;&#x8FD9;&#x4E2A;&#x754C;&#x9762;&#xFF0C;&#x660E;&#x5929;&#x66FF;&#x6362;&#x90A3;&#x4E2A;&#x754C;&#x9762;&#x3002;&#x90A3;&#x4E48;&#x5BF9;&#x4E8E;&#x5927;&#x9879;&#x76EE;&#x6765;&#x8BF4;&#xFF0C;&#x5C31;&#x4F1A;&#x5728;&#x76F8;&#x5F53;&#x957F;&#x7684;&#x65F6;&#x95F4;&#x91CC;&#xFF0C;&#x56E2;&#x961F;&#x9700;&#x8981;&#x540C;&#x65F6;&#x9762;&#x5BF9;&#x4E24;&#x79CD; UI &#x65B9;&#x6848;&#x8FDB;&#x884C;&#x5F00;&#x53D1;&#xFF0C;&#x8FD9;&#x6837;&#x4E00;&#x662F;&#x589E;&#x52A0;&#x4E86;&#x51FA;&#x95EE;&#x9898;&#x7684;&#x98CE;&#x9669;&#xFF0C;&#x4E8C;&#x662F;&#x4F1A;&#x957F;&#x65F6;&#x95F4;&#x964D;&#x4F4E;&#x56E2;&#x961F;&#x7684;&#x5F00;&#x53D1;&#x6548;&#x7387;&#x2014;&#x2014;Compose &#x662F;&#x63D0;&#x5347;&#x5F00;&#x53D1;&#x6548;&#x7387;&#x7684;&#x5BF9;&#x5427;&#xFF1F;&#x4F46;&#x662F;&#x5728;&#x5207;&#x6362;&#x8FC7;&#x7A0B;&#x4E2D;&#xFF0C;&#x5B83;&#x662F;&#x964D;&#x6548;&#x7684;&#x3002;&#x6240;&#x4EE5;&#x4F60;&#x4F1A;&#x53D1;&#x73B0;&#xFF0C;&#x5927;&#x516C;&#x53F8;&#x5F88;&#x591A;&#x90FD;&#x5DF2;&#x7ECF;&#x5728;&#x5C1D;&#x8BD5; Compose &#x4E86;&#xFF0C;&#x4F46;&#x6CA1;&#x6709;&#x4E00;&#x4E2A;&#x662F;&#x5DF2;&#x7ECF;&#x8FDB;&#x5165;&#x4E86;&#x5168;&#x9762;&#x66FF;&#x6362;&#x7684;&#x6D41;&#x7A0B;&#x4E86;&#x7684;&#x3002;&#x8FD9;&#x4E2A;&#x56FD;&#x5185;&#x548C;&#x56FD;&#x5916;&#x7684;&#x516C;&#x53F8;&#x90FD;&#x662F;&#x8FD9;&#x6837;&#xFF0C;&#x800C;&#x6211;&#x4EEC;&#x7684;&#x5927;&#x516C;&#x53F8;&#x5F80;&#x5F80; App &#x7684;&#x89C4;&#x6A21;&#x8981;&#x6BD4;&#x56FD;&#x5916;&#x7684;&#x5927;&#x5F88;&#x591A;&#xFF0C;&#x8FD9;&#x4E2A;&#x5927;&#x5BB6;&#x5E94;&#x8BE5;&#x77E5;&#x9053;&#x3002;</p>
<p>&#x6240;&#x4EE5;&#x5728;&#x63A5;&#x4E0B;&#x6765;&#x7684;&#x51E0;&#x5E74;&#xFF0C;&#x6211;&#x4EEC;&#x7684;&#x5927;&#x516C;&#x53F8;&#x80AF;&#x5B9A;&#x4F1A;&#x662F;&#x5728;&#x8C28;&#x614E;&#x7684;&#x63A2;&#x7D22;&#x4E2D;&#xFF0C;&#x6162;&#x6162;&#x5730;&#x5207;&#x6362;&#x5230; Compose&#x3002;</p>
<h2 id="%E5%AD%A6%E5%93%AA%E4%B8%AA%EF%BC%9F">&#x5B66;&#x54EA;&#x4E2A;&#xFF1F;</h2>
<p>&#x90A3;&#x4E48;&#xFF0C;&#x56DE;&#x5230;&#x521A;&#x624D;&#x5F00;&#x5934;&#x7684;&#x95EE;&#x9898;&#xFF1A;&#x5B66;&#x54EA;&#x4E2A;&#xFF1F;</p>
<p>&#x6211;&#x7684;&#x89C2;&#x70B9;&#x662F;&#xFF1A;&#x5BF9;&#x4E8E;&#x5F53;&#x4E0B;&#x8FD9;&#x4E2A;&#x65F6;&#x4EE3;&#xFF0C;&#x4F60;&#x5982;&#x679C;&#x6709;&#x65F6;&#x95F4;&#xFF0C;&#x53CC;&#x4FEE;&#x2014;&#x2014;Compose &#x548C;&#x81EA;&#x5B9A;&#x4E49; View &#x4E24;&#x4E2A;&#x90FD;&#x5B66;&#x2014;&#x2014;&#x662F;&#x5BF9;&#x6211;&#x4EEC;&#x7684;&#x804C;&#x4E1A;&#x53D1;&#x5C55;&#x6700;&#x8D1F;&#x8D23;&#x7684;&#x9009;&#x62E9;&#x3002;&#x800C;&#x5982;&#x679C;&#x4F60;&#x7684;&#x65F6;&#x95F4;&#x4E0D;&#x591F;&#xFF0C;&#x53EA;&#x80FD;&#x5148;&#x5B66;&#x4E00;&#x4E2A;&#xFF0C;&#x90A3;&#x4E48;&#x53BB;&#x5B66;&#x81EA;&#x5B9A;&#x4E49; View&#x3002;&#x867D;&#x7136;&#x6211;&#x73B0;&#x5728;&#x6709;&#x4E00;&#x95E8; Compose &#x7684;&#x8BFE;&#x7A0B;&#xFF0C;&#x4F46;&#x662F;&#x6211;&#x8FD8;&#x662F;&#x5F97;&#x8BF4;&#xFF0C;&#x8FD9;&#x73A9;&#x610F;&#x662F;&#x9762;&#x5411;&#x672A;&#x6765;&#x7684;&#xFF0C;&#x73B0;&#x5728;&#x4ECE;&#x627E;&#x5DE5;&#x4F5C;&#x7684;&#x89D2;&#x5EA6;&#x8003;&#x8651;&#xFF0C;&#x6700;&#x786C;&#x7684;&#x8FD8;&#x662F;&#x81EA;&#x5B9A;&#x4E49; View&#x3002;&#x5176;&#x5B9E;&#x6211;&#x5BF9;&#x6211;&#x8FD9;&#x95E8; Compose &#x8BFE;&#x7A0B;&#x7684;&#x671F;&#x5F85;&#x4E5F;&#x662F;&#x9762;&#x5411;&#x672A;&#x6765;&#x7684;&#xFF0C;&#x867D;&#x7136;&#x5B83;&#x76EE;&#x524D;&#x7684;&#x9500;&#x91CF;&#x5DF2;&#x7ECF;&#x5927;&#x5927;&#x8D85;&#x51FA;&#x6211;&#x7684;&#x8BBE;&#x60F3;&#x3002;</p>
<p>&#x4E0D;&#x8FC7;&#x6709;&#x4E9B;&#x4EBA;&#x5B66; Compose &#x662F;&#x4E3A;&#x4E86;&#x5403;&#x65F6;&#x4EE3;&#x7EA2;&#x5229;&#xFF0C;&#x662F;&#x60F3;&#x5728;&#x65E9;&#x671F;&#x6210;&#x4E3A;&#x4E00;&#x4E2A; Compose &#x9AD8;&#x624B;&#xFF0C;&#x7136;&#x540E;&#x51FA;&#x540D;&#x554A;&#x6216;&#x8005;&#x5728;&#x516C;&#x53F8;&#x505A; Compose &#x65B9;&#x5411;&#x7684;&#x9876;&#x6881;&#x67F1;&#x554A;&#x4EC0;&#x4E48;&#x7684;&#xFF0C;&#x8FD9;&#x4E2A;&#x6211;&#x89C9;&#x5F97;&#x6CA1;&#x95EE;&#x9898;&#xFF0C;&#x90A3;&#x4F60;&#x73B0;&#x5728;&#x5C31;&#x5B66; Compose &#x662F;&#x53EF;&#x4EE5;&#x7684;&#x3002;&#x4F46;&#x8FD9;&#x5C31;&#x662F;&#x53E6;&#x4E00;&#x4E2A;&#x601D;&#x7EF4;&#x65B9;&#x5411;&#x4E86;&#x3002;</p>
<h2 id="%E6%80%BB%E7%BB%93">&#x603B;&#x7ED3;</h2>
<p>&#x597D;&#xFF0C;&#x5173;&#x4E8E;&#x300C;&#x5B66; Compose &#x8FD8;&#x662F;&#x5B66;&#x81EA;&#x5B9A;&#x4E49; View&#x300D;&#xFF0C;&#x4ECA;&#x5929;&#x5C31;&#x804A;&#x5230;&#x8FD9;&#x91CC;&#x3002;&#x5982;&#x679C;&#x4F60;&#x559C;&#x6B22;&#x6211;&#x7684;&#x89C6;&#x9891;&#xFF0C;&#x8FD8;&#x8BF7;&#x70B9;&#x8D5E;&#x5173;&#x6CE8;&#x6536;&#x85CF;&#x8F6C;&#x53D1;&#xFF0C;&#x4F60;&#x4EEC;&#x7684;&#x652F;&#x6301;&#x5BF9;&#x6211;&#x975E;&#x5E38;&#x91CD;&#x8981;&#x3002;&#x6211;&#x662F;&#x6254;&#x7269;&#x7EBF;&#xFF0C;&#x6211;&#x4E0D;&#x548C;&#x4F60;&#x6BD4;&#x9AD8;&#x4F4E;&#xFF0C;&#x6211;&#x53EA;&#x52A9;&#x4F60;&#x6210;&#x957F;&#x3002;</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[【面试黑洞】Android 的键值对存储有没有最优解？]]></title><description><![CDATA[MMKV 天下无敌无脑选？那你这几年可能被骗了。]]></description><link>https://rengwuxian.com/mian-shi-hei-dong-android-de-jian-zhi-dui-cun-chu-you-mei-you-zui-you-jie/</link><guid isPermaLink="false">62b3e32750ce1e03499cc7af</guid><category><![CDATA[Jetpack]]></category><category><![CDATA[Kotlin]]></category><dc:creator><![CDATA[扔物线]]></dc:creator><pubDate>Thu, 23 Jun 2022 04:28:13 GMT</pubDate><media:content url="https://rengwuxian.com/content/images/2022/07/DataStore_--.jpg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h2 id="%E8%A7%86%E9%A2%91%E5%85%88%E8%A1%8C">&#x89C6;&#x9891;&#x5148;&#x884C;</h2>
<iframe width="100%" height="480" src="//player.bilibili.com/player.html?bvid=BV1FU4y197dL&amp;page=1&amp;high_quality=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>
<blockquote>
<img src="https://rengwuxian.com/content/images/2022/07/DataStore_--.jpg" alt="&#x3010;&#x9762;&#x8BD5;&#x9ED1;&#x6D1E;&#x3011;Android &#x7684;&#x952E;&#x503C;&#x5BF9;&#x5B58;&#x50A8;&#x6709;&#x6CA1;&#x6709;&#x6700;&#x4F18;&#x89E3;&#xFF1F;"><p>&#x4E0B;&#x9762;&#x662F;&#x89C6;&#x9891;&#x5185;&#x5BB9;&#x7684;&#x811A;&#x672C;&#x6574;&#x7406;&#x7A3F;&#x3002;&#x5982;&#x679C;&#x4F60;&#x770B;&#x4E86;&#x89C6;&#x9891;&#xFF0C;&#x90A3;&#x4E0B;&#x9762;&#x7684;&#x6587;&#x7A3F;&#x5C31;&#x4E0D;&#x7528;&#x770B;&#x4E86;&#x3002;</p>
</blockquote>
<h2 id="%E6%AD%A3%E6%96%87">&#x6B63;&#x6587;</h2>
<p>&#x8FD9;&#x662F;&#x6211;&#x5728;&#x7F51;&#x4E0A;&#x627E;&#x5230;&#x7684;&#x4E00;&#x4EFD; Android &#x952E;&#x503C;&#x5BF9;&#x5B58;&#x50A8;&#x65B9;&#x6848;&#x7684;&#x6027;&#x80FD;&#x6D4B;&#x8BD5;&#x5BF9;&#x6BD4;&#xFF08;&#x6570;&#x8D8A;&#x5C0F;&#x8D8A;&#x597D;&#xFF09;&#xFF1A;</p>
<p><img src="http://image.rengwuxian.com/2022/06/23/5ec9b5c5971a7.png" alt="&#x3010;&#x9762;&#x8BD5;&#x9ED1;&#x6D1E;&#x3011;Android &#x7684;&#x952E;&#x503C;&#x5BF9;&#x5B58;&#x50A8;&#x6709;&#x6CA1;&#x6709;&#x6700;&#x4F18;&#x89E3;&#xFF1F;" loading="lazy"></p>
<p>&#x53EF;&#x4EE5;&#x770B;&#x51FA;&#xFF0C;DataStore &#x7684;&#x6027;&#x80FD;&#x6BD4; MMKV &#x5DEE;&#x4E86;&#x4E00;&#x5927;&#x622A;&#x3002;MMKV &#x662F;&#x817E;&#x8BAF;&#x5728; 2018 &#x5E74;&#x63A8;&#x51FA;&#x7684;&#xFF0C;&#x800C; DataStore &#x662F; Android &#x5B98;&#x65B9;&#x5728; 2020 &#x5E74;&#x63A8;&#x51FA;&#x7684;&#xFF0C;&#x5E76;&#x4E14;&#x5B83;&#x7684;&#x6B63;&#x5F0F;&#x7248;&#x5728; 2021 &#x5E74; 8 &#x6708;&#x624D;&#x53D1;&#x5E03;&#x3002;&#x4E00;&#x4E2A;&#x5B98;&#x65B9;&#x53D1;&#x5E03;&#x7684;&#x3001;&#x66F4;&#xFF08;g&#xE8;ng&#xFF09;&#x65B0;&#x7684;&#x5E93;&#xFF0C;&#x6027;&#x80FD;&#x7ADF;&#x7136;&#x6BD4;&#x4E0D;&#x8FC7;&#x6BD4;&#x5B83;&#x65E9;&#x4E24;&#x5E74;&#x53D1;&#x5E03;&#x7684;&#x3001;&#x7B2C;&#x4E09;&#x65B9;&#x7684;&#x5E93;&#x3002;&#x800C;&#x4E14;&#x6211;&#x4EEC;&#x80FD;&#x770B;&#x5230;&#xFF0C;&#x66F4;&#x79BB;&#x8C31;&#x7684;&#x662F;&#xFF0C;&#x5B83;&#x751A;&#x81F3;&#x8FD8;&#x6BD4;&#x4E0D;&#x8FC7; SharedPreferences &#x3002;Android &#x5B98;&#x65B9;&#x5F53;&#x521D;&#x4E4B;&#x6240;&#x4EE5;&#x63A8;&#x51FA; DataStore&#xFF0C;&#x5C31;&#x662F;&#x8981;&#x66FF;&#x4EE3;&#x6389; SharedPreferences&#xFF0C;&#x5E76;&#x4E14;&#x4E3B;&#x8981;&#x539F;&#x56E0;&#x4E4B;&#x4E00;&#x5C31;&#x662F; SharedPreferences &#x6709;&#x6027;&#x80FD;&#x95EE;&#x9898;&#xFF0C;&#x53EF;&#x662F;&#x6D4B;&#x8BD5;&#x7ED3;&#x679C;&#x5374;&#x662F;&#x5B83;&#x7684;&#x6027;&#x80FD;&#x4E0D;&#x5982; SharedPreferences&#x3002;</p>
<p>&#x6240;&#x4EE5;&#xFF0C;&#x8FD9;&#x5230;&#x5E95;&#x662F;&#x4E3A;&#x4EC0;&#x4E48;&#xFF1F;</p>
<p>&#x554A;&#xFF0C;&#x6211;&#x77E5;&#x9053;&#x4E86;&#x2014;&#x2014;&#x56E0;&#x4E3A; Google &#x662F;&#x50BB;&#x903C;&#xFF01;</p>
<h2 id="sharedpreferences%EF%BC%9A%E4%B8%8D%E7%9F%A5%E4%B8%8D%E8%A7%89%E8%A2%AB%E5%AB%8C%E5%BC%83">SharedPreferences&#xFF1A;&#x4E0D;&#x77E5;&#x4E0D;&#x89C9;&#x88AB;&#x5ACC;&#x5F03;</h2>
<p>&#x5927;&#x5BB6;&#x597D;&#xFF0C;&#x6211;&#x662F;&#x6254;&#x7269;&#x7EBF;&#x6731;&#x51EF;&#x3002;</p>
<p>&#x952E;&#x503C;&#x5BF9;&#x7684;&#x5B58;&#x50A8;&#x5728;&#x79FB;&#x52A8;&#x5F00;&#x53D1;&#x91CC;&#x975E;&#x5E38;&#x5E38;&#x89C1;&#x3002;&#x6BD4;&#x5982;&#x6DF1;&#x8272;&#x6A21;&#x5F0F;&#x7684;&#x5F00;&#x5173;&#x3001;&#x8F6F;&#x4EF6;&#x8BED;&#x8A00;&#x3001;&#x5B57;&#x4F53;&#x5927;&#x5C0F;&#xFF0C;&#x8FD9;&#x4E9B;&#x7528;&#x6237;&#x504F;&#x597D;&#x8BBE;&#x7F6E;&#xFF0C;&#x5F88;&#x9002;&#x5408;&#x7528;&#x952E;&#x503C;&#x5BF9;&#x6765;&#x5B58;&#x3002;&#x800C;&#x952E;&#x503C;&#x5BF9;&#x7684;&#x5B58;&#x50A8;&#x65B9;&#x6848;&#xFF0C;&#x6700;&#x4F20;&#x7EDF;&#x4E5F;&#x6700;&#x5E7F;&#x4E3A;&#x4EBA;&#x77E5;&#x7684;&#x5C31;&#x662F; Android &#x81EA;&#x5E26;&#x7684; <code>SharedPreferences</code>&#x3002;&#x5B83;&#x91CC;&#x9762;&#x7684; -Preferences&#xFF0C;&#x5C31;&#x662F;&#x504F;&#x597D;&#x8BBE;&#x7F6E;&#x7684;&#x610F;&#x601D;&#xFF0C;&#x4ECE;&#x540D;&#x5B57;&#x4E5F;&#x80FD;&#x770B;&#x51FA;&#x5B83;&#x6700;&#x521D;&#x7684;&#x5B9A;&#x4F4D;&#x3002;</p>
<p>SharedPreferences &#x4F7F;&#x7528;&#x8D77;&#x6765;&#x5F88;&#x7B80;&#x5355;&#xFF0C;&#x4E5F;&#x6CA1;&#x4EC0;&#x4E48;&#x95EE;&#x9898;&#xFF0C;&#x5927;&#x5BB6;&#x5C31;&#x8FD9;&#x4E48;&#x7528;&#x4E86;&#x5F88;&#x591A;&#x5E74;&#x3002;&#x2014;&#x2014;&#x4F46;&#xFF01;&#x6E10;&#x6E10;&#x5730;&#xFF0C;&#x6709;&#x4EBA;&#x53D1;&#x73B0;&#x5B83;&#x6709;&#x4E00;&#x4E2A;&#x95EE;&#x9898;&#xFF1A;&#x5361;&#x987F;&#xFF0C;&#x751A;&#x81F3;&#x6709;&#x65F6;&#x5019;&#x4F1A;&#x51FA;&#x73B0; ANR&#x3002;</p>
<h2 id="mmkv%EF%BC%9A%E5%A5%BD%E5%BF%AB%EF%BC%81">MMKV&#xFF1A;&#x597D;&#x5FEB;&#xFF01;</h2>
<p>&#x600E;&#x4E48;&#x529E;&#xFF1F;&#x6362;&#xFF01;2018 &#x5E74; 9 &#x6708;&#xFF0C;&#x817E;&#x8BAF;&#x5F00;&#x6E90;&#x4E86;&#x4E00;&#x4E2A;&#x53EB;&#x505A; MMKV &#x7684;&#x9879;&#x76EE;&#x3002;&#x5B83;&#x548C; SharedPreferences &#x4E00;&#x6837;&#xFF0C;&#x90FD;&#x662F;&#x505A;&#x952E;&#x503C;&#x5BF9;&#x5B58;&#x50A8;&#x7684;&#xFF0C;&#x53EF;&#x662F;&#x5B83;&#x7684;&#x6027;&#x80FD;&#x6BD4; SharedPreferences &#x5F3A;&#x5F88;&#x591A;&#x3002;&#x771F;&#x7684;&#x662F;&#x5F3A;&#xFF0C;&#x5F88;&#xFF0C;&#x591A;&#x3002;&#x5728; MMKV &#x63A8;&#x51FA;&#x4E4B;&#x540E;&#xFF0C;&#x5F88;&#x591A;&#x56E2;&#x961F;&#x5C31;&#x628A;&#x952E;&#x503C;&#x5BF9;&#x5B58;&#x50A8;&#x65B9;&#x6848;&#x4ECE; SharedPreferences &#x6362;&#x5230;&#x4E86; MMKV&#x3002;</p>
<h2 id="datastore%EF%BC%9A%E5%AE%98%E6%96%B9%E9%80%A0%E5%9E%83%E5%9C%BE%EF%BC%9F">DataStore&#xFF1A;&#x5B98;&#x65B9;&#x9020;&#x5783;&#x573E;&#xFF1F;</h2>
<p>&#x518D;&#x7136;&#x540E;&#xFF0C;&#x5C31;&#x662F;&#x53C8;&#x8FC7;&#x4E86;&#x4E24;&#x5E74;&#xFF0C;Google &#x81EA;&#x5DF1;&#x4E5F;&#x8868;&#x793A;&#x53D7;&#x4E0D;&#x4E86; SharedPreferences &#x4E86;&#xFF0C;Android &#x56E2;&#x961F;&#x516C;&#x5E03;&#x4E86; Jetpack &#x7684;&#x65B0;&#x5E93;&#xFF1A;DataStore&#xFF0C;&#x76EE;&#x6807;&#x76F4;&#x6307; SharedPreferences&#xFF0C;&#x58F0;&#x79F0;&#x5B83;&#x5C31;&#x662F; Android &#x5B98;&#x65B9;&#x7ED9;&#x51FA;&#x7684; SharedPreferences &#x7684;&#x66FF;&#x4EE3;&#x54C1;&#x3002;<br>
<img src="http://image.rengwuxian.com/2022/06/23/b3305bd61e53f.png" alt="&#x3010;&#x9762;&#x8BD5;&#x9ED1;&#x6D1E;&#x3011;Android &#x7684;&#x952E;&#x503C;&#x5BF9;&#x5B58;&#x50A8;&#x6709;&#x6CA1;&#x6709;&#x6700;&#x4F18;&#x89E3;&#xFF1F;" loading="lazy"></p>
<p>&#x66FF;&#x4EE3;&#x7684;&#x7406;&#x7531;&#xFF0C;Android &#x56E2;&#x961F;&#x5217;&#x4E86;&#x597D;&#x51E0;&#x6761;&#xFF0C;&#x4F46;&#x4E0D;&#x51FA;&#x5927;&#x5BB6;&#x610F;&#x6599;&#x5730;&#xFF0C;&#x300C;&#x6027;&#x80FD;&#x300D;&#x662F;&#x5176;&#x4E2D;&#x4E4B;&#x4E00;&#xFF1A;<br>
<img src="http://image.rengwuxian.com/2022/06/23/4a0790f65b870.png" alt="&#x3010;&#x9762;&#x8BD5;&#x9ED1;&#x6D1E;&#x3011;Android &#x7684;&#x952E;&#x503C;&#x5BF9;&#x5B58;&#x50A8;&#x6709;&#x6CA1;&#x6709;&#x6700;&#x4F18;&#x89E3;&#xFF1F;" loading="lazy"></p>
<p>&#x4E5F;&#x5C31;&#x662F;&#x8BF4;&#xFF0C;Android &#x56E2;&#x961F;&#x76F4;&#x63A5;&#x629B;&#x5F03;&#x4E86; SharedPreferences&#xFF0C;&#x6362;&#x4E86;&#x4E2A;&#x65B0;&#x4E1C;&#x897F;&#x6765;&#x63D0;&#x4F9B;&#x66F4;&#x4F18;&#x7684;&#x6027;&#x80FD;&#x3002;</p>
<p>&#x4F46;&#x662F;&#xFF0C;&#x95EE;&#x9898;&#x968F;&#x4E4B;&#x5C31;&#x51FA;&#x73B0;&#x4E86;&#xFF1A;&#x5927;&#x5BB6;&#x4E00;&#x6D4B;&#x8BD5;&#xFF0C;&#x53D1;&#x73B0;&#x8FD9; DataStore &#x7684;&#x6027;&#x80FD;&#x5E76;&#x4E0D;&#x5F3A;&#x554A;&#xFF1F;&#x8DDF; MMKV &#x6BD4;&#x8D77;&#x6765;&#x5DEE;&#x8FDC;&#x4E86;&#x554A;&#xFF1F;&#x8981;&#x77E5;&#x9053;&#xFF0C;MMKV &#x7684;&#x53D1;&#x5E03;&#x662F;&#x6BD4; DataStore &#x65E9;&#x4E24;&#x5E74;&#x7684;&#x3002;DataStore &#x6BD4;&#x4EBA;&#x5BB6;&#x665A;&#x4E24;&#x5E74;&#x53D1;&#x5E03;&#xFF0C;&#x53EF;&#x662F;&#x6027;&#x80FD;&#x5374;&#x6BD4;&#x4EBA;&#x5BB6;&#x5DEE;&#x4E00;&#x5927;&#x622A;&#xFF1F;&#x751A;&#x81F3;&#xFF0C;&#x4ECE;&#x6D4B;&#x8BD5;&#x6570;&#x636E;&#x6765;&#x770B;&#xFF0C;&#x5B83;&#x8FDE;&#x8981;&#x88AB;&#x5B83;&#x66FF;&#x4EE3;&#x6389;&#x7684; SharedPreferences &#x90FD;&#x6BD4;&#x4E0D;&#x8FC7;&#x3002;&#x8FD9;&#x4E48;&#x5F31;&#xFF1F;&#x90A3;&#x5B83;&#x641E;&#x4E2A;&#x6BDB;&#x554A;&#xFF01;</p>
<p>Android &#x56E2;&#x961F;&#x542D;&#x54E7;&#x542D;&#x54E7;&#x641E;&#x4E2A;&#x65B0;&#x4E1C;&#x897F;&#x51FA;&#x6765;&#xFF0C;&#x7ADF;&#x7136;&#x8FD8;&#x6CA1;&#x6709;&#x5E02;&#x573A;&#x4E0A;&#x4E24;&#x5E74;&#x524D;&#x5C31;&#x51FA;&#x73B0;&#x7684;&#x4E1C;&#x897F;&#x5F3A;&#xFF1F;&#x8FD9;&#x662F;&#x4E3A;&#x5565;&#xFF1F;</p>
<p>&#x9996;&#x5148;&#xFF0C;&#x80AF;&#x5B9A;&#x5F97;&#x6392;&#x9664;&#x300C;DataStore &#x662F;&#x5783;&#x573E;&#x300D;&#x8FD9;&#x4E2A;&#x53EF;&#x80FD;&#x6027;&#x3002;&#x867D;&#x7136;&#x8FD9;&#x731B;&#x4E00;&#x770B;&#x3001;&#x7C97;&#x4E00;&#x60F3;&#xFF0C;&#x660E;&#x663E;&#x5C31;&#x662F; DataStore &#x5783;&#x573E;&#x3001;Google &#x50BB;&#x903C;&#xFF0C;&#x4F46;&#x662F;&#x4F60;&#x4ED4;&#x7EC6;&#x60F3;&#x60F3;&#xFF0C;&#x8FD9;&#x53EF;&#x80FD;&#x5417;&#xFF1F;</p>
<p>&#x90A3;&#x5982;&#x679C;&#x4E0D;&#x662F;&#x7684;&#x8BDD;&#xFF0C;&#x53C8;&#x662F;&#x56E0;&#x4E3A;&#x4EC0;&#x4E48;&#xFF1F;&#x2014;&#x2014;&#x56E0;&#x4E3A;&#x4F60;&#x88AB;&#x9A97;&#x4E86;&#x3002;</p>
<h2 id="mmkv-%E7%9A%84%E4%B8%80%E4%BA%8C%E4%B8%89%E5%9B%9B">MMKV &#x7684;&#x4E00;&#x4E8C;&#x4E09;&#x56DB;</h2>
<p>&#x88AB;&#x8C01;&#x9A97;&#x4E86;&#xFF1F;&#x4E0D;&#x662F;&#x88AB; MMKV &#x9A97;&#x4E86;&#xFF0C;&#x4E5F;&#x4E0D;&#x662F;&#x5177;&#x4F53;&#x7684;&#x67D0;&#x4E2A;&#x4EBA;&#x3002;&#x4E8B;&#x60C5;&#x5176;&#x5B9E;&#x662F;&#x8FD9;&#x6837;&#x7684;&#xFF1A;</p>
<p>&#x5927;&#x5BB6;&#x77E5;&#x9053; MMKV &#x5F53;&#x521D;&#x4E3A;&#x4EC0;&#x4E48;&#x4F1A;&#x88AB;&#x521B;&#x9020;&#x51FA;&#x6765;&#x5417;&#xFF1F;&#x5176;&#x5B9E;&#x4E0D;&#x662F;&#x4E3A;&#x4E86;&#x53D6;&#x4EE3; SharedPreferences&#x3002;</p>
<p>&#x6700;&#x65E9;&#x662F;&#x56E0;&#x4E3A;&#x5FAE;&#x4FE1;&#x7684;&#x4E00;&#x4E2A;&#x9700;&#x6C42;&#xFF08;&#x6765;&#x6E90;&#xFF1A;<a href="https://mp.weixin.qq.com/s/4MHgs4qpLt7krpmIp9rgRg?ref=rengwuxian.com">MMKV &#x7EC4;&#x4EF6;&#x73B0;&#x5728;&#x5F00;&#x6E90;&#x4E86;</a>&#xFF09;&#xFF1A;</p>
<p>&#x5FAE;&#x4FE1;&#x4F5C;&#x4E3A;&#x4E00;&#x4E2A;&#x5168;&#x6C11;&#x7684;&#x804A;&#x5929; App&#xFF0C;&#x5BF9;&#x8BDD;&#x5185;&#x5BB9;&#x4E2D;&#x7684;&#x7279;&#x6B8A;&#x5B57;&#x7B26;&#x6240;&#x5BFC;&#x81F4;&#x7684;&#x7A0B;&#x5E8F;&#x5D29;&#x6E83;&#x662F;&#x4E00;&#x7C7B;&#x5F88;&#x5E38;&#x89C1;&#x3001;&#x4E5F;&#x5F88;&#x9700;&#x8981;&#x5FEB;&#x901F;&#x89E3;&#x51B3;&#x7684;&#x95EE;&#x9898;&#xFF1B;&#x800C;&#x54EA;&#x4E9B;&#x5B57;&#x7B26;&#x4F1A;&#x5BFC;&#x81F4;&#x7A0B;&#x5E8F;&#x5D29;&#x6E83;&#xFF0C;&#x662F;&#x65E0;&#x6CD5;&#x9884;&#x77E5;&#x7684;&#xFF0C;&#x53EA;&#x80FD;&#x7B49;&#x7528;&#x6237;&#x624B;&#x673A;&#x4E0A;&#x7684;&#x5FAE;&#x4FE1;&#x5D29;&#x6E83;&#x4E4B;&#x540E;&#xFF0C;&#x518D;&#x5229;&#x7528;&#x7C7B;&#x4F3C;&#x65F6;&#x5149;&#x5012;&#x6D41;&#x7684;&#x56DE;&#x6EAF;&#x884C;&#x4E3A;&#xFF0C;&#x770B;&#x770B;&#x4E0A;&#x6B21;&#x8F6F;&#x4EF6;&#x5D29;&#x6E83;&#x7684;&#x6700;&#x540E;&#x4E00;&#x77AC;&#x95F4;&#xFF0C;&#x7528;&#x6237;&#x6536;&#x5230;&#x6216;&#x8005;&#x53D1;&#x51FA;&#x4E86;&#x4EC0;&#x4E48;&#x6D88;&#x606F;&#xFF0C;&#x518D;&#x7528;&#x8FD9;&#x4E9B;&#x6D88;&#x606F;&#x4E2D;&#x7684;&#x6587;&#x5B57;&#x53BB;&#x5C1D;&#x8BD5;&#x590D;&#x73B0;&#x53D1;&#x751F;&#x8FC7;&#x7684;&#x5D29;&#x6E83;&#xFF0C;&#x6700;&#x7EC8;&#x8BD5;&#x51FA;&#x6709;&#x95EE;&#x9898;&#x7684;&#x5B57;&#x7B26;&#xFF0C;&#x7136;&#x540E;&#x9488;&#x5BF9;&#x6027;&#x89E3;&#x51B3;&#x3002;<br>
<img src="http://image.rengwuxian.com/2022/06/23/ca457b5b3c7e7.gif" alt="&#x3010;&#x9762;&#x8BD5;&#x9ED1;&#x6D1E;&#x3011;Android &#x7684;&#x952E;&#x503C;&#x5BF9;&#x5B58;&#x50A8;&#x6709;&#x6CA1;&#x6709;&#x6700;&#x4F18;&#x89E3;&#xFF1F;" loading="lazy"><br>
&#x90A3;&#x4E48;&#x8FD9;&#x4E2A;&#x300C;&#x65F6;&#x5149;&#x5012;&#x6D41;&#x300D;&#x5E94;&#x8BE5;&#x600E;&#x4E48;&#x505A;&#xFF0C;&#x5C31;&#x6210;&#x4E86;&#x95EE;&#x9898;&#x7684;&#x5173;&#x952E;&#x3002;&#x6211;&#x4EEC;&#x8981;&#x77E5;&#x9053;&#xFF0C;&#x7A0B;&#x5E8F;&#x4E2D;&#x7684;&#x6240;&#x6709;&#x53D8;&#x91CF;&#x90FD;&#x662F;&#x5B58;&#x6D3B;&#x5728;&#x5185;&#x5B58;&#x91CC;&#x7684;&#xFF0C;&#x4E00;&#x65E6;&#x7A0B;&#x5E8F;&#x5D29;&#x6E83;&#xFF0C;&#x6240;&#x6709;&#x53D8;&#x91CF;&#x5168;&#x90FD;&#x7070;&#x98DE;&#x70DF;&#x706D;&#x3002;<br>
<img src="http://image.rengwuxian.com/2022/06/23/6495304b2f3e4.gif" alt="&#x3010;&#x9762;&#x8BD5;&#x9ED1;&#x6D1E;&#x3011;Android &#x7684;&#x952E;&#x503C;&#x5BF9;&#x5B58;&#x50A8;&#x6709;&#x6CA1;&#x6709;&#x6700;&#x4F18;&#x89E3;&#xFF1F;" loading="lazy"><br>
&#x6240;&#x4EE5;&#x8981;&#x60F3;&#x5B9E;&#x73B0;&#x300C;&#x65F6;&#x5149;&#x5012;&#x6D41;&#x300D;&#xFF0C;&#x5C31;&#x9700;&#x8981;&#x628A;&#x60F3;&#x56DE;&#x6EAF;&#x7684;&#x65F6;&#x5149;&#x9884;&#x5148;&#x8BB0;&#x5F55;&#x4E0B;&#x6765;&#x3002;&#x8BF4;&#x4EBA;&#x8BDD;&#x5C31;&#x662F;&#xFF0C;&#x6211;&#x4EEC;&#x9700;&#x8981;&#x628A;&#x754C;&#x9762;&#x91CC;&#x663E;&#x793A;&#x7684;&#x6587;&#x5B57;&#x5199;&#x5230;&#x624B;&#x673A;&#x78C1;&#x76D8;&#x91CC;&#xFF0C;&#x624D;&#x80FD;&#x5728;&#x7A0B;&#x5E8F;&#x5D29;&#x6E83;&#x3001;&#x91CD;&#x65B0;&#x542F;&#x52A8;&#x4E4B;&#x540E;&#xFF0C;&#x901A;&#x8FC7;&#x8BFB;&#x53D6;&#x6587;&#x4EF6;&#x7684;&#x65B9;&#x5F0F;&#x6765;&#x67E5;&#x770B;&#x3002;<br>
<img src="http://image.rengwuxian.com/2022/06/23/80d2801914457.gif" alt="&#x3010;&#x9762;&#x8BD5;&#x9ED1;&#x6D1E;&#x3011;Android &#x7684;&#x952E;&#x503C;&#x5BF9;&#x5B58;&#x50A8;&#x6709;&#x6CA1;&#x6709;&#x6700;&#x4F18;&#x89E3;&#xFF1F;" loading="lazy"><br>
&#x66F4;&#x9EBB;&#x70E6;&#x7684;&#x662F;&#xFF0C;&#x8FD9;&#x79CD;&#x8BB0;&#x5F55;&#x7684;&#x76EE;&#x6807;&#x662F;&#x7528;&#x6765;&#x56DE;&#x6EAF;&#x67E5;&#x627E;&#x300C;&#x5BFC;&#x81F4;&#x7A0B;&#x5E8F;&#x5D29;&#x6E83;&#x7684;&#x90A3;&#x6BB5;&#x6587;&#x5B57;&#x300D;&#xFF0C;&#x800C;&#x540C;&#x65F6;&#xFF0C;&#x6B63;&#x662F;&#x56E0;&#x4E3A;&#x6CA1;&#x6709;&#x4EBA;&#x77E5;&#x9053;&#x54EA;&#x6BB5;&#x6587;&#x5B57;&#x4F1A;&#x5BFC;&#x81F4;&#x7A0B;&#x5E8F;&#x5D29;&#x6E83;&#x624D;&#x53BB;&#x505A;&#x7684;&#x8BB0;&#x5F55;&#xFF0C;&#x8FD9;&#x5C31;&#x8981;&#x6C42;&#x6BCF;&#x4E00;&#x6BB5;&#x6587;&#x5B57;&#x90FD;&#x9700;&#x8981;&#x5148;&#x5199;&#x5165;&#x78C1;&#x76D8;&#x3001;&#x7136;&#x540E;&#x518D;&#x53BB;&#x663E;&#x793A;&#xFF0C;&#x8FD9;&#x6837;&#x624D;&#x80FD;&#x4FDD;&#x8BC1;&#x7A0B;&#x5E8F;&#x5D29;&#x6E83;&#x7684;&#x65F6;&#x5019;&#x90A3;&#x6BB5;&#x5BFC;&#x81F4;&#x5D29;&#x6E83;&#x7684;&#x6587;&#x5B57;&#x4E00;&#x5B9A;&#x5DF2;&#x7ECF;&#x88AB;&#x8BB0;&#x5F55;&#x5230;&#x4E86;&#x78C1;&#x76D8;&#x3002;<br>
<img src="http://image.rengwuxian.com/2022/06/23/7e041fa8fe752.gif" alt="&#x3010;&#x9762;&#x8BD5;&#x9ED1;&#x6D1E;&#x3011;Android &#x7684;&#x952E;&#x503C;&#x5BF9;&#x5B58;&#x50A8;&#x6709;&#x6CA1;&#x6709;&#x6700;&#x4F18;&#x89E3;&#xFF1F;" loading="lazy"><br>
&#x5BF9;&#x5427;&#xFF1F;</p>
<p>&#x8FD9;&#x5C31;&#x6709;&#x70B9;&#x96BE;&#x4E86;&#x3002;</p>
<p>&#x6211;&#x4EEC;&#x6765;&#x60F3;&#x8C61;&#x4E00;&#x4E0B;&#x5B9E;&#x9645;&#x573A;&#x666F;&#xFF1A;</p>
<ul>
<li>&#x5982;&#x679C;&#x7528;&#x6237;&#x7684;&#x5FAE;&#x4FE1;&#x73B0;&#x5728;&#x5904;&#x4E8E;&#x4E00;&#x4E2A;&#x5BF9;&#x8BDD;&#x754C;&#x9762;&#x4E2D;&#xFF0C;&#x8FD9;&#x65F6;&#x5019;&#x6765;&#x4E86;&#x4E00;&#x6761;&#x65B0;&#x7684;&#x6D88;&#x606F;&#xFF0C;&#x8FD9;&#x6761;&#x6D88;&#x606F;&#x91CC;&#x53EF;&#x80FD;&#x4F1A;&#x5305;&#x542B;&#x5FAE;&#x4FE1;&#x5904;&#x7406;&#x4E0D;&#x4E86;&#x7684;&#x5B57;&#x7B26;&#xFF0C;&#x5BFC;&#x81F4;&#x5FAE;&#x4FE1;&#x7684;&#x5D29;&#x6E83;&#x3002;<br>
<img src="http://image.rengwuxian.com/2022/06/23/87f7705178834.gif" alt="&#x3010;&#x9762;&#x8BD5;&#x9ED1;&#x6D1E;&#x3011;Android &#x7684;&#x952E;&#x503C;&#x5BF9;&#x5B58;&#x50A8;&#x6709;&#x6CA1;&#x6709;&#x6700;&#x4F18;&#x89E3;&#xFF1F;" loading="lazy"></li>
<li>&#x800C;&#x5FAE;&#x4FE1;&#x4E3A;&#x4E86;&#x53CA;&#x65F6;&#x5730;&#x627E;&#x51FA;&#x5BFC;&#x81F4;&#x5D29;&#x6E83;&#x7684;&#x5B57;&#x7B26;&#x6216;&#x8005;&#x5B57;&#x7B26;&#x4E32;&#xFF0C;&#x6240;&#x4EE5;&#x7ED9;&#x7A0B;&#x5E8F;&#x589E;&#x52A0;&#x4E86;&#x903B;&#x8F91;&#xFF1A;&#x6240;&#x6709;&#x7684;&#x5BF9;&#x8BDD;&#x5185;&#x5BB9;&#x5728;&#x663E;&#x793A;&#x4E4B;&#x524D;&#xFF0C;&#x5148;&#x4FDD;&#x5B58;&#x5230;&#x78C1;&#x76D8;&#x518D;&#x663E;&#x793A;&#xFF1A;</li>
</ul>
<pre><code class="language-kotlin">val bubble: WxTextView = ...
recordTextToDisk(text) // &#x663E;&#x793A;&#x4E4B;&#x524D;&#xFF0C;&#x5148;&#x4FDD;&#x5B58;&#x5230;&#x78C1;&#x76D8;
bubble.setText(text)
</code></pre>
<ul>
<li>&#x90A3;&#x4E48;&#x4F60;&#x60F3;&#x4E00;&#x4E0B;&#xFF0C;&#x8FD9;&#x4E2A;&#x300C;&#x4FDD;&#x5B58;&#x5230;&#x78C1;&#x76D8;&#x300D;&#x7684;&#x884C;&#x4E3A;&#xFF0C;&#x6211;&#x5E94;&#x8BE5;&#x505A;&#x6210;&#x540C;&#x6B65;&#x7684;&#x8FD8;&#x662F;&#x5F02;&#x6B65;&#x7684;&#xFF1F;<br>
<img src="http://image.rengwuxian.com/2022/06/23/c2ce8a82824f0.gif" alt="&#x3010;&#x9762;&#x8BD5;&#x9ED1;&#x6D1E;&#x3011;Android &#x7684;&#x952E;&#x503C;&#x5BF9;&#x5B58;&#x50A8;&#x6709;&#x6CA1;&#x6709;&#x6700;&#x4F18;&#x89E3;&#xFF1F;" loading="lazy">
<ul>
<li>&#x4E3A;&#x4E86;&#x4E0D;&#x5361;&#x4E3B;&#x7EBF;&#x7A0B;&#xFF0C;&#x6211;&#x663E;&#x7136;&#x5E94;&#x8BE5;&#x505A;&#x6210;&#x5F02;&#x6B65;&#x7684;&#xFF1B;</li>
<li>&#x4F46;&#x8FD9;&#x662F;&#x9A6C;&#x4E0A;&#x5C31;&#x8981;&#x663E;&#x793A;&#x7684;&#x6587;&#x5B57;&#xFF0C;&#x5982;&#x679C;&#x505A;&#x6210;&#x5F02;&#x6B65;&#x7684;&#xFF0C;&#x5C31;&#x6781;&#x6709;&#x53EF;&#x80FD;&#x5728;&#x7A0B;&#x5E8F;&#x5D29;&#x6E83;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x540E;&#x53F0;&#x7EBF;&#x7A0B;&#x8FD8;&#x6CA1;&#x6765;&#x5F97;&#x53CA;&#x628A;&#x6587;&#x5B57;&#x5B58;&#x5230;&#x78C1;&#x76D8;&#x3002;&#x8FD9;&#x6837;&#x7684;&#x8BDD;&#xFF0C;&#x5C31;&#x65E0;&#x6CD5;&#x8FDB;&#x884C;&#x56DE;&#x6EAF;&#xFF0C;&#x4ECE;&#x800C;&#x8FD9;&#x79CD;&#x8BB0;&#x5F55;&#x4E5F;&#x5C31;&#x5931;&#x53BB;&#x4E86;&#x4EF7;&#x503C;&#x3002;<br>
<img src="http://image.rengwuxian.com/2022/06/23/18d4893fdeccd.gif" alt="&#x3010;&#x9762;&#x8BD5;&#x9ED1;&#x6D1E;&#x3011;Android &#x7684;&#x952E;&#x503C;&#x5BF9;&#x5B58;&#x50A8;&#x6709;&#x6CA1;&#x6709;&#x6700;&#x4F18;&#x89E3;&#xFF1F;" loading="lazy"></li>
<li>&#x6240;&#x4EE5;&#x4ECE;&#x53EF;&#x7528;&#x6027;&#x7684;&#x89D2;&#x5EA6;&#x6765;&#x770B;&#xFF0C;&#x6211;&#x53EA;&#x80FD;&#x9009;&#x62E9;&#x653E;&#x5F03;&#x6027;&#x80FD;&#xFF0C;&#x628A;&#x5B83;&#x505A;&#x6210;&#x540C;&#x6B65;&#x7684;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x5728;&#x4E3B;&#x7EBF;&#x7A0B;&#x8FDB;&#x884C;&#x78C1;&#x76D8;&#x7684;&#x5199;&#x64CD;&#x4F5C;&#x3002;<br>
<img src="http://image.rengwuxian.com/2022/06/23/41fd99efadbb7.gif" alt="&#x3010;&#x9762;&#x8BD5;&#x9ED1;&#x6D1E;&#x3011;Android &#x7684;&#x952E;&#x503C;&#x5BF9;&#x5B58;&#x50A8;&#x6709;&#x6CA1;&#x6709;&#x6700;&#x4F18;&#x89E3;&#xFF1F;" loading="lazy"></li>
<li>&#x4E00;&#x6B21;&#x78C1;&#x76D8;&#x7684;&#x5199;&#x64CD;&#x4F5C;&#xFF0C;&#x82B1;&#x4E2A;&#x4E00;&#x4E24;&#x6BEB;&#x79D2;&#x662F;&#x5F88;&#x6B63;&#x5E38;&#x7684;&#xFF0C;&#x4E09;&#x4E94;&#x6BEB;&#x79D2;&#x751A;&#x81F3;&#x8D85;&#x8FC7; 10 &#x6BEB;&#x79D2;&#x4E5F;&#x90FD;&#x662F;&#x6709;&#x53EF;&#x80FD;&#x7684;&#x3002;&#x5177;&#x4F53;&#x7684;&#x65B9;&#x6848;&#x53EF;&#x4EE5;&#x9009;&#x62E9; <code>SharedPreferences</code>&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x9009;&#x62E9;&#x6570;&#x636E;&#x5E93;&#xFF0C;&#x4F46;&#x4E0D;&#x7BA1;&#x9009;&#x54EA;&#x4E2A;&#xFF0C;&#x53EA;&#x8981;&#x5728;&#x4E3B;&#x7EBF;&#x7A0B;&#x53BB;&#x5B8C;&#x6210;&#x8FD9;&#x4E2A;&#x5199;&#x64CD;&#x4F5C;&#xFF0C;&#x8FD9;&#x79CD;&#x8017;&#x65F6;&#x5C31;&#x7EDD;&#x5BF9;&#x65E0;&#x6CD5;&#x907F;&#x514D;&#x3002;&#x4E00;&#x5E27;&#x7684;&#x65F6;&#x95F4;&#x4E5F;&#x5C31; 16 &#x6BEB;&#x79D2;&#x800C;&#x5DF2;&#x2014;&#x2014;&#x90A3;&#x65F6;&#x5019;&#x8FD8;&#x6CA1;&#x6709;&#x9AD8;&#x5237;&#xFF0C;&#x6211;&#x4EEC;&#x5C31;&#x5148;&#x4E0D;&#x8C08;&#x9AD8;&#x5237;&#x4E86;&#xFF0C;&#x4E00;&#x5E27;&#x5C31;&#x662F; 16 &#x6BEB;&#x79D2;&#x2014;&#x2014;16 &#x6BEB;&#x79D2;&#x91CC;&#x6765;&#x4E2A;&#x5199;&#x78C1;&#x76D8;&#x7684;&#x64CD;&#x4F5C;&#xFF0C;&#x7528;&#x6237;&#x5F88;&#x53EF;&#x80FD;&#x5C31;&#x4F1A;&#x611F;&#x53D7;&#x5230;&#x4E00;&#x6B21;&#x5361;&#x987F;&#x3002;</li>
</ul>
</li>
<li>&#x8FD9;&#x8FD8;&#x662F;&#x76F8;&#x5BF9;&#x6BD4;&#x8F83;&#x597D;&#x7684;&#x60C5;&#x51B5;&#x3002;&#x6211;&#x4EEC;&#x518D;&#x60F3;&#x4E00;&#x4E0B;&#xFF0C;&#x5982;&#x679C;&#x7528;&#x6237;&#x70B9;&#x5F00;&#x4E86;&#x4E00;&#x4E2A;&#x6D3B;&#x8DC3;&#x7684;&#x7FA4;&#xFF0C;&#x8FD9;&#x4E2A;&#x7FA4;&#x91CC;&#x6709;&#x51E0;&#x767E;&#x6761;&#x6CA1;&#x770B;&#x8FC7;&#x7684;&#x6D88;&#x606F;&#xFF1A;
<ul>
<li>&#x90A3;&#x4E48;&#x5728;&#x4ED6;&#x70B9;&#x5F00;&#x7684;&#x4E00;&#x77AC;&#x95F4;&#xFF0C;&#x662F;&#x4E0D;&#x662F;&#x754C;&#x9762;&#x4E2D;&#x4F1A;&#x663E;&#x793A;&#x51FA;&#x597D;&#x51E0;&#x6761;&#x6D88;&#x606F;&#x6C14;&#x6CE1;&#xFF1F;&#x8FD9;&#x51E0;&#x6761;&#x6D88;&#x606F;&#x7684;&#x5185;&#x5BB9;&#xFF0C;&#x54EA;&#x4E9B;&#x9700;&#x8981;&#x8BB0;&#x5F55;&#x5230;&#x78C1;&#x76D8;&#xFF1F;&#x5168;&#x90FD;&#x8981;&#x8BB0;&#x5F55;&#x7684;&#xFF0C;&#x56E0;&#x4E3A;&#x8C01;&#x4E5F;&#x77E5;&#x9053;&#x54EA;&#x4E00;&#x6761;&#x4F1A;&#x5BFC;&#x81F4;&#x5FAE;&#x4FE1;&#x7684;&#x5D29;&#x6E83;&#xFF0C;&#x4EFB;&#x4F55;&#x4E00;&#x6761;&#x90FD;&#x662F;&#x53EF;&#x80FD;&#x7684;&#x3002;</li>
<li>&#x800C;&#x5982;&#x679C;&#x628A;&#x8FD9;&#x51E0;&#x6761;&#x6D88;&#x606F;&#x90FD;&#x8BB0;&#x5F55;&#x4E0B;&#x6765;&#xFF0C;&#x662F;&#x4E0D;&#x662F;&#x6BCF;&#x6761;&#x6D88;&#x606F;&#x7684;&#x8BB0;&#x5F55;&#x90FD;&#x4F1A;&#x6D89;&#x53CA;&#x4E00;&#x6B21;&#x5199;&#x78C1;&#x76D8;&#x7684;&#x64CD;&#x4F5C;&#xFF1F;&#x8FD9;&#x51E0;&#x6B21;&#x5199;&#x78C1;&#x76D8;&#x884C;&#x4E3A;&#xFF0C;&#x662F;&#x53D1;&#x751F;&#x5728;&#x540C;&#x4E00;&#x5E27;&#x91CC;&#x7684;&#xFF0C;&#x6240;&#x4EE5;&#x5728;&#x8FD9;&#x4E00;&#x5E27;&#x91CC;&#x56E0;&#x4E3A;&#x8BB0;&#x5F55;&#x6587;&#x5B57;&#x800C;&#x5BFC;&#x81F4;&#x7684;&#x4E3B;&#x7EBF;&#x7A0B;&#x8017;&#x65F6;&#xFF0C;&#x4E5F;&#x4F1A;&#x76F8;&#x6BD4;&#x8D77;&#x521A;&#x624D;&#x7684;&#x4F8B;&#x5B50;&#x7FFB;&#x4E0A;&#x597D;&#x51E0;&#x500D;&#xFF0C;&#x5361;&#x987F;&#x65F6;&#x95F4;&#x5C31;&#x540C;&#x6837;&#x4E5F;&#x4F1A;&#x7FFB;&#x4E0A;&#x597D;&#x51E0;&#x500D;&#x3002;</li>
</ul>
</li>
<li>&#x8FD8;&#x6709;&#x66F4;&#x5DEE;&#x7684;&#x60C5;&#x51B5;&#x3002;&#x5982;&#x679C;&#x7528;&#x6237;&#x770B;&#x5B8C;&#x8FD9;&#x4E00;&#x9875;&#x4E4B;&#x540E;&#xFF0C;&#x51B3;&#x5B9A;&#x7FFB;&#x7FFB;&#x804A;&#x5929;&#x8BB0;&#x5F55;&#xFF0C;&#x770B;&#x770B;&#x5927;&#x5BB6;&#x4E4B;&#x524D;&#x90FD;&#x804A;&#x4E86;&#x4EC0;&#x4E48;&#xFF1A;
<ul>
<li>&#x8FD9;&#x65F6;&#x5019;&#xFF0C;&#x662F;&#x4E0D;&#x662F;&#x4E0A;&#x65B9;&#x6BCF;&#x4E00;&#x4E2A;&#x65B0;&#x7684;&#x804A;&#x5929;&#x6C14;&#x6CE1;&#x7684;&#x51FA;&#x73B0;&#xFF0C;&#x90FD;&#x4F1A;&#x6D89;&#x53CA;&#x4E00;&#x6B21;&#x4E3B;&#x7EBF;&#x7A0B;&#x4E0A;&#x7684;&#x5199;&#x78C1;&#x76D8;&#x884C;&#x4E3A;&#xFF1F;</li>
<li>&#x800C;&#x5982;&#x679C;&#x7528;&#x6237;&#x628A;&#x624B;&#x731B;&#x5730;&#x5F80;&#x4E0B;&#x4E00;&#x6ED1;&#xFF0C;&#x8BA9;&#x4E0A;&#x9762;&#x7684;&#x51E0;&#x5341;&#x6761;&#x6D88;&#x606F;&#x4F9D;&#x6B21;&#x6ED1;&#x52A8;&#x663E;&#x793A;&#x51FA;&#x6765;&#xFF0C;&#x8FD9;&#x662F;&#x4E0D;&#x662F;&#x5C31;&#x4F1A;&#x5BFC;&#x81F4;&#x4E00;&#x6B21;&#x7206;&#x53D1;&#x6027;&#x7684;&#x3001;&#x96C6;&#x4E2D;&#x5F0F;&#x7684;&#x5BF9;&#x78C1;&#x76D8;&#x7684;&#x5199;&#x5165;&#xFF1F;</li>
<li>&#x7528;&#x6237;&#x7684;&#x624B;&#x673A;&#xFF0C;&#x4E00;&#x5B9A;&#x4F1A;&#x5361;&#x7206;&#x3002;</li>
</ul>
</li>
</ul>
<p>&#x6240;&#x4EE5;&#x8FD9;&#x79CD;&#x300C;&#x9AD8;&#x9891;&#x3001;&#x540C;&#x6B65;&#x5199;&#x5165;&#x78C1;&#x76D8;&#x300D;&#x7684;&#x9700;&#x6C42;&#xFF0C;&#x8BA9;&#x6240;&#x6709;&#x7684;&#x73B0;&#x6709;&#x65B9;&#x6848;&#x90FD;&#x53D8;&#x5F97;&#x4E0D;&#x53EF;&#x884C;&#x4E86;&#xFF1A;&#x4E0D;&#x7BA1;&#x4F60;&#x662F;&#x7528; <code>SharedPreferences</code> &#x8FD8;&#x662F;&#x7528;&#x6570;&#x636E;&#x5E93;&#x8FD8;&#x662F;&#x522B;&#x7684;&#x4EC0;&#x4E48;&#xFF0C;&#x53EA;&#x8981;&#x4F60;&#x5728;&#x4E3B;&#x7EBF;&#x7A0B;&#x540C;&#x6B65;&#x5199;&#x5165;&#x78C1;&#x76D8;&#xFF0C;&#x5C31;&#x4E00;&#x5B9A;&#x4F1A;&#x5361;&#xFF0C;&#x800C;&#x4E14;&#x662F;&#x5F88;&#x5361;&#x3002;</p>
<p>&#x4F46;&#x662F;&#x5FAE;&#x4FE1;&#x8FD8;&#x662F;&#x6709;&#x9AD8;&#x624B;&#xFF0C;&#x8FD8;&#x662F;&#x6709;&#x80FD;&#x60F3;&#x529E;&#x6CD5;&#x7684;&#x4EBA;&#xFF0C;&#x6700;&#x7EC8;&#x5FAE;&#x4FE1;&#x627E;&#x5230;&#x4E86;&#x89E3;&#x51B3;&#x65B9;&#x6848;&#x3002;&#x4ED6;&#x4EEC;&#x6CA1;&#x6709;&#x7528;&#x4EFB;&#x4F55;&#x7684;&#x73B0;&#x6210;&#x65B9;&#x6848;&#xFF0C;&#x800C;&#x662F;&#x4F7F;&#x7528;&#x4E86;&#x4E00;&#x79CD;&#x53EB;&#x505A;&#x5185;&#x5B58;&#x6620;&#x5C04;&#xFF08;<code>mmap()</code>&#xFF09;&#x7684;&#x5E95;&#x5C42;&#x65B9;&#x6CD5;&#x3002;<br>
<img src="http://image.rengwuxian.com/2022/06/23/0285c78cfe25f.png" alt="&#x3010;&#x9762;&#x8BD5;&#x9ED1;&#x6D1E;&#x3011;Android &#x7684;&#x952E;&#x503C;&#x5BF9;&#x5B58;&#x50A8;&#x6709;&#x6CA1;&#x6709;&#x6700;&#x4F18;&#x89E3;&#xFF1F;" loading="lazy"><br>
&#x5B83;&#x53EF;&#x4EE5;&#x8BA9;&#x7CFB;&#x7EDF;&#x4E3A;&#x4F60;&#x6307;&#x5B9A;&#x7684;&#x6587;&#x4EF6;&#x5F00;&#x8F9F;&#x4E00;&#x5757;&#x4E13;&#x7528;&#x7684;&#x5185;&#x5B58;&#xFF0C;&#x8FD9;&#x5757;&#x5185;&#x5B58;&#x548C;&#x6587;&#x4EF6;&#x4E4B;&#x95F4;&#x662F;&#x81EA;&#x52A8;&#x6620;&#x5C04;&#x3001;&#x81EA;&#x52A8;&#x540C;&#x6B65;&#x7684;&#x5173;&#x7CFB;&#xFF0C;&#x4F60;&#x5BF9;&#x6587;&#x4EF6;&#x7684;&#x6539;&#x52A8;&#x4F1A;&#x81EA;&#x52A8;&#x5199;&#x5230;&#x8FD9;&#x5757;&#x5185;&#x5B58;&#x91CC;&#xFF0C;&#x5BF9;&#x8FD9;&#x5757;&#x5185;&#x5B58;&#x7684;&#x6539;&#x52A8;&#x4E5F;&#x4F1A;&#x81EA;&#x52A8;&#x5199;&#x5230;&#x6587;&#x4EF6;&#x91CC;&#x3002;<br>
<img src="http://image.rengwuxian.com/2022/06/23/0015f4c80ea01.gif" alt="&#x3010;&#x9762;&#x8BD5;&#x9ED1;&#x6D1E;&#x3011;Android &#x7684;&#x952E;&#x503C;&#x5BF9;&#x5B58;&#x50A8;&#x6709;&#x6CA1;&#x6709;&#x6700;&#x4F18;&#x89E3;&#xFF1F;" loading="lazy"><br>
&#x66F4;&#x591A;&#x66F4;&#x6DF1;&#x7684;&#x539F;&#x7406;&#xFF0C;&#x8BF4;&#x5B9E;&#x8BDD;&#x6211;&#x4E5F;&#x4E0D;&#x662F;&#x770B;&#x5F97;&#x5F88;&#x61C2;&#xFF0C;&#x5C31;&#x4E0D;&#x8DDF;&#x5927;&#x5BB6;&#x88C5;&#x4E86;&#x3002;&#x4F46;&#x5173;&#x952E;&#x662F;&#xFF0C;&#x6709;&#x4E86;&#x8FD9;&#x4E00;&#x5C42;&#x5185;&#x5B58;&#x4F5C;&#x4E3A;&#x4E2D;&#x95F4;&#x4EBA;&#xFF0C;&#x6211;&#x4EEC;&#x5C31;&#x53EF;&#x4EE5;&#x7528;&#x300C;&#x5199;&#x5165;&#x5185;&#x5B58;&#x300D;&#x7684;&#x65B9;&#x5F0F;&#x6765;&#x5B9E;&#x73B0;&#x300C;&#x5199;&#x5165;&#x78C1;&#x76D8;&#x300D;&#x7684;&#x76EE;&#x6807;&#x4E86;&#x3002;&#x5185;&#x5B58;&#x7684;&#x901F;&#x5EA6;&#x591A;&#x5FEB;&#x5440;&#xFF0C;&#x8017;&#x65F6;&#x51E0;&#x4E4E;&#x53EF;&#x4EE5;&#x5FFD;&#x7565;&#xFF0C;&#x8FD9;&#x6837;&#x4E00;&#x4E0B;&#x5B50;&#x5C31;&#x628A;&#x5199;&#x78C1;&#x76D8;&#x9020;&#x6210;&#x5361;&#x987F;&#x7684;&#x95EE;&#x9898;&#x89E3;&#x51B3;&#x4E86;&#x3002;<br>
<img src="http://image.rengwuxian.com/2022/06/23/8967b11cfc75e.gif" alt="&#x3010;&#x9762;&#x8BD5;&#x9ED1;&#x6D1E;&#x3011;Android &#x7684;&#x952E;&#x503C;&#x5BF9;&#x5B58;&#x50A8;&#x6709;&#x6CA1;&#x6709;&#x6700;&#x4F18;&#x89E3;&#xFF1F;" loading="lazy"><br>
&#x800C;&#x4E14;&#x8FD9;&#x4E2A;&#x5185;&#x5B58;&#x6620;&#x5C04;&#x8FD8;&#x6709;&#x4E00;&#x70B9;&#x5F88;&#x65B9;&#x4FBF;&#x7684;&#x662F;&#xFF0C;&#x867D;&#x7136;&#x8FD9;&#x5757;&#x6620;&#x5C04;&#x7684;&#x5185;&#x5B58;&#x4E0D;&#x662F;&#x5B9E;&#x65F6;&#x5411;&#x5BF9;&#x5E94;&#x7684;&#x6587;&#x4EF6;&#x5199;&#x5165;&#x65B0;&#x6570;&#x636E;&#xFF0C;&#x4F46;&#x662F;&#x5B83;&#x5728;&#x7A0B;&#x5E8F;&#x5D29;&#x6E83;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x5E76;&#x4E0D;&#x4F1A;&#x968F;&#x7740;&#x8FDB;&#x7A0B;&#x4E00;&#x8D77;&#x88AB;&#x9500;&#x6BC1;&#x6389;&#xFF0C;&#x800C;&#x662F;&#x4F1A;&#x7EE7;&#x7EED;&#x6709;&#x6761;&#x4E0D;&#x7D0A;&#x5730;&#x628A;&#x5B83;&#x91CC;&#x9762;&#x8FD8;&#x6CA1;&#x540C;&#x6B65;&#x5B8C;&#x7684;&#x5185;&#x5BB9;&#x540C;&#x6B65;&#x5230;&#x5B83;&#x6240;&#x6620;&#x5C04;&#x7684;&#x6587;&#x4EF6;&#x91CC;&#x9762;&#x53BB;&#x3002;<br>
<img src="http://image.rengwuxian.com/2022/06/23/51e72497c15fa.gif" alt="&#x3010;&#x9762;&#x8BD5;&#x9ED1;&#x6D1E;&#x3011;Android &#x7684;&#x952E;&#x503C;&#x5BF9;&#x5B58;&#x50A8;&#x6709;&#x6CA1;&#x6709;&#x6700;&#x4F18;&#x89E3;&#xFF1F;" loading="lazy"><br>
&#x81F3;&#x4E8E;&#x66F4;&#x4E0B;&#x5C42;&#x7684;&#x539F;&#x7406;&#xFF0C;&#x6211;&#x4E5F;&#x8BF4;&#x4E86;&#xFF0C;&#x6CA1;&#x770B;&#x61C2;&#xFF0C;&#x4F60;&#x4E5F;&#x522B;&#x95EE;&#x6211;&#x3002;</p>
<p>&#x603B;&#x4E4B;&#xFF0C;&#x6709;&#x4E86;&#x8FD9;&#x4E9B;&#x7279;&#x6027;&#xFF0C;&#x5185;&#x5B58;&#x6620;&#x5C04;&#x5C31;&#x53EF;&#x4EE5;&#x8BA9;&#x7A0B;&#x5E8F;&#x7528;&#x5F80;&#x5185;&#x5B58;&#x91CC;&#x5199;&#x6570;&#x636E;&#x7684;&#x901F;&#x5EA6;&#x5B9E;&#x73B0;&#x5F80;&#x78C1;&#x76D8;&#x91CC;&#x5199;&#x6570;&#x636E;&#x7684;&#x5B9E;&#x9645;&#x6548;&#x679C;&#xFF0C;&#x8FD9;&#x6837;&#x7684;&#x8BDD;&#xFF0C;&#x300C;&#x9AD8;&#x9891;&#x3001;&#x540C;&#x6B65;&#x5199;&#x5165;&#x78C1;&#x76D8;&#x300D;&#x7684;&#x9700;&#x6C42;&#x5C31;&#x5B8C;&#x7F8E;&#x6EE1;&#x8DB3;&#x4E86;&#x3002;&#x4E0D;&#x7BA1;&#x662F;&#x7528;&#x6237;&#x6253;&#x5F00;&#x65B0;&#x7684;&#x804A;&#x5929;&#x9875;&#x9762;&#xFF0C;&#x8FD8;&#x662F;&#x6ED1;&#x52A8;&#x804A;&#x5929;&#x8BB0;&#x5F55;&#x6765;&#x67E5;&#x770B;&#x804A;&#x5929;&#x5386;&#x53F2;&#xFF0C;&#x7528;&#x5185;&#x5B58;&#x6620;&#x5C04;&#x7684;&#x65B9;&#x5F0F;&#x90FD;&#x53EF;&#x4EE5;&#x65E2;&#x5B9E;&#x65F6;&#x5199;&#x5165;&#x6240;&#x6709;&#x5373;&#x5C06;&#x88AB;&#x6E32;&#x67D3;&#x7684;&#x6587;&#x5B57;&#xFF0C;&#x53C8;&#x4E0D;&#x4F1A;&#x9020;&#x6210;&#x754C;&#x9762;&#x7684;&#x5361;&#x987F;&#x3002;&#x8FD9;&#x79CD;&#x6027;&#x80FD;&#xFF0C;&#x662F; <code>SharedPreferences</code> &#x548C;&#x6570;&#x636E;&#x5E93;&#x90FD;&#x505A;&#x4E0D;&#x5230;&#x7684;&#x2014;&#x2014;&#x987A;&#x4FBF;&#x63D0;&#x4E00;&#x53E5;&#xFF0C;&#x867D;&#x7136;&#x6211;&#x603B;&#x5728;&#x63D0; <code>SharedPreferences</code>&#xFF0C;&#x4F46;&#x5176;&#x5B9E;&#x8FD9;&#x79CD;&#x505A;&#x6CD5;&#x672C;&#x6765;&#x662F;&#x5148;&#x5728; iOS &#x7248;&#x7684;&#x5FAE;&#x4FE1;&#x91CC;&#x5E94;&#x7528;&#x7684;&#xFF0C;&#x540E;&#x6765;&#x624D;&#x79FB;&#x690D;&#x5230;&#x4E86; Android &#x7248;&#x5FAE;&#x4FE1;&#x3002;&#x8FD9;&#x4E5F;&#x662F;&#x6211;&#x521A;&#x624D;&#x8BF4;&#x7684;&#xFF0C;MMKV &#x7684;&#x8BDE;&#x751F;&#x5E76;&#x4E0D;&#x662F;&#x4E3A;&#x4E86;&#x53D6;&#x4EE3; SharedPreferences&#x3002;</p>
<p>&#x518D;&#x540E;&#x6765;&#xFF0C;&#x5C31;&#x662F; 2018 &#x5E74;&#xFF0C;&#x5FAE;&#x4FE1;&#x628A;&#x8FD9;&#x4E2A;&#x53EB;&#x505A; MMKV &#x7684;&#x9879;&#x76EE;&#x5F00;&#x6E90;&#x4E86;&#x3002;&#x5B83;&#x7684;&#x540D;&#x5B57;&#xFF0C;&#x6211;&#x731C;&#x5C31;&#x662F;&#x76F4;&#x767D;&#x7684;&#x300C;Memory-Map based Key-Value&#xFF08;&#x65B9;&#x6848;&#xFF09;&#x300D;&#xFF0C;&#x57FA;&#x4E8E;&#x5185;&#x5B58;&#x6620;&#x5C04;&#x7684;&#x952E;&#x503C;&#x5BF9;&#x3002;&#x4E0D;&#x8FC7;&#x6CA1;&#x6709;&#x627E;&#x4F5C;&#x8005;&#x6C42;&#x8BC1;&#xFF0C;&#x5982;&#x679C;&#x8BF4;&#x9519;&#x4E86;&#x6B22;&#x8FCE;&#x6307;&#x6B63;&#x3002;</p>
<p>&#x5728; MMKV &#x5F00;&#x6E90;&#x4E4B;&#x540E;&#xFF0C;&#x5F88;&#x591A;&#x56E2;&#x961F;&#x5C31;&#x628A;&#x952E;&#x503C;&#x5BF9;&#x5B58;&#x50A8;&#x65B9;&#x6848;&#x4ECE; <code>SharedPreferences</code> &#x8FC1;&#x79FB;&#x5230;&#x4E86; MMKV&#x3002;&#x4E3A;&#x4EC0;&#x4E48;&#xFF1F;&#x56E0;&#x4E3A;&#x5B83;&#x5FEB;&#x5440;&#x3002;</p>
<h2 id="mmkv-%E5%B9%B6%E4%B8%8D%E6%80%BB%E6%98%AF%E5%BF%AB%E5%A6%82%E9%97%AA%E7%94%B5">MMKV &#x5E76;&#x4E0D;&#x603B;&#x662F;&#x5FEB;&#x5982;&#x95EA;&#x7535;</h2>
<p>&#x4E0D;&#x8FC7;&#x2026;&#x2026;&#x4E8B;&#x60C5;&#x5176;&#x5B9E;&#x6CA1;&#x90A3;&#x4E48;&#x7B80;&#x5355;&#x3002;MMKV &#x867D;&#x7136;&#x5927;&#x7684;&#x5B9A;&#x4F4D;&#x65B9;&#x5411;&#x548C; <code>SharedPreferences</code> &#x4E00;&#x6837;&#xFF0C;&#x90FD;&#x662F;&#x5BF9;&#x4E8E;&#x952E;&#x503C;&#x5BF9;&#x7684;&#x5B58;&#x50A8;&#xFF0C;&#x4F46;&#x5B83;&#x5E76;&#x4E0D;&#x662F;&#x4E00;&#x4E2A;&#x5168;&#x65B9;&#x4F4D;&#x66F4;&#x4F18;&#x7684;&#x65B9;&#x6848;&#x3002;</p>
<p>&#x6BD4;&#x5982;&#x6027;&#x80FD;&#x3002;&#x6211;&#x524D;&#x9762;&#x4E00;&#x76F4;&#x5728;&#x8BF4; MMKV &#x7684;&#x6027;&#x80FD;&#x66F4;&#x5F3A;&#xFF0C;&#x5BF9;&#x5427;&#xFF1F;&#x4F46;&#x4E8B;&#x5B9E;&#x4E0A;&#xFF0C;&#x5B83;&#x5E76;&#x4E0D;&#x662F;&#x4EFB;&#x4F55;&#x65F6;&#x5019;&#x90FD;&#x66F4;&#x5F3A;&#x3002;&#x7531;&#x4E8E;&#x5185;&#x5B58;&#x6620;&#x5C04;&#x8FD9;&#x79CD;&#x65B9;&#x6848;&#x662F;&#x81EA;&#x884C;&#x7BA1;&#x7406;&#x4E00;&#x5757;&#x72EC;&#x7ACB;&#x7684;&#x5185;&#x5B58;&#xFF0C;&#x6240;&#x4EE5;&#x5B83;&#x5728;&#x5C3A;&#x5BF8;&#x7684;&#x4F38;&#x7F29;&#x4E0A;&#x9762;&#x5C31;&#x6BD4;&#x8F83;&#x53D7;&#x9650;&#xFF0C;&#x8FD9;&#x5C31;&#x5BFC;&#x81F4;&#x5B83;&#x5728;&#x5199;&#x5927;&#x4E00;&#x70B9;&#x7684;&#x6570;&#x636E;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x901F;&#x5EA6;&#x4F1A;&#x6162;&#xFF0C;&#x800C;&#x4E14;&#x53EF;&#x80FD;&#x4F1A;&#x5F88;&#x6162;&#x3002;&#x6211;&#x505A;&#x4E86;&#x4E00;&#x4EFD;&#x6D4B;&#x8BD5;&#xFF1A;<br>
<img src="http://image.rengwuxian.com/2022/06/23/50185cd9671d8.gif" alt="&#x3010;&#x9762;&#x8BD5;&#x9ED1;&#x6D1E;&#x3011;Android &#x7684;&#x952E;&#x503C;&#x5BF9;&#x5B58;&#x50A8;&#x6709;&#x6CA1;&#x6709;&#x6700;&#x4F18;&#x89E3;&#xFF1F;" loading="lazy"></p>
<p>&#x5728;&#x8FDE;&#x7EED; 1000 &#x6B21;&#x5199;&#x5165; <code>Int</code> &#x503C;&#x7684;&#x573A;&#x666F;&#x4E2D;&#xFF0C;<code>SharedPreferences</code> &#x7684;&#x8017;&#x65F6;&#x662F; 1034 &#x6BEB;&#x79D2;&#xFF0C;&#x4E5F;&#x5C31;&#x662F; 1 &#x79D2;&#x591A;&#x4E00;&#x70B9;&#xFF1B;&#x800C; MMKV &#x53EA;&#x6709; 2 &#x6BEB;&#x79D2;&#xFF0C;&#x7B80;&#x76F4;&#x5FEB;&#x5F97;&#x79BB;&#x8C31;&#xFF1B;&#x800C;&#x4E14;&#x6700;&#x79BB;&#x8C31;&#x7684;&#x662F;&#xFF0C;Android &#x5B98;&#x65B9;&#x6700;&#x65B0;&#x63A8;&#x51FA;&#x7684; <code>DataStore</code> &#x662F; 1215 &#x6BEB;&#x79D2;&#xFF0C;&#x7ADF;&#x7136;&#x6BD4; <code>SharedPreferences</code> &#x8FD8;&#x6162;&#x3002;&#x8FD9;&#x4E2A;&#x524D;&#x9762;&#x6211;&#x4E5F;&#x63D0;&#x8FC7;&#xFF0C;&#x522B;&#x4EBA;&#x7684;&#x6D4B;&#x8BD5;&#x4E5F;&#x662F;&#x8FD9;&#x6837;&#x7684;&#x7ED3;&#x679C;&#x3002;</p>
<p>&#x53EF;&#x662F;&#xFF0C;<code>SharedPreferences</code> &#x662F;&#x6709;&#x5F02;&#x6B65; API &#x7684;&#xFF0C;&#x800C; DataStore &#x662F;&#x57FA;&#x4E8E;&#x534F;&#x7A0B;&#x7684;&#x3002;&#x8FD9;&#x5C31;&#x610F;&#x5473;&#x7740;&#xFF0C;&#x5B83;&#x4EEC;&#x5B9E;&#x9645;&#x5360;&#x7528;&#x4E3B;&#x7EBF;&#x7A0B;&#x7684;&#x65F6;&#x95F4;&#x662F;&#x53EF;&#x4EE5;&#x4F4E;&#x4E8E;&#x8FD9;&#x4EFD;&#x6D4B;&#x8BD5;&#x51FA;&#x7684;&#x65F6;&#x95F4;&#x7684;&#xFF0C;&#x800C;&#x754C;&#x9762;&#x7684;&#x6D41;&#x7545;&#x5728;&#x610F;&#x7684;&#x6B63;&#x662F;&#x4E3B;&#x7EBF;&#x7A0B;&#x7684;&#x65F6;&#x95F4;&#x6D88;&#x8017;&#x3002;&#x6240;&#x4EE5;&#x5982;&#x679C;&#x6211;&#x7EDF;&#x8BA1;&#x7684;&#x4E0D;&#x662F;&#x5168;&#x90E8;&#x7684;&#x8017;&#x65F6;&#xFF0C;&#x800C;&#x662F;&#x4E3B;&#x7EBF;&#x7A0B;&#x7684;&#x8017;&#x65F6;&#xFF0C;&#x90A3;&#x4E48;&#x7EDF;&#x8BA1;&#x51FA;&#x7684; <code>SharedPreferences</code> &#x548C; <code>DataStore</code> &#x7684;&#x8017;&#x65F6;&#x5C06;&#x4F1A;&#x5927;&#x5E45;&#x7F29;&#x51CF;&#xFF1A;<br>
<img src="http://image.rengwuxian.com/2022/06/23/40aff2258b8de.gif" alt="&#x3010;&#x9762;&#x8BD5;&#x9ED1;&#x6D1E;&#x3011;Android &#x7684;&#x952E;&#x503C;&#x5BF9;&#x5B58;&#x50A8;&#x6709;&#x6CA1;&#x6709;&#x6700;&#x4F18;&#x89E3;&#xFF1F;" loading="lazy"></p>
<p>&#x8FD8;&#x662F;&#x6BD4; MMKV &#x6162;&#x5F88;&#x591A;&#xFF0C;&#x662F;&#x5427;&#xFF1F;&#x4F46;&#x662F;&#x8FD9;&#x662F;&#x5BF9;&#x4E8E; <code>Int</code>&#x7C7B;&#x578B;&#x7684;&#x9AD8;&#x9891;&#x5199;&#x5165;&#xFF0C;Int &#x6570;&#x636E;&#x662F;&#x5F88;&#x5C0F;&#x7684;&#x3002;&#x800C;&#x5982;&#x679C;&#x6211;&#x628A;&#x5199;&#x5165;&#x7684;&#x5185;&#x5BB9;&#x6362;&#x6210;&#x957F;&#x5B57;&#x7B26;&#x4E32;&#xFF0C;&#x518D;&#x505A;&#x4E00;&#x6B21;&#x6D4B;&#x8BD5;&#xFF1A;<br>
<img src="http://image.rengwuxian.com/2022/06/23/191d317e095fd.gif" alt="&#x3010;&#x9762;&#x8BD5;&#x9ED1;&#x6D1E;&#x3011;Android &#x7684;&#x952E;&#x503C;&#x5BF9;&#x5B58;&#x50A8;&#x6709;&#x6CA1;&#x6709;&#x6700;&#x4F18;&#x89E3;&#xFF1F;" loading="lazy"></p>
<p>MMKV &#x5C31;&#x4E0D;&#x5177;&#x5907;&#x4F18;&#x52BF;&#x4E86;&#xFF0C;&#x53CD;&#x800C;&#x6210;&#x4E86;&#x8017;&#x65F6;&#x6700;&#x4E45;&#x7684;&#xFF1B;&#x800C;&#x8FD9;&#x65F6;&#x5019;&#x7684;&#x51A0;&#x519B;&#x5C31;&#x6210;&#x4E86; DataStore&#xFF0C;&#x5E76;&#x4E14;&#x662F;&#x9065;&#x9065;&#x9886;&#x5148;&#x3002;&#x8FD9;&#x4E5F;&#x5C31;&#x662F;&#x6211;&#x5728;&#x5F00;&#x5934;&#x8BF4;&#x7684;&#xFF1A;&#x4F60;&#x53EF;&#x80FD;&#x88AB;&#x9A97;&#x4E86;&#x3002;&#x88AB;&#x8C01;&#x9A97;&#x4E86;&#xFF1F;&#x88AB;&#x300C;&#x8017;&#x65F6;&#x300D;&#x8FD9;&#x4E2A;&#x8BCD;&#xFF1A;&#x6211;&#x4EEC;&#x5173;&#x6CE8;&#x6027;&#x80FD;&#xFF0C;&#x8003;&#x91CF;&#x7684;&#x5F53;&#x7136;&#x662F;&#x8017;&#x65F6;&#xFF0C;&#x4F46;&#x8981;&#x660E;&#x786E;&#xFF1A;&#x662F;&#x4E3B;&#x7EBF;&#x7A0B;&#x7684;&#x8017;&#x65F6;&#x3002;&#x6240;&#x4EE5;&#x89C6;&#x9891;&#x5F00;&#x5934;&#x7684;&#x90A3;&#x5F20;&#x56FE;&#xFF0C;&#x662F;&#x4E0D;&#x5177;&#x5907;&#x4EFB;&#x4F55;&#x53C2;&#x8003;&#x610F;&#x4E49;&#x7684;&#x3002;<br>
<img src="http://image.rengwuxian.com/2022/06/23/d9726f02df0bc.png" alt="&#x3010;&#x9762;&#x8BD5;&#x9ED1;&#x6D1E;&#x3011;Android &#x7684;&#x952E;&#x503C;&#x5BF9;&#x5B58;&#x50A8;&#x6709;&#x6CA1;&#x6709;&#x6700;&#x4F18;&#x89E3;&#xFF1F;" loading="lazy"></p>
<h2 id="%E4%BD%86%E5%85%B6%E5%AE%9E%EF%BC%8C%E5%AE%83%E4%BB%AC%E9%83%BD%E5%A4%9F%E5%BF%AB%E4%BA%86">&#x4F46;&#x5176;&#x5B9E;&#xFF0C;&#x5B83;&#x4EEC;&#x90FD;&#x591F;&#x5FEB;&#x4E86;</h2>
<p>&#x4E0D;&#x8FC7;&#x5728;&#x6362;&#x6210;&#x4E86;&#x8FD9;&#x79CD;&#x53EA;&#x770B;&#x4E3B;&#x7EBF;&#x7A0B;&#x7684;&#x8017;&#x65F6;&#x7684;&#x5BF9;&#x6BD4;&#x65B9;&#x6848;&#x4E4B;&#x540E;&#xFF0C;&#x6211;&#x4EEC;&#x4F1A;&#x53D1;&#x73B0;&#x8C01;&#x662F;&#x51A0;&#x519B;&#x5176;&#x5B9E;&#x5E76;&#x4E0D;&#x662F;&#x5F88;&#x91CD;&#x8981;&#xFF0C;&#x56E0;&#x4E3A;&#x4ECE;&#x6700;&#x7EC8;&#x7684;&#x6570;&#x636E;&#x6765;&#x770B;&#xFF0C;&#x4E09;&#x79CD;&#x65B9;&#x6848;&#x90FD;&#x4E0D;&#x662F;&#x5F88;&#x6162;&#x3002;&#x867D;&#x7136;&#x8FD9;&#x534A;&#x79D2;&#x5DE6;&#x53F3;&#x7684;&#x4E3B;&#x7EBF;&#x7A0B;&#x8017;&#x65F6;&#x770B;&#x8D77;&#x6765;&#x5F88;&#x53EF;&#x6015;&#xFF0C;&#x4F46;&#x662F;&#x8981;&#x77E5;&#x9053;&#x8FD9;&#x662F; 1000 &#x6B21;&#x8FDE;&#x7EED;&#x5199;&#x5165;&#x7684;&#x8017;&#x65F6;&#xFF0C;&#x800C;&#x6211;&#x4EEC;&#x5728;&#x771F;&#x6B63;&#x5199;&#x7A0B;&#x5E8F;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x600E;&#x4E48;&#x4F1A;&#x4E00;&#x6B21;&#x6027;&#x505A; 1000 &#x6B21;&#x7684;&#x957F;&#x5B57;&#x7B26;&#x4E32;&#x7684;&#x5199;&#x5165;&#xFF1F;&#x6240;&#x4EE5;&#x771F;&#x6B63;&#x5728;&#x9879;&#x76EE;&#x4E2D;&#x7684;&#x952E;&#x503C;&#x5BF9;&#x5199;&#x5165;&#x7684;&#x8017;&#x65F6;&#xFF0C;&#x4E0D;&#x7BA1;&#x4F60;&#x9009;&#x54EA;&#x4E2A;&#x65B9;&#x6848;&#xFF0C;&#x90FD;&#x4F1A;&#x6BD4;&#x8FD9;&#x4EFD;&#x6D4B;&#x8BD5;&#x7ED3;&#x679C;&#x7684;&#x8017;&#x65F6;&#x5C11;&#x5F97;&#x591A;&#x7684;&#xFF0C;&#x90FD;&#x5C11;&#x5230;&#x4E86;&#x53EF;&#x4EE5;&#x5FFD;&#x7565;&#x7684;&#x7A0B;&#x5EA6;&#xFF0C;&#x8FD9;&#x662F;&#x5173;&#x952E;&#x3002;</p>
<h2 id="%E5%90%84%E8%87%AA%E7%9A%84%E4%BC%98%E5%8A%BF%E5%92%8C%E5%BC%B1%E7%82%B9">&#x5404;&#x81EA;&#x7684;&#x4F18;&#x52BF;&#x548C;&#x5F31;&#x70B9;</h2>
<p>&#x90A3;&#x2026;&#x2026;&#x65E2;&#x7136;&#x5B83;&#x4EEC;&#x7684;&#x8017;&#x65F6;&#x90FD;&#x5C11;&#x5230;&#x4E86;&#x53EF;&#x4EE5;&#x5FFD;&#x7565;&#xFF0C;&#x4E0D;&#x5C31;&#x662F;&#x9009;&#x8C01;&#x90FD;&#x884C;&#xFF1F;&#x90A3;&#x5012;&#x4E0D;&#x662F;&#x3002;</p>
<h3 id="mmkv-%E4%BC%98%E5%8A%BF%EF%BC%9A%E5%86%99%E9%80%9F%E5%BA%A6%E6%9E%81%E5%BF%AB">MMKV &#x4F18;&#x52BF;&#xFF1A;&#x5199;&#x901F;&#x5EA6;&#x6781;&#x5FEB;</h3>
<p>&#x6211;&#x4EEC;&#x6765;&#x770B;&#x4E00;&#x4E2A; MMKV &#x5B98;&#x65B9;&#x7ED9;&#x51FA;&#x7684;&#x6570;&#x636E;&#x5BF9;&#x6BD4;&#x56FE;&#xFF1A;<br>
<img src="http://image.rengwuxian.com/2022/06/23/de4c93b9c645f.png" alt="&#x3010;&#x9762;&#x8BD5;&#x9ED1;&#x6D1E;&#x3011;Android &#x7684;&#x952E;&#x503C;&#x5BF9;&#x5B58;&#x50A8;&#x6709;&#x6CA1;&#x6709;&#x6700;&#x4F18;&#x89E3;&#xFF1F;" loading="lazy"><br>
&#x4ECE;&#x8FD9;&#x5F20;&#x56FE;&#x770B;&#x6765;&#xFF0C;<code>SharedPreferences</code> &#x7684;&#x8017;&#x65F6;&#x662F; MMKV &#x7684;&#x63A5;&#x8FD1; 60 &#x500D;&#x3002;&#x5F88;&#x660E;&#x663E;&#xFF0C;&#x5982;&#x679C; SharedPreferences &#x7528;&#x5F02;&#x6B65;&#x7684; API &#x4E5F;&#x5C31;&#x662F; <code>apply()</code> &#x6765;&#x4FDD;&#x5B58;&#x7684;&#x8BDD;&#xFF0C;&#x662F;&#x4E0D;&#x53EF;&#x80FD;&#x6709;&#x8FD9;&#x4E48;&#x5DEE;&#x7684;&#x6027;&#x80FD;&#x7684;&#xFF0C;&#x8FD9;&#x4E2A;&#x4E00;&#x5B9A;&#x662F;&#x4F7F;&#x7528;&#x540C;&#x6B65;&#x7684; <code>commit()</code> &#x7684;&#x6027;&#x80FD;&#x6765;&#x505A;&#x7684;&#x5BF9;&#x6BD4;&#x3002;&#x90A3;&#x4E48;&#x4E3A;&#x4EC0;&#x4E48; MMKV &#x5B98;&#x65B9;&#x4F1A;&#x8FD9;&#x6837;&#x505A;&#x5BF9;&#x6BD4;&#x5462;&#xFF1F;&#x8FD9;&#x4E2A;&#x53C8;&#x8981;&#x8BF4;&#x5230;&#x5B83;&#x7684;&#x8BDE;&#x751F;&#x573A;&#x666F;&#x4E86;&#xFF1A;MMKV &#x6700;&#x521D;&#x7684;&#x529F;&#x80FD;&#x662F;&#x5728;&#x6587;&#x5B57;&#x663E;&#x793A;&#x4E4B;&#x524D;&#x5148;&#x628A;&#x5B83;&#x8BB0;&#x5F55;&#x5230;&#x78C1;&#x76D8;&#xFF0C;&#x7136;&#x540E;&#x5982;&#x679C;&#x63A5;&#x4E0B;&#x6765;&#x8FD9;&#x4E2A;&#x6587;&#x5B57;&#x663E;&#x793A;&#x5931;&#x8D25;&#x5BFC;&#x81F4;&#x7A0B;&#x5E8F;&#x5D29;&#x6E83;&#xFF0C;&#x7A0D;&#x540E;&#x5C31;&#x53EF;&#x4EE5;&#x4ECE;&#x78C1;&#x76D8;&#x91CC;&#x628A;&#x8FD9;&#x6BB5;&#x6587;&#x5B57;&#x6062;&#x590D;&#x51FA;&#x6765;&#xFF0C;&#x8FDB;&#x884C;&#x5206;&#x6790;&#x3002;&#x800C;&#x521A;&#x624D;&#x6211;&#x4E5F;&#x8BF4;&#x8FC7;&#xFF0C;&#x8FD9;&#x79CD;&#x573A;&#x666F;&#x7684;&#x7279;&#x6B8A;&#x6027;&#x5728;&#x4E8E;&#xFF0C;&#x5BFC;&#x81F4;&#x7A0B;&#x5E8F;&#x5D29;&#x6E83;&#x7684;&#x6587;&#x5B57;&#x5F80;&#x5F80;&#x662F;&#x521A;&#x521A;&#x88AB;&#x8BB0;&#x5F55;&#x4E0B;&#x6765;&#xFF0C;&#x7A0B;&#x5E8F;&#x5C31;&#x5D29;&#x6E83;&#x4E86;&#xFF0C;&#x6240;&#x4EE5;&#x5982;&#x679C;&#x91C7;&#x7528;&#x5F02;&#x6B65;&#x5904;&#x7406;&#x7684;&#x65B9;&#x6848;&#xFF0C;&#x5C31;&#x5F88;&#x6709;&#x53EF;&#x80FD;&#x5728;&#x6587;&#x5B57;&#x8FD8;&#x6CA1;&#x6765;&#x5F97;&#x53CA;&#x771F;&#x6B63;&#x5B58;&#x50A8;&#x5230;&#x78C1;&#x76D8;&#x7684;&#x65F6;&#x5019;&#x7A0B;&#x5E8F;&#x5C31;&#x53D1;&#x751F;&#x4E86;&#x5D29;&#x6E83;&#xFF0C;&#x90A3;&#x5C31;&#x6CA1;&#x529E;&#x6CD5;&#x628A;&#x5B83;&#x6062;&#x590D;&#x51FA;&#x6765;&#x8FDB;&#x884C;&#x5206;&#x6790;&#x4E86;&#x3002;&#x56E0;&#x6B64;&#x8FD9;&#x6837;&#x7684;&#x573A;&#x666F;&#xFF0C;&#x662F;&#x4E0D;&#x80FD;&#x63A5;&#x53D7;&#x5F02;&#x6B65;&#x5904;&#x7406;&#x7684;&#x65B9;&#x6848;&#x7684;&#xFF0C;&#x53EA;&#x80FD;&#x540C;&#x6B65;&#x8FDB;&#x884C;&#x3002;&#x6240;&#x4EE5; MMKV &#x5728;&#x610F;&#x7684;&#xFF0C;&#x5C31;&#x662F;&#x540C;&#x6B65;&#x5904;&#x7406;&#x673A;&#x5236;&#x4E0B;&#x7684;&#x8017;&#x65F6;&#xFF0C;&#x5B83;&#x4E0D;&#x5728;&#x610F;&#x5F02;&#x6B65;&#xFF0C;&#x56E0;&#x4E3A;&#x5B83;&#x4E0D;&#x63A5;&#x53D7;&#x5F02;&#x6B65;&#x3002;</p>
<p>&#x800C;&#x5728;&#x540C;&#x6B65;&#x5904;&#x7406;&#x7684;&#x673A;&#x5236;&#x4E0B;&#xFF0C;MMKV &#x7684;&#x6027;&#x80FD;&#x4F18;&#x52BF;&#x5C31;&#x592A;&#x660E;&#x663E;&#x4E86;&#x3002;&#x539F;&#x56E0;&#x4E0A;&#x9762;&#x8BF4;&#x8FC7;&#x4E86;&#xFF0C;&#x5B83;&#x5199;&#x5165;&#x5185;&#x5B58;&#x5C31;&#x51E0;&#x4E4E;&#x7B49;&#x4E8E;&#x5199;&#x5165;&#x4E86;&#x78C1;&#x76D8;&#xFF0C;&#x6240;&#x4EE5;&#x901F;&#x5EA6;&#x5DE8;&#x5FEB;&#x65E0;&#x6BD4;&#x3002;&#x8FD9;&#x5C31;&#x662F; MMKV &#x7684;&#x4F18;&#x52BF;&#x4E4B;&#x4E00;&#xFF1A;&#x6781;&#x9AD8;&#x7684;&#x540C;&#x6B65;&#x5199;&#x5165;&#x78C1;&#x76D8;&#x7684;&#x6027;&#x80FD;&#x3002;</p>
<p>&#x53E6;&#x5916; MMKV &#x8FD8;&#x6709;&#x4E2A;&#x7279;&#x70B9;&#x662F;&#xFF0C;&#x5B83;&#x7684;&#x66F4;&#x65B0;&#x5E76;&#x4E0D;&#x50CF; <code>SharedPreferences</code> &#x90A3;&#x6837;&#x5168;&#x91CF;&#x91CD;&#x65B0;&#x5199;&#x5165;&#x78C1;&#x76D8;&#xFF0C;&#x800C;&#x662F;&#x53EA;&#x628A;&#x8981;&#x66F4;&#x65B0;&#x7684;&#x952E;&#x503C;&#x5BF9;&#x5199;&#x5165;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x6240;&#x8C13;&#x7684;&#x589E;&#x91CF;&#x5F0F;&#x66F4;&#x65B0;&#x3002;&#x8FD9;&#x4E5F;&#x4F1A;&#x7ED9;&#x5B83;&#x5E26;&#x6765;&#x4E00;&#x4E9B;&#x6027;&#x80FD;&#x4F18;&#x52BF;&#xFF0C;&#x4E0D;&#x8FC7;&#x8FD9;&#x4E2A;&#x4F18;&#x52BF;&#x5E76;&#x4E0D;&#x7B97;&#x592A;&#x6838;&#x5FC3;&#xFF0C;&#x56E0;&#x4E3A; <code>SharedPreferences</code> &#x867D;&#x7136;&#x662F;&#x5168;&#x91CF;&#x66F4;&#x65B0;&#x7684;&#x6A21;&#x5F0F;&#xFF0C;&#x4F46;&#x53EA;&#x8981;&#x628A;&#x4FDD;&#x5B58;&#x7684;&#x6570;&#x636E;&#x7528;&#x5408;&#x9002;&#x7684;&#x903B;&#x8F91;&#x62C6;&#x5206;&#x5230;&#x591A;&#x4E2A;&#x4E0D;&#x540C;&#x7684;&#x6587;&#x4EF6;&#x91CC;&#xFF0C;&#x5168;&#x91CF;&#x66F4;&#x65B0;&#x5E76;&#x4E0D;&#x4F1A;&#x5BF9;&#x6027;&#x80FD;&#x9020;&#x6210;&#x592A;&#x5927;&#x7684;&#x62D6;&#x7D2F;&#x3002;&#x6240;&#x4EE5;&#x8FD9;&#x4E2A;&#x6027;&#x80FD;&#x4F18;&#x52BF;&#x867D;&#x7136;&#x6709;&#xFF0C;&#x4F46;&#x5E76;&#x4E0D;&#x662F;&#x5173;&#x952E;&#x3002;</p>
<p>&#x8FD8;&#x6709;&#x521A;&#x624D;&#x63D0;&#x5230;&#x7684;&#xFF0C;&#x5BF9;&#x4E8E;&#x5927;&#x5B57;&#x7B26;&#x4E32;&#x7684;&#x573A;&#x666F;&#xFF0C;MMKV &#x7684;&#x5199;&#x5165;&#x6027;&#x80FD;&#x5E76;&#x4E0D;&#x7B97;&#x5FEB;&#xFF0C;&#x751A;&#x81F3;&#x5728;&#x6211;&#x4EEC;&#x7684;&#x6D4B;&#x8BD5;&#x7ED3;&#x679C;&#x91CC;&#x662F;&#x6700;&#x6162;&#x7684;&#xFF0C;&#x5BF9;&#x5427;&#xFF1F;&#x8FD9;&#x4E00;&#x70B9;&#x7B97;&#x662F;&#x52A3;&#x52BF;&#x3002;&#x4F46;&#x662F;&#x5B9E;&#x4E8B;&#x6C42;&#x662F;&#x5730;&#x8BF4;&#xFF0C;&#x6211;&#x4EEC;&#x5728;&#x5F00;&#x53D1;&#x91CC;&#x4E0D;&#x592A;&#x53EF;&#x80FD;&#x8FDE;&#x7EED;&#x4E0D;&#x65AD;&#x5730;&#x53BB;&#x5199;&#x5165;&#x5927;&#x5B57;&#x7B26;&#x4E32;&#x5427;&#xFF1F;&#x6240;&#x4EE5;&#x8FD9;&#x4E2A;&#x6027;&#x80FD;&#x52A3;&#x52BF;&#x867D;&#x7136;&#x6709;&#xFF0C;&#x4F46;&#x4E5F;&#x5E76;&#x4E0D;&#x662F;&#x5173;&#x952E;&#x3002;</p>
<p>&#x6574;&#x4F53;&#x6765;&#x8BF4;&#xFF0C;MMKV &#x6BD4;&#x8D77; SharedPreferences &#x548C; DataStore &#x6765;&#x8BF4;&#xFF0C;&#x5728;&#x5199;&#x5165;&#x5C0F;&#x6570;&#x636E;&#x7684;&#x60C5;&#x51B5;&#x4E0B;&#xFF0C;&#x5177;&#x6709;&#x5F88;&#x9AD8;&#x7684;&#x5199;&#x5165;&#x6027;&#x80FD;&#xFF0C;&#x8FD9;&#x5C31;&#x8BA9;&#x9AD8;&#x9891;&#x5199;&#x5165;&#x7684;&#x573A;&#x666F;&#x975E;&#x5E38;&#x9002;&#x5408;&#x4F7F;&#x7528; MMKV &#x6765;&#x5904;&#x7406;&#x3002;&#x56E0;&#x6B64;&#x5982;&#x679C;&#x4F60;&#x7684;&#x9879;&#x76EE;&#x91CC;&#x4E5F;&#x6709;&#x50CF;&#x5FAE;&#x4FE1;&#x7684;&#x5D29;&#x6E83;&#x56DE;&#x6EAF;&#x7684;&#x8FD9;&#x79CD;&#x9AD8;&#x9891;&#x5199;&#x5165;&#x7684;&#x9700;&#x6C42;&#xFF0C;MMKV &#x5C31;&#x5F88;&#x53EF;&#x80FD;&#x662F;&#x4F60;&#x7684;&#x6700;&#x4F73;&#x65B9;&#x6848;&#x3002;&#x800C;&#x5982;&#x679C;&#x4F60;&#x9664;&#x4E86;&#x300C;&#x9AD8;&#x9891;&#x5199;&#x5165;&#x300D;&#xFF0C;&#x8FD8;&#x548C;&#x5FAE;&#x4FE1;&#x4E00;&#x6837;&#x8981;&#x6C42;&#x300C;&#x540C;&#x6B65;&#x5199;&#x5165;&#x300D;&#xFF0C;&#x90A3; MMKV &#x5C31;&#x53EF;&#x80FD;&#x662F;&#x4F60;&#x7684;&#x552F;&#x4E00;&#x9009;&#x62E9;&#x4E86;&#x3002;&#x4E0D;&#x8FC7;&#xFF0C;&#x5982;&#x679C;&#x4F60;&#x771F;&#x7684;&#x4E3B;&#x8981;&#x662F;&#x5B58;&#x50A8;&#x5927;&#x5B57;&#x7B26;&#x4E32;&#x7684;&#x2014;&#x2014;&#x4F8B;&#x5982;&#x4F60;&#x5199;&#x7684;&#x662F;&#x4E00;&#x4E2A;&#x6587;&#x672C;&#x7F16;&#x8F91;&#x8F6F;&#x4EF6;&#xFF0C;&#x9700;&#x8981;&#x4FDD;&#x5B58;&#x7684;&#x603B;&#x662F;&#x5927;&#x5757;&#x7684;&#x6587;&#x672C;&#x2014;&#x2014;&#x90A3;&#x4E48;&#x7528; MMKV &#x4E0D;&#x4E00;&#x5B9A;&#x4F1A;&#x66F4;&#x5FEB;&#x4E86;&#xFF0C;&#x751A;&#x81F3;&#x53EF;&#x80FD;&#x4F1A;&#x6BD4;&#x8F83;&#x6162;&#x3002;</p>
<h3 id="mmkv-%E4%BC%98%E5%8A%BF%EF%BC%9A%E6%94%AF%E6%8C%81%E5%A4%9A%E8%BF%9B%E7%A8%8B">MMKV &#x4F18;&#x52BF;&#xFF1A;&#x652F;&#x6301;&#x591A;&#x8FDB;&#x7A0B;</h3>
<p>&#x53E6;&#x5916;&#xFF0C;MMKV &#x8FD8;&#x6709;&#x4E00;&#x4E2A;&#x5DE8;&#x5927;&#x7684;&#x4F18;&#x52BF;&#xFF1A;&#x5B83;&#x652F;&#x6301;&#x591A;&#x8FDB;&#x7A0B;&#x3002;</p>
<p>&#x884C;&#x4E1A;&#x5185;&#x4E5F;&#x6709;&#x5F88;&#x591A;&#x516C;&#x53F8;&#x9009;&#x7528; MMKV &#x5E76;&#x4E0D;&#x662F;&#x56E0;&#x4E3A;&#x5B83;&#x5FEB;&#xFF0C;&#x800C;&#x662F;&#x56E0;&#x4E3A;&#x5B83;&#x652F;&#x6301;&#x591A;&#x8FDB;&#x7A0B;&#x3002;SharedPreferences &#x662F;&#x4E0D;&#x652F;&#x6301;&#x591A;&#x8FDB;&#x7A0B;&#x7684;&#xFF0C;DataStore &#x4E5F;&#x4E0D;&#x652F;&#x6301;&#x2014;&#x2014;&#x4ECE; DataStore &#x63D0;&#x4EA4;&#x7684;&#x4EE3;&#x7801;&#x6765;&#x770B;&#xFF0C;&#x5B83;&#x5DF2;&#x7ECF;&#x5728;&#x52A0;&#x5165;&#x591A;&#x8FDB;&#x7A0B;&#x7684;&#x652F;&#x6301;&#x4E86;&#xFF0C;&#x4F46;&#x76EE;&#x524D;&#x8FD8;&#x6CA1;&#x6709;&#x5B9E;&#x73B0;&#x3002;&#x6240;&#x4EE5;&#x5982;&#x679C;&#x4F60;&#x4EEC;&#x516C;&#x53F8;&#x7684; App &#x662F;&#x9700;&#x8981;&#x5728;&#x591A;&#x4E2A;&#x8FDB;&#x7A0B;&#x91CC;&#x8BBF;&#x95EE;&#x952E;&#x503C;&#x5BF9;&#x6570;&#x636E;&#xFF0C;&#x90A3;&#x4E48; MMKV &#x662F;&#x4F60;&#x552F;&#x4E00;&#x7684;&#x9009;&#x62E9;&#x3002;</p>
<h3 id="mmkv-%E5%8A%A3%E5%8A%BF%EF%BC%9A%E4%B8%A2%E6%95%B0%E6%8D%AE">MMKV &#x52A3;&#x52BF;&#xFF1A;&#x4E22;&#x6570;&#x636E;</h3>
<p>&#x9664;&#x4E86;&#x901F;&#x5EA6;&#x5FEB;&#x548C;&#x652F;&#x6301;&#x591A;&#x8FDB;&#x7A0B;&#x8FD9;&#x4E24;&#x4E2A;&#x4F18;&#x52BF;&#x4E4B;&#x5916;&#xFF0C;MMKV &#x4E5F;&#x6709;&#x4E00;&#x4E2A;&#x5F31;&#x70B9;&#xFF1A;&#x5B83;&#x4F1A;&#x4E22;&#x6570;&#x636E;&#x3002;</p>
<p>&#x4EFB;&#x4F55;&#x7684;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x3001;&#x4EFB;&#x4F55;&#x7684;&#x8F6F;&#x4EF6;&#xFF0C;&#x5728;&#x5F80;&#x78C1;&#x76D8;&#x5199;&#x6570;&#x636E;&#x7684;&#x8FC7;&#x7A0B;&#x4E2D;&#x5982;&#x679C;&#x53D1;&#x751F;&#x4E86;&#x610F;&#x5916;&#x2014;&#x2014;&#x4F8B;&#x5982;&#x7A0B;&#x5E8F;&#x5D29;&#x6E83;&#xFF0C;&#x6216;&#x8005;&#x65AD;&#x7535;&#x5173;&#x673A;&#x2014;&#x2014;&#x78C1;&#x76D8;&#x91CC;&#x7684;&#x6587;&#x4EF6;&#x5C31;&#x4F1A;&#x4EE5;&#x8FD9;&#x79CD;&#x5199;&#x4E86;&#x4E00;&#x534A;&#x7684;&#x3001;&#x4E0D;&#x5B8C;&#x6574;&#x7684;&#x5F62;&#x5F0F;&#x88AB;&#x4FDD;&#x7559;&#x3002;&#x5199;&#x4E86;&#x4E00;&#x534A;&#x7684;&#x6570;&#x636E;&#x600E;&#x4E48;&#x7528;&#x554A;&#xFF1F;&#x6CA1;&#x6CD5;&#x7528;&#xFF0C;&#x8FD9;&#x5C31;&#x662F;&#x6587;&#x4EF6;&#x7684;&#x635F;&#x574F;&#x3002;&#x8FD9;&#x79CD;&#x95EE;&#x9898;&#x662F;&#x4E0D;&#x53EF;&#x80FD;&#x907F;&#x514D;&#x7684;&#xFF0C;MMKV &#x867D;&#x7136;&#x7531;&#x4E8E;&#x5E95;&#x5C42;&#x673A;&#x5236;&#x7684;&#x539F;&#x56E0;&#xFF0C;&#x5728;&#x7A0B;&#x5E8F;&#x5D29;&#x6E83;&#x7684;&#x65F6;&#x5019;&#x4E0D;&#x4F1A;&#x5F71;&#x54CD;&#x6570;&#x636E;&#x5F80;&#x78C1;&#x76D8;&#x7684;&#x5199;&#x5165;&#xFF0C;&#x4F46;&#x65AD;&#x7535;&#x5173;&#x673A;&#x4E4B;&#x7C7B;&#x7684;&#x64CD;&#x4F5C;&#x7CFB;&#x7EDF;&#x7EA7;&#x522B;&#x7684;&#x5D29;&#x6E83;&#xFF0C;MMKV &#x5C31;&#x6CA1;&#x529E;&#x6CD5;&#x4E86;&#xFF0C;&#x6587;&#x4EF6;&#x7167;&#x6837;&#x4F1A;&#x635F;&#x574F;&#x3002;&#x5BF9;&#x4E8E;&#x8FD9;&#x79CD;&#x6587;&#x4EF6;&#x635F;&#x574F;&#xFF0C;SharedPreferences &#x548C; DataStore &#x7684;&#x5E94;&#x5BF9;&#x65B9;&#x5F0F;&#x662F;&#x5728;&#x6BCF;&#x6B21;&#x5199;&#x5165;&#x65B0;&#x6570;&#x636E;&#x4E4B;&#x524D;&#x90FD;&#x5BF9;&#x73B0;&#x6709;&#x6587;&#x4EF6;&#x505A;&#x4E00;&#x6B21;&#x81EA;&#x52A8;&#x5907;&#x4EFD;&#xFF0C;&#x8FD9;&#x6837;&#x5728;&#x53D1;&#x751F;&#x4E86;&#x610F;&#x5916;&#x51FA;&#x73B0;&#x4E86;&#x6587;&#x4EF6;&#x635F;&#x574F;&#x4E4B;&#x540E;&#xFF0C;&#x5B83;&#x4EEC;&#x5C31;&#x4F1A;&#x628A;&#x5907;&#x4EFD;&#x7684;&#x6570;&#x636E;&#x6062;&#x590D;&#x8FC7;&#x6765;&#xFF1B;&#x800C; MMKV&#xFF0C;&#x6CA1;&#x6709;&#x8FD9;&#x79CD;&#x81EA;&#x52A8;&#x7684;&#x5907;&#x4EFD;&#x548C;&#x6062;&#x590D;&#xFF0C;&#x90A3;&#x4E48;&#x5F53;&#x6587;&#x4EF6;&#x53D1;&#x751F;&#x4E86;&#x635F;&#x574F;&#xFF0C;&#x6570;&#x636E;&#x5C31;&#x4E22;&#x4E86;&#xFF0C;&#x4E4B;&#x524D;&#x4FDD;&#x5B58;&#x7684;&#x5404;&#x79CD;&#x4FE1;&#x606F;&#x53EA;&#x80FD;&#x88AB;&#x91CD;&#x7F6E;&#x3002;&#x4E5F;&#x5C31;&#x662F;&#x8BF4;&#xFF0C;MMKV &#x662F;&#x552F;&#x4E00;&#x4F1A;&#x4E22;&#x6570;&#x636E;&#x7684;&#x65B9;&#x6848;&#x3002;</p>
<p>&#x53EF;&#x80FD;&#x4F1A;&#x6709;&#x4EBA;&#x597D;&#x5947;&#xFF0C;&#x4E3A;&#x4EC0;&#x4E48; MMKV &#x4E0D;&#x505A;&#x5168;&#x81EA;&#x52A8;&#x7684;&#x5907;&#x4EFD;&#x548C;&#x6062;&#x590D;&#x3002;&#x6211;&#x7684;&#x731C;&#x6D4B;&#x662F;&#x8FD9;&#x6837;&#x7684;&#xFF1A;MMKV &#x5E95;&#x5C42;&#x7684;&#x539F;&#x7406;&#x662F;&#x5185;&#x5B58;&#x6620;&#x5C04;&#xFF0C;&#x800C;&#x5185;&#x5B58;&#x6620;&#x5C04;&#x8FD9;&#x79CD;&#x65B9;&#x5F0F;&#xFF0C;&#x5B83;&#x4ECE;&#x5185;&#x5B58;&#x5F80;&#x78C1;&#x76D8;&#x91CC;&#x540C;&#x6B65;&#x5199;&#x5165;&#x7684;&#x8FC7;&#x7A0B;&#x5E76;&#x4E0D;&#x662F;&#x5B9E;&#x65F6;&#x7684;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x8BF4;&#x5E76;&#x4E0D;&#x662F;&#x6BCF;&#x6B21;&#x6211;&#x4EEC;&#x5199;&#x5165;&#x5230;&#x6620;&#x5C04;&#x7684;&#x5185;&#x5B58;&#x91CC;&#x5C31;&#x4F1A;&#x7ACB;&#x5373;&#x4ECE;&#x8FD9;&#x5757;&#x5185;&#x5B58;&#x5199;&#x5165;&#x5230;&#x78C1;&#x76D8;&#xFF0C;&#x800C;&#x662F;&#x4F1A;&#x6709;&#x4E00;&#x4E9B;&#x6EDE;&#x540E;&#x3002;&#x800C;&#x5982;&#x679C;&#x6211;&#x4EEC;&#x8981;&#x505A;&#x5168;&#x81EA;&#x52A8;&#x7684;&#x5907;&#x4EFD;&#xFF0C;&#x90A3;&#x5C31;&#x9700;&#x8981;&#x6BCF;&#x6B21;&#x5F80;&#x5185;&#x5B58;&#x91CC;&#x5199;&#x5165;&#x4E4B;&#x540E;&#xFF0C;&#x7ACB;&#x5373;&#x624B;&#x52A8;&#x628A;&#x5185;&#x5B58;&#x91CC;&#x6700;&#x65B0;&#x7684;&#x6570;&#x636E;&#x540C;&#x6B65;&#x5230;&#x78C1;&#x76D8;&#x3002;&#x4F46;&#x8FD9;&#x5C31;&#x548C; MMKV &#x7684;&#x5B9A;&#x4F4D;&#x4E0D;&#x7B26;&#x4E86;&#xFF1A;&#x56E0;&#x4E3A;&#x8FD9;&#x79CD;&#x300C;&#x540C;&#x6B65;&#x300D;&#x672C;&#x8D28;&#x4E0A;&#x5C31;&#x662F;&#x4E00;&#x6B21;&#x4ECE;&#x5185;&#x5B58;&#x5230;&#x78C1;&#x76D8;&#x7684;&#x5199;&#x5165;&#xFF0C;&#x5E76;&#x4E14;&#x662F;&#x540C;&#x6B65;&#x7684;&#x5199;&#x5165;&#xFF1B;&#x800C; MMKV &#x662F;&#x8981;&#x9AD8;&#x9891;&#x5199;&#x5165;&#x7684;&#xFF0C;&#x5982;&#x679C;&#x5728;&#x9AD8;&#x9891;&#x5199;&#x5165;&#x5185;&#x5B58;&#x7684;&#x540C;&#x65F6;&#xFF0C;&#x8FD8;&#x8981;&#x5B9E;&#x65F6;&#x5730;&#x628A;&#x6570;&#x636E;&#x4ECE;&#x5185;&#x5B58;&#x540C;&#x6B65;&#x5230;&#x78C1;&#x76D8;&#xFF0C;&#x5C31;&#x4F1A;&#x4E00;&#x4E0B;&#x5B50;&#x628A;&#x5199;&#x5165;&#x901F;&#x5EA6;&#x4ECE;&#x5185;&#x5B58;&#x7EA7;&#x522B;&#x4E0B;&#x964D;&#x5230;&#x78C1;&#x76D8;&#x7EA7;&#x522B;&#xFF0C;MMKV &#x7684;&#x6027;&#x80FD;&#x4F18;&#x52BF;&#x4E5F;&#x5C31;&#x8361;&#x7136;&#x65E0;&#x5B58;&#x4E86;&#x3002;&#x6240;&#x4EE5;&#x4ECE;&#x539F;&#x7406;&#x4E0A;&#xFF0C;&#x81EA;&#x52A8;&#x5907;&#x4EFD;&#x662F;&#x4E2A;&#x5F88;&#x96BE;&#x5B9E;&#x73B0;&#x7684;&#x9700;&#x6C42;&#xFF0C;&#x56E0;&#x4E3A;&#x5B83;&#x548C; MMKV &#x7684;&#x5B9A;&#x4F4D;&#x662F;&#x77DB;&#x76FE;&#x7684;&#x3002;&#x4E0D;&#x8FC7;&#x6B63;&#x597D; MMKV &#x6240;&#x8981;&#x8BB0;&#x5F55;&#x7684;&#x8FD9;&#x4E9B;&#x8981;&#x663E;&#x793A;&#x7684;&#x6587;&#x5B57;&#xFF0C;&#x4E5F;&#x5E76;&#x4E0D;&#x662F;&#x4E0D;&#x80FD;&#x4E22;&#x5931;&#x7684;&#x5185;&#x5BB9;&#x2014;&#x2014;&#x771F;&#x8981;&#x662F;&#x4E22;&#x4E86;&#x5C31;&#x4E22;&#x4E86;&#x5457;&#xFF0C;&#x53CD;&#x6B63;&#x662F;&#x5D29;&#x6E83;&#x65E5;&#x5FD7;&#xFF0C;&#x4E22;&#x4E86;&#x5C31;&#x4E0D;&#x8981;&#x4E86;&#xFF0C;&#x6211;&#x4E0B;&#x6B21;&#x542F;&#x52A8;&#x7A0B;&#x5E8F;&#x4E4B;&#x540E;&#x7EE7;&#x7EED;&#x8BB0;&#x5F55;&#x5C31;&#x662F;&#x4E86;&#x2014;&#x2014;&#x6240;&#x4EE5;&#x65E2;&#x7136;&#x8981;&#x6C42;&#x5FC5;&#x987B;&#x9AD8;&#x9891;&#x5199;&#x5165;&#x800C;&#x5BFC;&#x81F4;&#x5F88;&#x96BE;&#x5B9E;&#x73B0;&#x81EA;&#x52A8;&#x5907;&#x4EFD;&#xFF0C;&#x5E76;&#x4E14;&#x4E5F;&#x786E;&#x5B9E;&#x80FD;&#x63A5;&#x53D7;&#x56E0;&#x4E3A;&#x4E0D;&#x505A;&#x81EA;&#x52A8;&#x5907;&#x4EFD;&#x800C;&#x5BFC;&#x81F4;&#x7684;&#x6570;&#x636E;&#x635F;&#x574F;&#xFF0C;&#x90A3;&#x5C31;&#x5E72;&#x8106;&#x4E0D;&#x505A;&#x81EA;&#x52A8;&#x5907;&#x4EFD;&#x4E86;&#x3002;&#x4E0D;&#x8FC7;&#x8FD9;&#x4E5F;&#x662F;&#x6211;&#x731C;&#x7684;&#x554A;&#xFF0C;&#x5927;&#x5BB6;&#x5982;&#x679C;&#x6709;&#x4E0D;&#x540C;&#x610F;&#x89C1;&#x6B22;&#x8FCE;&#x7559;&#x8A00;&#x8BC4;&#x8BBA;&#x6307;&#x6B63;&#x3002;</p>
<p>&#x6240;&#x4EE5;&#x5982;&#x679C;&#x4F60;&#x8981;&#x7528; MMKV&#xFF0C;&#x4E00;&#x5B9A;&#x8981;&#x8BB0;&#x5F97;&#x53EA;&#x80FD;&#x7528;&#x5B83;&#x6765;&#x5B58;&#x53EF;&#x4EE5;&#x63A5;&#x53D7;&#x4E22;&#x5931;&#x3001;&#x4E0D;&#x90A3;&#x4E48;&#x91CD;&#x8981;&#x7684;&#x6570;&#x636E;&#x3002;&#x6216;&#x8005;&#x4F60;&#x4E5F;&#x53EF;&#x4EE5;&#x9009;&#x62E9;&#x5BF9;&#x6570;&#x636E;&#x8FDB;&#x884C;&#x5B9A;&#x671F;&#x7684;&#x624B;&#x52A8;&#x5907;&#x4EFD;&#x2014;&#x2014;&#x5168;&#x81EA;&#x52A8;&#x7684;&#x5B9E;&#x65F6;&#x5907;&#x4EFD;&#x5E94;&#x8BE5;&#x662F;&#x4F1A;&#x4E25;&#x91CD;&#x5F71;&#x54CD;&#x6027;&#x80FD;&#x7684;&#xFF0C;&#x4E0D;&#x8FC7;&#x6211;&#x6CA1;&#x8BD5;&#x8FC7;&#xFF0C;&#x4F60;&#x5982;&#x679C;&#x6709;&#x5174;&#x8DA3;&#x53EF;&#x4EE5;&#x8BD5;&#x8BD5;&#x3002;&#x53E6;&#x5916;&#x636E;&#x6211;&#x6240;&#x77E5;&#xFF0C;&#x56FD;&#x5185;&#x5728;&#x4F7F;&#x7528; MMKV &#x7684;&#x56E2;&#x961F;&#x91CC;&#xFF0C;&#x51E0;&#x4E4E;&#x6CA1;&#x6709;&#x5BF9; MMKV &#x6570;&#x636E;&#x505A;&#x4E86;&#x5907;&#x4EFD;&#x548C;&#x6062;&#x590D;&#x7684;&#x5904;&#x7406;&#x7684;&#x3002;</p>
<p>&#x90A3;&#x4E48;&#x8BF4;&#x5230;&#x8FD9;&#x91CC;&#xFF0C;&#x5F88;&#x5BB9;&#x6613;&#x5F15;&#x51FA;&#x4E00;&#x4E2A;&#x95EE;&#x9898;&#xFF1A;&#x5FAE;&#x4FE1;&#x81EA;&#x5DF1;&#x5C31;&#x4E0D;&#x6015;&#x4E22;&#x6570;&#x636E;&#x5417;&#xFF1F;&#xFF08;&#x5927;&#x5B57;&#xFF1A;&#x5FAE;&#x4FE1;&#x5C31;&#x4E0D;&#x6015;&#x4E22;&#x6570;&#x636E;&#xFF1F;&#xFF09;&#x5173;&#x4E8E;&#x8FD9;&#x4E00;&#x70B9;&#xFF0C;&#x6211;&#x76F8;&#x4FE1;&#xFF0C;&#x5FAE;&#x4FE1;&#x7EDD;&#x5BF9;&#x4E0D;&#x4F1A;&#x628A;&#x7528;&#x6237;&#x767B;&#x5F55;&#x72B6;&#x6001;&#x76F8;&#x5173;&#x7684;&#x4FE1;&#x606F;&#x7528; MMKV &#x4FDD;&#x5B58;&#x5E76;&#x4E14;&#x4E0D;&#x505A;&#x4EFB;&#x4F55;&#x7684;&#x5907;&#x4EFD;&#xFF0C;&#x56E0;&#x4E3A;&#x8FD9;&#x4E00;&#x5B9A;&#x4F1A;&#x5BFC;&#x81F4;&#x6BCF;&#x5929;&#x90FD;&#x4F1A;&#x6709;&#x4E00;&#x4E9B;&#x7528;&#x6237;&#x5728;&#x65B0;&#x4E00;&#x6B21;&#x6253;&#x5F00;&#x5FAE;&#x4FE1;&#x7684;&#x65F6;&#x5019;&#x53D1;&#x73B0;&#x81EA;&#x5DF1;&#x767B;&#x51FA;&#x4E86;&#x3002;&#x8FD9;&#x4F1A;&#x662F;&#x975E;&#x5E38;&#x5DEE;&#x7684;&#x7528;&#x6237;&#x4F53;&#x9A8C;&#xFF0C;&#x6240;&#x4EE5;&#x5FAE;&#x4FE1;&#x4E00;&#x5B9A;&#x4E0D;&#x4F1A;&#x8BA9;&#x8FD9;&#x79CD;&#x4E8B;&#x53D1;&#x751F;&#x3002;&#x81F3;&#x4E8E;&#x4E00;&#x4E9B;&#x7B80;&#x5355;&#x7684;&#x7528;&#x6237;&#x8BBE;&#x7F6E;&#xFF0C;&#x90A3;&#x6211;&#x5C31;&#x4E0D;&#x6E05;&#x695A;&#x4E86;&#x3002;&#x6BD4;&#x5982;&#x6DF1;&#x8272;&#x4E3B;&#x9898;&#x91CD;&#x8981;&#x5417;&#xFF1F;&#x8FD9;&#x662F;&#x4E2A;&#x4E0D;&#x597D;&#x8BF4;&#x7684;&#x4E8B;&#x60C5;&#xFF1A;&#x67D0;&#x4E2A;&#x7528;&#x6237;&#x5728;&#x6253;&#x5F00;&#x8F6F;&#x4EF6;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x53D1;&#x73B0;&#x81EA;&#x5DF1;&#x4E4B;&#x524D;&#x8BBE;&#x7F6E;&#x7684;&#x6DF1;&#x8272;&#x4E3B;&#x9898;&#x5931;&#x6548;&#x4E86;&#xFF0C;&#x8F6F;&#x4EF6;&#x7A81;&#x7136;&#x53D8;&#x56DE;&#x4E86;&#x4EAE;&#x8272;&#x65B9;&#x6848;&#xFF0C;&#x8FD9;&#x80AF;&#x5B9A;&#x662F;&#x4E0D;&#x8212;&#x670D;&#x7684;&#x4E8B;&#xFF1B;&#x4F46;&#x6211;&#x4EEC;&#x8981;&#x77E5;&#x9053;&#xFF0C;MMKV &#x7684;&#x6587;&#x4EF6;&#x635F;&#x574F;&#x7EC8;&#x5F52;&#x662F;&#x4E2A;&#x6982;&#x7387;&#x6781;&#x4F4E;&#x7684;&#x4E8B;&#x4EF6;&#xFF0C;&#x6240;&#x4EE5;&#x5076;&#x5C14;&#x5730;&#x53D1;&#x751F;&#x4E00;&#x6B21;&#x8FD9;&#x6837;&#x7684;&#x4E8B;&#x4EF6;&#x5728;&#x4EA7;&#x54C1;&#x7684;&#x89D2;&#x5EA6;&#x662F;&#x5426;&#x53EF;&#x4EE5;&#x63A5;&#x53D7;&#xFF0C;&#x90A3;&#x53EF;&#x80FD;&#x662F;&#x9700;&#x8981;&#x4EA7;&#x54C1;&#x56E2;&#x961F;&#x81EA;&#x8EAB;&#x505A;&#x4E00;&#x4E2A;&#x7EFC;&#x5408;&#x8003;&#x91CF;&#x7684;&#x4E8B;&#x4E86;&#x3002;&#x5BF9;&#x4E8E;&#x4E0D;&#x540C;&#x7684;&#x4EA7;&#x54C1;&#x548C;&#x56E2;&#x961F;&#xFF0C;&#x4E5F;&#x8BB8;&#x4E0D;&#x53EF;&#x63A5;&#x53D7;&#xFF0C;&#x4E5F;&#x8BB8;&#x65E0;&#x4F24;&#x5927;&#x96C5;&#x3002;&#x800C;&#x5BF9;&#x4E8E;&#x4F60;&#x6240;&#x5F00;&#x53D1;&#x7684;&#x4EA7;&#x54C1;&#x5E94;&#x8BE5;&#x662F;&#x600E;&#x6837;&#x7684;&#x5224;&#x65AD;&#xFF0C;&#x5C31;&#x5F97;&#x5404;&#x4F4D;&#x81EA;&#x5DF1;&#x548C;&#x56E2;&#x961F;&#x53BB;&#x5546;&#x91CF;&#x4E86;&#x3002;&#x6240;&#x4EE5;&#x50CF;&#x6DF1;&#x8272;&#x4E3B;&#x9898;&#x8FD9;&#x79CD;&#x300C;&#x53EF;&#x4EE5;&#x91CD;&#x8981;&#x4E5F;&#x53EF;&#x4EE5;&#x4E0D;&#x91CD;&#x8981;&#x300D;&#x7684;&#x4FE1;&#x606F;&#xFF0C;&#x7528;&#x4E0D;&#x7528; MMKV &#x4FDD;&#x5B58;&#x3001;&#x7528;&#x7684;&#x65F6;&#x5019;&#x505A;&#x4E0D;&#x505A;&#x5907;&#x4EFD;&#xFF0C;&#x5927;&#x5BB6;&#x9700;&#x8981;&#x81EA;&#x5DF1;&#x53BB;&#x5224;&#x65AD;&#x3002;</p>
<p>&#x603B;&#x4E4B;&#xFF0C;&#x5927;&#x5BB6;&#x8981;&#x77E5;&#x9053;&#x8FD9;&#x4EF6;&#x4E8B;&#xFF1A;MMKV &#x662F;&#x6709;&#x6570;&#x636E;&#x635F;&#x574F;&#x7684;&#x6982;&#x7387;&#x7684;&#xFF0C;&#x8FD9;&#x4E2A;&#x5728; MMKV &#x7684;&#x5B98;&#x65B9;&#x6587;&#x6863;&#x5C31;&#x6709;&#x8BF4;&#x660E;&#xFF1A;MMKV &#x7684; GitHub wiki &#x9875;&#x9762;&#x663E;&#x793A;&#xFF0C;&#x5FAE;&#x4FE1;&#x7684; iOS &#x7248;&#x5E73;&#x5747;&#x6BCF;&#x5929;&#x6709; 70 &#x4E07;&#x6B21;&#x7684;&#x6570;&#x636E;&#x6821;&#x9A8C;&#x4E0D;&#x901A;&#x8FC7;&#xFF08;&#x5373;&#x6570;&#x636E;&#x635F;&#x574F;&#xFF09;&#x3002;&#x8FD9;&#x8FD8;&#x662F; 2020 &#x5E74;&#x7684;&#x6570;&#x636E;&#xFF0C;&#x73B0;&#x5728;&#x53EF;&#x80FD;&#x4F1A;&#x66F4;&#x591A;&#x3002;<br>
<img src="http://image.rengwuxian.com/2022/06/23/c8142350e7164.png" alt="&#x3010;&#x9762;&#x8BD5;&#x9ED1;&#x6D1E;&#x3011;Android &#x7684;&#x952E;&#x503C;&#x5BF9;&#x5B58;&#x50A8;&#x6709;&#x6CA1;&#x6709;&#x6700;&#x4F18;&#x89E3;&#xFF1F;" loading="lazy"></p>
<p>&#x6240;&#x4EE5;&#x6211;&#x4EEC;&#x5728;&#x4F7F;&#x7528; MMKV &#x7684;&#x65F6;&#x5019;&#xFF0C;&#x4E00;&#x5B9A;&#x8981;&#x8003;&#x8651;&#x5230;&#x8FD9;&#x4E2A;&#x95EE;&#x9898;&#xFF0C;&#x4F60;&#x8981;&#x77E5;&#x9053;&#x8FD9;&#x4EF6;&#x4E8B;&#x3002;&#x81F3;&#x4E8E;&#x5177;&#x4F53;&#x7684;&#x5E94;&#x5BF9;&#xFF0C;&#x662F;&#x63A5;&#x53D7;&#x5B83;&#x3001;&#x574F;&#x5C31;&#x574F;&#x4E86;&#xFF0C;&#x8FD8;&#x662F;&#x8981;&#x8BA4;&#x771F;&#x5E94;&#x5BF9;&#x3001;&#x505A;&#x597D;&#x5907;&#x4EFD;&#x548C;&#x6062;&#x590D;&#xFF0C;&#x8FD9;&#x5C31;&#x662F;&#x5927;&#x5BB6;&#x81EA;&#x5DF1;&#x7684;&#x51B3;&#x7B56;&#x4E86;&#x3002;</p>
<h3 id="sharedpreferences-%E7%9A%84%E4%BC%98%E5%8A%BF%EF%BC%9A%E4%B8%8D%E4%B8%A2%E6%95%B0%E6%8D%AE">SharedPreferences &#x7684;&#x4F18;&#x52BF;&#xFF1A;&#x4E0D;&#x4E22;&#x6570;&#x636E;</h3>
<p>&#x597D;&#xFF0C;&#x90A3;&#x4E48;&#x8BF4;&#x5B8C;&#x4E86; MMKV&#xFF0C;&#x6211;&#x6765;&#x8BF4;&#x4E00;&#x4E0B; SharedPreferences&#xFF0C;&#x8FD9;&#x4E2A;&#x6700;&#x4F20;&#x7EDF;&#x7684;&#x65B9;&#x6848;&#x3002;</p>
<p>&#x5B83;&#x6709;&#x4EC0;&#x4E48;&#x4F18;&#x52BF;&#x5462;&#xFF1F;&#x2014;&#x2014;&#x5B83;&#x6CA1;&#x6709;&#x4F18;&#x52BF;&#x3002;&#x8DDF; MMKV &#x6BD4;&#x8D77;&#x6765;&#xFF0C;&#x5B83;&#x4E0D;&#x4F1A;&#x4E22;&#x6570;&#x636E;&#xFF0C;&#x8FD9;&#x4E2A;&#x5012;&#x662F;&#x5B83;&#x6BD4; MMKV &#x5F3A;&#x7684;&#x5730;&#x65B9;&#xFF0C;&#x4F46;&#x662F;&#x6211;&#x89C9;&#x5F97;&#x66F4;&#x5E94;&#x8BE5;&#x5F52;&#x4E3A; MMKV &#x7684;&#x52A3;&#x52BF;&#xFF0C;&#x800C;&#x4E0D;&#x662F; SharedPreferences &#x7684;&#x4F18;&#x52BF;&#xFF0C;&#x56E0;&#x4E3A;&#x53EA;&#x6709; MMKV &#x4F1A;&#x4E22;&#x6570;&#x636E;&#x561B;&#xFF0C;&#x662F;&#x5427;&#xFF1F;</p>
<p>&#x4E0D;&#x8FC7;&#x4E0D;&#x7BA1;&#x662F;&#x8FD9;&#x4E2A;&#x7684;&#x4F18;&#x52BF;&#x8FD8;&#x662F;&#x90A3;&#x4E2A;&#x7684;&#x52A3;&#x52BF;&#xFF0C;&#x5982;&#x679C;&#x4F60;&#x4E0D;&#x5E0C;&#x671B;&#x4E22;&#x6570;&#x636E;&#xFF0C;&#x5E76;&#x4E14;&#x4E5F;&#x4E0D;&#x60F3;&#x82B1;&#x65F6;&#x95F4;&#x53BB;&#x505A;&#x624B;&#x52A8;&#x7684;&#x5907;&#x4EFD;&#x548C;&#x6062;&#x590D;&#xFF0C;&#x540C;&#x65F6;&#x5BF9;&#x4E8E; MMKV &#x7684;&#x8D85;&#x9AD8;&#x5199;&#x5165;&#x6027;&#x80FD;&#x4EE5;&#x53CA;&#x591A;&#x8FDB;&#x7A0B;&#x652F;&#x6301;&#x90FD;&#x6CA1;&#x6709;&#x9700;&#x6C42;&#xFF0C;&#x90A3;&#x4F60;&#x5176;&#x5B9E;&#x66F4;&#x5E94;&#x8BE5;&#x9009;&#x62E9; SharedPreferences&#xFF0C;&#x800C;&#x4E0D;&#x662F; MMKV&#x3002;&#x5BF9;&#x5427;&#xFF1F;</p>
<h3 id="sharedpreferences-%E7%9A%84%E5%8A%A3%E5%8A%BF%EF%BC%9A%E5%8D%A1%E9%A1%BF">SharedPreferences &#x7684;&#x52A3;&#x52BF;&#xFF1A;&#x5361;&#x987F;</h3>
<p>&#x4F46;&#x66F4;&#x8FDB;&#x4E00;&#x6B65;&#x5730;&#x8BF4;&#xFF1A;&#x5982;&#x679C;&#x4F60;&#x9009;&#x62E9;&#x4E86; SharedPreferences&#xFF0C;&#x90A3;&#x4E48;&#x4F60;&#x66F4;&#x5E94;&#x8BE5;&#x8003;&#x8651; DataStore&#x3002;&#x56E0;&#x4E3A; DataStore &#x662F;&#x4E00;&#x4E2A;&#x5B8C;&#x5168;&#x8D85;&#x8D8A;&#x4E86; SharedPreferences &#x7684;&#x5B58;&#x5728;&#x3002;&#x4F60;&#x770B; SharedPreferences &#x548C; MMKV &#x5B83;&#x4FE9;&#x662F;&#x5404;&#x6709;&#x4F18;&#x52A3;&#x5BF9;&#x5427;&#xFF1F;&#x867D;&#x7136; MMKV &#x51E0;&#x4E4E;&#x5B8C;&#x80DC;&#xFF0C;&#x4F46;&#x662F;&#x6BD5;&#x7ADF; SharedPreferences &#x4E0D;&#x4F1A;&#x4E22;&#x6570;&#x636E;&#x5440;&#xFF0C;&#x6240;&#x4EE5;&#x5B83;&#x4FE9;&#x662F;&#x5404;&#x6709;&#x4F18;&#x52A3;&#x7684;&#x3002;&#x4F46;&#x5F53; DataStore &#x548C; SharedPreferences &#x6BD4;&#x8D77;&#x6765;&#xFF0C;&#x90A3;&#x5C31;&#x662F; DataStore &#x5B8C;&#x80DC;&#x4E86;&#x3002;&#x8FD9;&#x5176;&#x5B9E;&#x4E5F;&#x5F88;&#x5408;&#x7406;&#xFF0C;&#x56E0;&#x4E3A; DataStore &#x88AB;&#x521B;&#x9020;&#x51FA;&#x6765;&#xFF0C;&#x5C31;&#x662F;&#x7528;&#x4E8E;&#x66FF;&#x4EE3;&#x6389; SharedPreferences &#x7684;&#xFF1B;&#x800C; MMKV &#x4E0D;&#x4E00;&#x6837;&#xFF0C;&#x5B83;&#x7684;&#x8BDE;&#x751F;&#x6709;&#x5B83;&#x72EC;&#x7279;&#x7684;&#x4F7F;&#x547D;&#xFF0C;&#x5B83;&#x662F;&#x4E3A;&#x4E86;&#x300C;&#x9AD8;&#x9891;&#x540C;&#x6B65;&#x5199;&#x5165;&#x300D;&#x800C;&#x8BDE;&#x751F;&#x7684;&#xFF0C;&#x6240;&#x4EE5;&#x4E0D;&#x80FD;&#x5168;&#x89D2;&#x5EA6;&#x80DC;&#x8FC7; SharedPreferences &#x4E5F;&#x5F88;&#x6B63;&#x5E38;&#x3002;</p>
<p>&#x6211;&#x4EEC;&#x8FD8;&#x8BF4;&#x56DE; DataStore&#x3002;DataStore &#x88AB;&#x521B;&#x9020;&#x51FA;&#x6765;&#x7684;&#x76EE;&#x6807;&#x5C31;&#x662F;&#x66FF;&#x4EE3; SharedPreferences&#xFF0C;&#x800C;&#x5B83;&#x89E3;&#x51B3;&#x7684; SharedPreferences &#x6700;&#x5927;&#x7684;&#x95EE;&#x9898;&#x6709;&#x4E24;&#x70B9;&#xFF1A;&#x4E00;&#x662F;&#x6027;&#x80FD;&#x95EE;&#x9898;&#xFF0C;&#x4E8C;&#x662F;&#x56DE;&#x8C03;&#x95EE;&#x9898;&#x3002;</p>
<p>&#x5148;&#x8BF4;&#x6027;&#x80FD;&#x95EE;&#x9898;&#xFF1A;SharedPreferences &#x867D;&#x7136;&#x53EF;&#x4EE5;&#x7528;&#x5F02;&#x6B65;&#x7684;&#x65B9;&#x5F0F;&#x6765;&#x4FDD;&#x5B58;&#x66F4;&#x6539;&#xFF0C;&#x4EE5;&#x6B64;&#x6765;&#x907F;&#x514D; I/O &#x64CD;&#x4F5C;&#x6240;&#x5BFC;&#x81F4;&#x7684;&#x4E3B;&#x7EBF;&#x7A0B;&#x7684;&#x8017;&#x65F6;&#xFF1B;&#x4F46;&#x5728; Activity &#x542F;&#x52A8;&#x548C;&#x5173;&#x95ED;&#x7684;&#x65F6;&#x5019;&#xFF0C;Activity &#x4F1A;&#x7B49;&#x5F85;&#x8FD9;&#x4E9B;&#x5F02;&#x6B65;&#x63D0;&#x4EA4;&#x5B8C;&#x6210;&#x4FDD;&#x5B58;&#x4E4B;&#x540E;&#x518D;&#x7EE7;&#x7EED;&#xFF0C;&#x8FD9;&#x5C31;&#x76F8;&#x5F53;&#x4E8E;&#x628A;&#x5F02;&#x6B65;&#x64CD;&#x4F5C;&#x8F6C;&#x6362;&#x6210;&#x540C;&#x6B65;&#x64CD;&#x4F5C;&#x4E86;&#xFF0C;&#x4ECE;&#x800C;&#x4F1A;&#x5BFC;&#x81F4;&#x5361;&#x987F;&#x751A;&#x81F3; ANR&#xFF08;&#x7A0B;&#x5E8F;&#x672A;&#x54CD;&#x5E94;&#xFF09;&#x3002;&#x8FD9;&#x662F;&#x4E3A;&#x4E86;&#x4FDD;&#x8BC1;&#x6570;&#x636E;&#x7684;&#x4E00;&#x81F4;&#x6027;&#x800C;&#x4E0D;&#x5F97;&#x4E0D;&#x505A;&#x7684;&#x51B3;&#x5B9A;&#xFF0C;&#x4F46;&#x5B83;&#x4E5F;&#x786E;&#x5B9E;&#x6210;&#x4E3A;&#x4E86; SharedPreferences &#x7684;&#x4E00;&#x4E2A;&#x5F31;&#x70B9;&#x3002;&#x800C; MMKV &#x548C; DataStore &#x7528;&#x4E0D;&#x540C;&#x7684;&#x65B9;&#x5F0F;&#x5404;&#x81EA;&#x90FD;&#x89E3;&#x51B3;&#x4E86;&#x8FD9;&#x4E2A;&#x95EE;&#x9898;&#x2014;&#x2014;&#x4E8B;&#x5B9E;&#x4E0A;&#xFF0C;&#x5F53;&#x521D; MMKV &#x88AB;&#x516C;&#x5E03;&#x7684;&#x65F6;&#x5019;&#x4E4B;&#x6240;&#x4EE5;&#x5728;&#x4E1A;&#x754C;&#x6709;&#x76F8;&#x5F53;&#x5927;&#x7684;&#x53CD;&#x5E94;&#xFF0C;&#x5C31;&#x662F;&#x56E0;&#x4E3A;&#x5B83;&#x89E3;&#x51B3;&#x4E86; SharedPreferences &#x7684;&#x5361;&#x987F;&#x548C; ANR &#x7684;&#x95EE;&#x9898;&#x3002;</p>
<p>&#x4E0D;&#x8FC7;&#x6709;&#x4E00;&#x70B9;&#x6211;&#x7684;&#x89C2;&#x70B9;&#x53EF;&#x80FD;&#x548C;&#x4E00;&#x4E9B;&#x4EBA;&#x4E0D;&#x540C;&#xFF1A;SharedPreferences &#x6240;&#x5BFC;&#x81F4;&#x7684;&#x5361;&#x987F;&#x548C; ANR&#xFF0C;&#x5176;&#x5B9E;&#x5E76;&#x4E0D;&#x662F;&#x4E2A;&#x5F88;&#x5927;&#x7684;&#x95EE;&#x9898;&#x3002;&#x5B83;&#x548C; MMKV &#x7684;&#x6570;&#x636E;&#x635F;&#x574F;&#x4E00;&#x6837;&#xFF0C;&#x90FD;&#x662F;&#x975E;&#x5E38;&#x4F4E;&#x6982;&#x7387;&#x7684;&#x4E8B;&#x4EF6;&#x3002;&#x5B83;&#x4FE9;&#x6700;&#x5927;&#x7684;&#x533A;&#x522B;&#x5728;&#x4E8E;&#x5176;&#x5B9E;&#x662F;&#x653F;&#x6CBB;&#x4E0A;&#x7684;&#xFF1A;SharedPreferences &#x7684;&#x5361;&#x987F;&#x5F88;&#x5BB9;&#x6613;&#x88AB;&#x5927;&#x516C;&#x53F8;&#x7684;&#x6027;&#x80FD;&#x5206;&#x6790;&#x540E;&#x53F0;&#x76D1;&#x6D4B;&#x5230;&#xFF0C;&#x6240;&#x4EE5;&#x4E0D;&#x89E3;&#x51B3;&#x7684;&#x8BDD;&#x4F1A;&#x6263;&#x7EE9;&#x6548;&#xFF0C;&#x800C;&#x89E3;&#x51B3;&#x6389;&#x5B83;&#x4F1A;&#x63D0;&#x5347;&#x7EE9;&#x6548;&#xFF1B;&#x800C; MMKV &#x7684;&#x6570;&#x636E;&#x635F;&#x574F;&#x662F;&#x65E0;&#x6CD5;&#x88AB;&#x76D1;&#x6D4B;&#x5230;&#x7684;&#xFF0C;&#x6240;&#x4EE5;&#x2026;&#x2026;&#x54C8;&#xFF1F;&#x4E8B;&#x5B9E;&#x4E0A;&#xFF0C;&#x5927;&#x5BB6;&#x60F3;&#x4E00;&#x4E0B;&#xFF1A;&#x5361;&#x987F;&#x548C;&#x6570;&#x636E;&#x635F;&#x574F;&#xFF0C;&#x54EA;&#x4E2A;&#x66F4;&#x4E25;&#x91CD;&#xFF1F;&#x5F53;&#x7136;&#x662F;&#x6570;&#x636E;&#x635F;&#x574F;&#x4E86;&#xFF0C;&#x5BF9;&#x5427;&#x3002;</p>
<p>&#x5176;&#x5B9E;&#x9664;&#x4E86;&#x5199;&#x6570;&#x636E;&#x65F6;&#x7684;&#x5361;&#x987F;&#xFF0C;SharedPreferences &#x5728;&#x8BFB;&#x53D6;&#x6570;&#x636E;&#x7684;&#x65F6;&#x5019;&#x4E5F;&#x4F1A;&#x5361;&#x987F;&#x3002;&#x867D;&#x7136;&#x5B83;&#x7684;&#x6587;&#x4EF6;&#x52A0;&#x8F7D;&#x8FC7;&#x7A0B;&#x662F;&#x5728;&#x540E;&#x53F0;&#x8FDB;&#x884C;&#x7684;&#xFF0C;&#x4F46;&#x5982;&#x679C;&#x4EE3;&#x7801;&#x5728;&#x5B83;&#x52A0;&#x8F7D;&#x5B8C;&#x6210;&#x4E4B;&#x524D;&#x5C31;&#x53BB;&#x5C1D;&#x8BD5;&#x8BFB;&#x53D6;&#x952E;&#x503C;&#x5BF9;&#xFF0C;&#x7EBF;&#x7A0B;&#x5C31;&#x4F1A;&#x88AB;&#x5361;&#x4F4F;&#xFF0C;&#x76F4;&#x5230;&#x6587;&#x4EF6;&#x52A0;&#x8F7D;&#x5B8C;&#x6210;&#xFF0C;&#x800C;&#x5982;&#x679C;&#x8FD9;&#x4E2A;&#x8BFB;&#x53D6;&#x7684;&#x8FC7;&#x7A0B;&#x53D1;&#x751F;&#x5728;&#x4E3B;&#x7EBF;&#x7A0B;&#xFF0C;&#x5C31;&#x4F1A;&#x9020;&#x6210;&#x754C;&#x9762;&#x5361;&#x987F;&#xFF0C;&#x5E76;&#x4E14;&#x6570;&#x636E;&#x6587;&#x4EF6;&#x8D8A;&#x5927;&#x5C31;&#x4F1A;&#x8D8A;&#x5361;&#x3002;&#x8FD9;&#x79CD;&#x5361;&#x987F;&#xFF0C;&#x4E0D;&#x662F; SharedPreferences &#x72EC;&#x6709;&#x7684;&#xFF0C;MMKV &#x4E5F;&#x662F;&#x5B58;&#x5728;&#x7684;&#xFF0C;&#x56E0;&#x4E3A;&#x5B83;&#x521D;&#x59CB;&#x5316;&#x7684;&#x8FC7;&#x7A0B;&#x540C;&#x6837;&#x4E5F;&#x662F;&#x4ECE;&#x78C1;&#x76D8;&#x91CC;&#x8BFB;&#x53D6;&#x6587;&#x4EF6;&#xFF0C;&#x800C;&#x4E14;&#x662F;&#x4E00;&#x80A1;&#x8111;&#x628A;&#x6574;&#x4E2A;&#x6587;&#x4EF6;&#x8BFB;&#x5B8C;&#xFF0C;&#x6240;&#x4EE5;&#x8017;&#x65F6;&#x5E76;&#x4E0D;&#x4F1A;&#x6BD4; SharedPreferences &#x5C11;&#x3002;&#x800C; DataStore&#xFF0C;&#x5C31;&#x6CA1;&#x6709;&#x8FD9;&#x79CD;&#x95EE;&#x9898;&#x3002;DataStore &#x4E0D;&#x7BA1;&#x662F;&#x8BFB;&#x6587;&#x4EF6;&#x8FD8;&#x662F;&#x5199;&#x6587;&#x4EF6;&#xFF0C;&#x90FD;&#x662F;&#x7528;&#x7684;&#x534F;&#x7A0B;&#x5728;&#x540E;&#x53F0;&#x8FDB;&#x884C;&#x8BFB;&#x5199;&#xFF0C;&#x6240;&#x6709;&#x7684; I/O &#x64CD;&#x4F5C;&#x90FD;&#x662F;&#x5728;&#x540E;&#x53F0;&#x7EBF;&#x7A0B;&#x53D1;&#x751F;&#x7684;&#xFF0C;&#x6240;&#x4EE5;&#x4E0D;&#x8BBA;&#x8BFB;&#x8FD8;&#x662F;&#x5199;&#xFF0C;&#x90FD;&#x4E0D;&#x4F1A;&#x5361;&#x4E3B;&#x7EBF;&#x7A0B;&#x3002;</p>
<p>&#x7B80;&#x5355;&#x6765;&#x8BF4;&#xFF0C;SharedPreferences &#x4F1A;&#x6709;&#x5361;&#x987F;&#x7684;&#x95EE;&#x9898;&#xFF0C;&#x8FD9;&#x4E2A;&#x95EE;&#x9898; MMKV &#x89E3;&#x51B3;&#x4E86;&#x4E00;&#x90E8;&#x5206;&#xFF08;&#x5199;&#x65F6;&#x7684;&#x5361;&#x987F;&#xFF09;&#xFF0C;&#x800C; DataStore &#x5B8C;&#x5168;&#x89E3;&#x51B3;&#x4E86;&#x3002;&#x6240;&#x4EE5;&#x5982;&#x679C;&#x4F60;&#x7684;&#x76EE;&#x6807;&#x5728;&#x4E8E;&#x5168;&#x65B9;&#x4F4D;&#x7684;&#x6027;&#x80FD;&#xFF0C;&#x90A3;&#x4E48;&#x4F60;&#x5E94;&#x8BE5;&#x8003;&#x8651;&#x7684;&#x662F; DataStore&#xFF0C;&#x56E0;&#x4E3A;&#x5B83;&#x662F;&#x552F;&#x4E00;&#x5B8C;&#x5168;&#x4E0D;&#x4F1A;&#x5361;&#x987F;&#x7684;&#x3002;</p>
<h3 id="sharedpreferences-%E7%9A%84%E5%8A%A3%E5%8A%BF%EF%BC%9A%E5%9B%9E%E8%B0%83">SharedPreferences &#x7684;&#x52A3;&#x52BF;&#xFF1A;&#x56DE;&#x8C03;</h3>
<p>DataStore &#x89E3;&#x51B3;&#x7684; SharedPreferences &#x7684;&#x53E6;&#x4E00;&#x4E2A;&#x95EE;&#x9898;&#x5C31;&#x662F;&#x56DE;&#x8C03;&#x3002;SharedPreferences &#x5982;&#x679C;&#x4F7F;&#x7528;&#x540C;&#x6B65;&#x65B9;&#x5F0F;&#x6765;&#x4FDD;&#x5B58;&#x66F4;&#x6539;&#xFF08;<code>commit()</code>)&#xFF0C;&#x4F1A;&#x5BFC;&#x81F4;&#x4E3B;&#x7EBF;&#x7A0B;&#x7684;&#x8017;&#x65F6;&#xFF1B;&#x4F46;&#x5982;&#x679C;&#x4F7F;&#x7528;&#x5F02;&#x6B65;&#x7684;&#x65B9;&#x5F0F;&#xFF0C;&#x7ED9;&#x5B83;&#x52A0;&#x56DE;&#x8C03;&#x53C8;&#x5F88;&#x4E0D;&#x65B9;&#x4FBF;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x5982;&#x679C;&#x4F60;&#x60F3;&#x505A;&#x4E00;&#x4E9B;&#x300C;&#x7B49;&#x8FD9;&#x4E2A;&#x5F02;&#x6B65;&#x63D0;&#x4EA4;&#x5B8C;&#x6210;&#x4E4B;&#x540E;&#x518D;&#x600E;&#x4E48;&#x600E;&#x4E48;&#x6837;&#x300D;&#x7684;&#x5DE5;&#x4F5C;&#xFF0C;&#x4F1A;&#x5F88;&#x9EBB;&#x70E6;&#x3002;</p>
<p>&#x800C; DataStore &#x7531;&#x4E8E;&#x662F;&#x7528;&#x534F;&#x7A0B;&#x6765;&#x505A;&#x7684;&#xFF0C;&#x7EBF;&#x7A0B;&#x7684;&#x5207;&#x6362;&#x662F;&#x975E;&#x5E38;&#x7B80;&#x5355;&#x7684;&#xFF0C;&#x4F60;&#x5C31;&#x628A;&#x300C;&#x4FDD;&#x5B58;&#x5B8C;&#x6210;&#x4E4B;&#x540E;&#x505A;&#x4EC0;&#x4E48;&#x300D;&#x76F4;&#x63A5;&#x5199;&#x5728;&#x4FDD;&#x5B58;&#x4EE3;&#x7801;&#x7684;&#x4E0B;&#x65B9;&#x5C31;&#x53EF;&#x4EE5;&#x4E86;&#xFF0C;&#x5F88;&#x76F4;&#x89C2;&#x3001;&#x5F88;&#x7B80;&#x5355;&#x3002;</p>
<p>&#x5BF9;&#x6BD4;&#x6765;&#x8BF4;&#xFF0C;MMKV &#x867D;&#x7136;&#x6CA1;&#x6709;&#x4F7F;&#x7528;&#x534F;&#x7A0B;&#xFF0C;&#x4F46;&#x662F;&#x5B83;&#x592A;&#x5FEB;&#x4E86;&#xFF0C;&#x6240;&#x4EE5;&#x5927;&#x591A;&#x6570;&#x65F6;&#x5019;&#x5E76;&#x4E0D;&#x9700;&#x8981;&#x5207;&#x7EBF;&#x7A0B;&#x4E5F;&#x4E0D;&#x4F1A;&#x5361;&#x987F;&#x3002;&#x603B;&#x4E4B;&#xFF0C;&#x5728;&#x8FD9;&#x4EF6;&#x4E8B;&#x4E0A;&#xFF0C;&#x53EA;&#x6709; SharedPreferences &#x6700;&#x5F31;&#x3002;</p>
<h2 id="%E6%80%BB%E7%BB%93">&#x603B;&#x7ED3;</h2>
<p>&#x533A;&#x522B;&#x5927;&#x6982;&#x5C31;&#x662F;&#x8FD9;&#x4E48;&#x4E9B;&#x533A;&#x522B;&#x4E86;&#xFF0C;&#x5927;&#x81F4;&#x603B;&#x7ED3;&#x4E00;&#x4E0B;&#x5C31;&#x662F;&#xFF1A;</p>
<p>&#x5982;&#x679C;&#x4F60;&#x6709;&#x591A;&#x8FDB;&#x7A0B;&#x652F;&#x6301;&#x7684;&#x9700;&#x6C42;&#xFF0C;MMKV &#x662F;&#x4F60;&#x552F;&#x4E00;&#x7684;&#x9009;&#x62E9;&#xFF1B;&#x5982;&#x679C;&#x4F60;&#x6709;&#x9AD8;&#x9891;&#x5199;&#x5165;&#x7684;&#x9700;&#x6C42;&#xFF0C;&#x4F60;&#x4E5F;&#x5E94;&#x8BE5;&#x4F18;&#x5148;&#x8003;&#x8651; MMKV&#x3002;&#x4F46;&#x5982;&#x679C;&#x4F60;&#x4F7F;&#x7528; MMKV&#xFF0C;&#x4E00;&#x5B9A;&#x8981;&#x77E5;&#x9053;&#x5B83;&#x662F;&#x53EF;&#x80FD;&#x4E22;&#x5931;&#x6570;&#x636E;&#x7684;&#xFF0C;&#x4E0D;&#x8FC7;&#x6982;&#x7387;&#x5F88;&#x4F4E;&#x5C31;&#x662F;&#x4E86;&#xFF0C;&#x6240;&#x4EE5;&#x4F60;&#x8981;&#x5728;&#x6743;&#x8861;&#x4E4B;&#x540E;&#x505A;&#x597D;&#x51B3;&#x5B9A;&#xFF1A;&#x662F;&#x81EA;&#x884C;&#x5B9E;&#x73B0;&#x6570;&#x636E;&#x7684;&#x5907;&#x4EFD;&#x548C;&#x6062;&#x590D;&#x65B9;&#x6848;&#xFF0C;&#x8FD8;&#x662F;&#x76F4;&#x63A5;&#x63A5;&#x53D7;&#x4E22;&#x6570;&#x636E;&#x7684;&#x4E8B;&#x5B9E;&#xFF0C;&#x5728;&#x6BCF;&#x6B21;&#x4E22;&#x5931;&#x6570;&#x636E;&#x4E4B;&#x540E;&#x5E2E;&#x7528;&#x6237;&#x628A;&#x76F8;&#x5E94;&#x7684;&#x6570;&#x636E;&#x8FDB;&#x884C;&#x521D;&#x59CB;&#x5316;&#x3002;&#x5F53;&#x7136;&#x4E86;&#xFF0C;&#x4E00;&#x4E2A;&#x6700;&#x9E21;&#x8D3C;&#x7684;&#x505A;&#x6CD5;&#x662F;&#xFF1A;&#x53CD;&#x6B63;&#x6570;&#x636E;&#x76D1;&#x6D4B;&#x4E0D;&#x4F1A;&#x76D1;&#x6D4B;&#x5230; MMKV &#x7684;&#x6570;&#x636E;&#x4E22;&#x5931;&#xFF0C;&#x53C8;&#x4E0D;&#x5F71;&#x54CD;&#x7EE9;&#x6548;&#xFF0C;&#x90A3;&#x5C31;&#x4E0D;&#x7BA1;&#x5B83;&#x5457;&#xFF01;&#x4E0D;&#x8FC7;&#x6211;&#x4E2A;&#x4EBA;&#x662F;&#x4E0D;&#x592A;&#x8D5E;&#x540C;&#x8FD9;&#x79CD;&#x7B56;&#x7565;&#x7684;&#xFF0C;&#x6709;&#x70B9;&#x4E0D;&#x8D1F;&#x8D23;&#x54C8;&#x3002;</p>
<p>&#x53E6;&#x5916;&#xFF0C;&#x5982;&#x679C;&#x4F60;&#x6CA1;&#x6709;&#x591A;&#x8FDB;&#x7A0B;&#x7684;&#x9700;&#x6C42;&#xFF0C;&#x4E5F;&#x6CA1;&#x6709;&#x9AD8;&#x9891;&#x5199;&#x5165;&#x7684;&#x9700;&#x6C42;&#xFF0C;DataStore &#x4F5C;&#x4E3A;&#x6027;&#x80FD;&#x6700;&#x5B8C;&#x7F8E;&#x7684;&#x65B9;&#x6848;&#xFF0C;&#x5E94;&#x8BE5;&#x4F18;&#x5148;&#x88AB;&#x8003;&#x8651;&#x3002;&#x56E0;&#x4E3A;&#x5B83;&#x5728;&#x4EFB;&#x4F55;&#x65F6;&#x5019;&#x90FD;&#x4E0D;&#x4F1A;&#x5361;&#x987F;&#xFF0C;&#x800C; MMKV &#x5728;&#x5199;&#x5927;&#x5B57;&#x7B26;&#x4E32;&#x548C;&#x521D;&#x6B21;&#x52A0;&#x8F7D;&#x6587;&#x4EF6;&#x7684;&#x65F6;&#x5019;&#x662F;&#x53EF;&#x80FD;&#x4F1A;&#x5361;&#x987F;&#x7684;&#xFF0C;&#x800C;&#x4E14;&#x521D;&#x6B21;&#x52A0;&#x8F7D;&#x6587;&#x4EF6;&#x7684;&#x5361;&#x987F;&#x4E0D;&#x662F;&#x6982;&#x7387;&#x6027;&#x7684;&#xFF0C;&#x53EA;&#x8981;&#x6587;&#x4EF6;&#x5927;&#x5230;&#x4E86;&#x5F15;&#x8D77;&#x5361;&#x987F;&#x7684;&#x7A0B;&#x5EA6;&#xFF0C;&#x5C31;&#x662F; 100% &#x7684;&#x5361;&#x987F;&#x3002;&#x4E0D;&#x8FC7;&#x5982;&#x679C;&#x4F60;&#x7684;&#x56E2;&#x961F;&#x6CA1;&#x6709;&#x5728;&#x7528;&#x534F;&#x7A0B;&#xFF0C;&#x751A;&#x81F3;&#x6CA1;&#x6709;&#x5728;&#x7528; Kotlin&#xFF0C;&#x90A3; DataStore &#x4E5F;&#x6682;&#x65F6;&#x4E0D;&#x9002;&#x5408;&#x4F60;&#x4EEC;&#xFF0C;&#x56E0;&#x4E3A;&#x5B83;&#x662F;&#x5B8C;&#x5168;&#x4F9D;&#x8D56; Kotlin &#x534F;&#x7A0B;&#x6765;&#x5B9E;&#x73B0;&#x548C;&#x4F7F;&#x7528;&#x7684;&#x3002;</p>
<p>&#x54E6;&#x5BF9;&#x4E86;&#xFF0C;&#x5176;&#x5B9E;&#x6211;&#x4ECA;&#x5929;&#x8BF4;&#x7684; DataStore &#x53EA;&#x662F;&#x9762;&#x5411;&#x7B80;&#x5355;&#x952E;&#x503C;&#x5BF9;&#x5B58;&#x50A8;&#x7684; DataStore &#x65B9;&#x6848;&#xFF0C;&#x5B83;&#x7684;&#x5168;&#x79F0;&#x53EB; Preferences DataStore&#xFF0C;&#x800C; DataStore &#x8FD8;&#x6709;&#x7528;&#x4E8E;&#x4FDD;&#x5B58;&#x7ED3;&#x6784;&#x5316;&#x6570;&#x636E;&#x7684;&#x65B9;&#x6848;&#xFF0C;&#x53EB;&#x505A; Proto DataStore&#xFF0C;&#x5B83;&#x5185;&#x90E8;&#x7528;&#x7684;&#x662F; Protocol Buffer &#x4F5C;&#x4E3A;&#x6570;&#x636E;&#x7ED3;&#x6784;&#x7684;&#x652F;&#x6301;&#x3002;&#x4F46;&#x662F;&#x8FD9;&#x4E2A;&#x6709;&#x70B9;&#x8DD1;&#x9898;&#xFF0C;&#x6211;&#x5C31;&#x4E0D;&#x5C55;&#x5F00;&#x4E86;&#x3002;</p>
<p>&#x81F3;&#x4E8E; SharedPreferences &#x561B;&#xFF0C;&#x5728;&#x8FD9;&#x4E2A;&#x65F6;&#x4EE3;&#xFF0C;&#x5B83;&#x771F;&#x7684;&#x53EF;&#x4EE5;&#x88AB;&#x653E;&#x5F03;&#x4E86;&#x3002;&#x9664;&#x975E;&#x2014;&#x2014;&#x50CF;&#x6211;&#x521A;&#x8BF4;&#x7684;&#x2014;&#x2014;&#x5982;&#x679C;&#x4F60;&#x4EEC;&#x8FD8;&#x6CA1;&#x5728;&#x7528;&#x534F;&#x7A0B;&#xFF0C;&#x90A3; SharedPreferences &#x53EF;&#x80FD;&#x8FD8;&#x80FD;&#x82DF;&#x5EF6;&#x6B8B;&#x5598;&#x4E00;&#x4E0B;&#x3002;</p>
<p>&#x4ECA;&#x5929;&#x7684;&#x5185;&#x5BB9;&#x5C31;&#x662F;&#x8FD9;&#x4E9B;&#x4E86;&#x3002;&#x5982;&#x679C;&#x4F60;&#x559C;&#x6B22;&#x6211;&#x7684;&#x5185;&#x5BB9;&#xFF0C;&#x8FD8;&#x8BF7;&#x591A;&#x591A;&#x70B9;&#x8D5E;&#x8F6C;&#x53D1;&#x6536;&#x85CF;&#x5206;&#x4EAB;&#xFF0C;&#x4EE5;&#x540E;&#x6211;&#x4F1A;&#x8BB2;&#x66F4;&#x591A;&#x548C; Android &#x5F00;&#x53D1;&#x76F8;&#x5173;&#x7684;&#x6709;&#x8DA3;&#x3001;&#x6709;&#x7528;&#x7684;&#x5206;&#x4EAB;&#x3002;&#x5173;&#x6CE8;&#x6211;&#xFF0C;&#x4E0D;&#x9519;&#x8FC7;&#x6211;&#x7684;&#x4EFB;&#x4F55;&#x65B0;&#x5185;&#x5BB9;&#x3002;&#x6211;&#x662F;&#x6254;&#x7269;&#x7EBF;&#xFF0C;&#x6211;&#x4E0D;&#x548C;&#x4F60;&#x6BD4;&#x9AD8;&#x4F4E;&#xFF0C;&#x6211;&#x53EA;&#x52A9;&#x4F60;&#x6210;&#x957F;&#x3002;&#x6211;&#x4EEC;&#x4E0B;&#x671F;&#x89C1;&#x3002;</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[属性动画为什么不能移植到 Jetpack Compose？]]></title><description><![CDATA[照搬过去不香么？香，但不搬更香。]]></description><link>https://rengwuxian.com/jetpack-compose-animation/</link><guid isPermaLink="false">625941b350ce1e03499cc765</guid><category><![CDATA[Compose]]></category><dc:creator><![CDATA[扔物线]]></dc:creator><pubDate>Fri, 15 Apr 2022 12:02:14 GMT</pubDate><media:content url="https://rengwuxian.com/content/images/2022/04/-----Compose---.jpeg" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h2 id="%E8%A7%86%E9%A2%91%E5%85%88%E8%A1%8C">&#x89C6;&#x9891;&#x5148;&#x884C;</h2>
<iframe width="100%" height="480" src="//player.bilibili.com/player.html?bvid=BV1NZ4y1m7tL&amp;page=1&amp;high_quality=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>
<blockquote>
<img src="https://rengwuxian.com/content/images/2022/04/-----Compose---.jpeg" alt="&#x5C5E;&#x6027;&#x52A8;&#x753B;&#x4E3A;&#x4EC0;&#x4E48;&#x4E0D;&#x80FD;&#x79FB;&#x690D;&#x5230; Jetpack Compose&#xFF1F;"><p>&#x4E0B;&#x9762;&#x662F;&#x89C6;&#x9891;&#x5185;&#x5BB9;&#x7684;&#x811A;&#x672C;&#x6574;&#x7406;&#x7A3F;&#x3002;&#x5982;&#x679C;&#x4F60;&#x770B;&#x4E86;&#x89C6;&#x9891;&#xFF0C;&#x90A3;&#x4E0B;&#x9762;&#x7684;&#x6587;&#x7A3F;&#x5C31;&#x4E0D;&#x7528;&#x770B;&#x4E86;&#xFF0C;&#x76F4;&#x63A5;&#x7FFB;&#x5230;&#x5E95;&#x90E8;&#x8BC4;&#x8BBA;&#x533A;&#x5427;&#x3002;</p>
</blockquote>
<h2 id="%E6%96%87%E5%AD%97%E7%89%88">&#x6587;&#x5B57;&#x7248;</h2>
<p>&#x5C5E;&#x6027;&#x52A8;&#x753B;&#x600E;&#x4E48;&#x5199;&#xFF1F;</p>
<p>&#x7B80;&#x5355;&#xFF0C;&#x5148;&#x62FF;&#x5230; <code>View</code> &#x7684;&#x5BF9;&#x8C61;&#xFF0C;&#x518D;&#x521B;&#x5EFA;&#x4E00;&#x4E2A;&#x9488;&#x5BF9;&#x5B83;&#x7684;&#x5C5E;&#x6027;&#x7684; <code>ObjectAnimator</code>&#xFF0C;&#x7136;&#x540E;&#x8C03;&#x7528; <code>animator</code> &#x7684; <code>start()</code> &#x51FD;&#x6570;&#xFF0C;&#x5C31;&#x53EF;&#x4EE5;&#x64AD;&#x653E;&#x52A8;&#x753B;&#x4E86;&#xFF1A;</p>
<p><img src="http://image.rengwuxian.com/2022/04/15/671cd1d8b6668.gif" alt="&#x5C5E;&#x6027;&#x52A8;&#x753B;&#x4E3A;&#x4EC0;&#x4E48;&#x4E0D;&#x80FD;&#x79FB;&#x690D;&#x5230; Jetpack Compose&#xFF1F;" loading="lazy"></p>
<p>&#x6211;&#x4EEC;&#x8FD8;&#x53EF;&#x4EE5;&#x7528; <code>reverse()</code> &#x51FD;&#x6570;&#x6765;&#x53CD;&#x5411;&#x64AD;&#x653E;&#x52A8;&#x753B;&#xFF1A;</p>
<p><img src="http://image.rengwuxian.com/2022/04/15/b198a02dfbea5.gif" alt="&#x5C5E;&#x6027;&#x52A8;&#x753B;&#x4E3A;&#x4EC0;&#x4E48;&#x4E0D;&#x80FD;&#x79FB;&#x690D;&#x5230; Jetpack Compose&#xFF1F;" loading="lazy"></p>
<p>&#x5F88;&#x7B80;&#x5355;&#xFF0C;&#x5F88;&#x65B9;&#x4FBF;&#x3002;</p>
<p>&#x800C; Compose &#x7684;&#x52A8;&#x753B;&#x7ADF;&#x7136;&#x8FD8;&#x80FD;&#x66F4;&#x7B80;&#x5355;&#x3002;&#x4F60;&#x53EA;&#x8981;&#x628A;&#x53D8;&#x91CF;&#x7528;&#x4E00;&#x4E2A;&#x51FD;&#x6570;&#x5305;&#x4F4F;&#xFF0C;&#x5269;&#x4E0B;&#x7684;&#x5C31;&#x90FD;&#x4E0D;&#x7528;&#x7BA1;&#x4E86;&#xFF0C;&#x52A8;&#x753B;&#x662F;&#x81EA;&#x52A8;&#x7684;&#xFF1A;</p>
<p><img src="http://image.rengwuxian.com/2022/04/15/e27a544b48b84.gif" alt="&#x5C5E;&#x6027;&#x52A8;&#x753B;&#x4E3A;&#x4EC0;&#x4E48;&#x4E0D;&#x80FD;&#x79FB;&#x690D;&#x5230; Jetpack Compose&#xFF1F;" loading="lazy"></p>
<p>&#x63D0;&#x9AD8;&#x5F00;&#x53D1;&#x6548;&#x7387;&#xFF0C;&#x6211;&#x4EEC;&#x5C31;&#x53EF;&#x4EE5;&#x8F7B;&#x677E;&#x4E00;&#x70B9;&#x3002;&#x6211;&#x4EEC;&#x8F7B;&#x677E;&#x4E86;&#xFF0C;&#x516C;&#x53F8;&#x5C31;&#x53EF;&#x4EE5;&#x5C11;&#x62DB;&#x51E0;&#x4E2A;&#x7A0B;&#x5E8F;&#x5458;&#x554A;&#xFF01;&#xFF08;&#x4E0D;&#x662F;&#xFF09;</p>
<p><img src="http://image.rengwuxian.com/2022/04/15/1cbde029ef36a.png" alt="&#x5C5E;&#x6027;&#x52A8;&#x753B;&#x4E3A;&#x4EC0;&#x4E48;&#x4E0D;&#x80FD;&#x79FB;&#x690D;&#x5230; Jetpack Compose&#xFF1F;" loading="lazy"></p>
<h2 id="%E3%80%8C%E6%9B%B4%E7%AE%80%E5%8D%95%E3%80%8D%E5%B9%B6%E4%B8%8D%E6%98%AF%E7%9C%9F%E6%AD%A3%E5%8E%9F%E5%9B%A0">&#x300C;&#x66F4;&#x7B80;&#x5355;&#x300D;&#x5E76;&#x4E0D;&#x662F;&#x771F;&#x6B63;&#x539F;&#x56E0;</h2>
<p>&#x5927;&#x5BB6;&#x597D;&#xFF0C;&#x6211;&#x662F;&#x6254;&#x7269;&#x7EBF;&#x6731;&#x51EF;&#x3002;</p>
<p>Android &#x7684;&#x5C5E;&#x6027;&#x52A8;&#x753B;&#xFF0C;&#x662F;&#x5F88;&#x597D;&#x7528;&#x7684;&#xFF1A;&#x53C8;&#x5F3A;&#x5927;&#xFF0C;&#x53C8;&#x7B80;&#x5355;&#x3002;&#x7136;&#x800C;&#x5728; Jetpack Compose &#x91CC;&#xFF0C;&#x5C5E;&#x6027;&#x52A8;&#x753B;&#x8FD9;&#x4E00;&#x5957;&#x4E1C;&#x897F;&#x5374;&#x6CA1;&#x6709;&#x79FB;&#x690D;&#x8FC7;&#x53BB;&#x3002;</p>
<p>&#x4E3A;&#x4EC0;&#x4E48;&#xFF1F;&#x4F60;&#x521A;&#x624D;&#x4E5F;&#x770B;&#x5230;&#x4E86;&#xFF0C;Compose &#x7684;&#x52A8;&#x753B;&#x5199;&#x8D77;&#x6765;&#x6BD4;&#x5C5E;&#x6027;&#x52A8;&#x753B;&#x66F4;&#x7B80;&#x5355;&#x3002;&#x4F46;&#xFF01;&#x8FD9;&#x5E76;&#x4E0D;&#x662F;&#x5B83;&#x6CA1;&#x6709;&#x79FB;&#x690D;&#x5C5E;&#x6027;&#x52A8;&#x753B;&#x7684;&#x539F;&#x56E0;&#xFF0C;&#x56E0;&#x4E3A;&#x5B83;&#x53EA;&#x662F;&#x4E2A;&#x8868;&#x8C61;&#xFF0C;&#x771F;&#x6B63;&#x7684;&#x539F;&#x56E0;&#x5728;&#x80CC;&#x540E;&#x7684;&#x672C;&#x8D28;&#x3002;</p>
<h2 id="%E5%B1%9E%E6%80%A7%E5%8A%A8%E7%94%BB%E5%92%8C-compose-%E5%8A%A8%E7%94%BB%E7%9A%84%E6%9C%AC%E8%B4%A8%E5%8C%BA%E5%88%AB">&#x5C5E;&#x6027;&#x52A8;&#x753B;&#x548C; Compose &#x52A8;&#x753B;&#x7684;&#x672C;&#x8D28;&#x533A;&#x522B;</h2>
<p>Android &#x7684;&#x5C5E;&#x6027;&#x52A8;&#x753B;&#xFF0C;&#x5B9E;&#x8D28;&#x4E0A;&#x662F;&#x5BF9; <code>View</code> &#x7684;&#x5C5E;&#x6027;&#x505A;&#x6E10;&#x53D8;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x8FDE;&#x7EED;&#x4E0D;&#x65AD;&#x5730;&#x4FEE;&#x6539; <code>View</code> &#x5BF9;&#x8C61;&#x7684;&#x5C5E;&#x6027;&#x503C;&#x3002;&#x6240;&#x4EE5;&#x6211;&#x4EEC;&#x9700;&#x8981;&#x5148;&#x62FF;&#x5230; <code>View</code> &#x5BF9;&#x8C61;&#xFF0C;&#x518D;&#x53BB;&#x5BF9;&#x5B83;&#x7684;&#x5C5E;&#x6027;&#x505A;&#x52A8;&#x753B;&#x3002;&#x800C;&#x5230;&#x4E86; Compose &#x91CC;&#xFF0C;&#x6CA1;&#x6709; <code>View</code> &#x4E86;&#xFF1B;&#x4E0D;&#x6B62;&#x6CA1;&#x6709; <code>View</code>&#xFF0C;&#x4E5F;&#x6CA1;&#x6709;&#x76F8;&#x5F53;&#x4E8E; <code>View</code> &#x7684;&#x5176;&#x5B83;&#x5F62;&#x5F0F;&#x7684;&#x754C;&#x9762;&#x5143;&#x7D20;&#x3002;&#x6211;&#x4EEC;&#x5199;&#x7684; Compose &#x4EE3;&#x7801;&#x53EA;&#x662F;&#x5BF9;&#x754C;&#x9762;&#x7684;&#x63CF;&#x8FF0;&#xFF0C;&#x800C;&#x5E76;&#x4E0D;&#x662F;&#x754C;&#x9762;&#x5143;&#x7D20;&#x672C;&#x8EAB;&#x3002;&#x754C;&#x9762;&#x5143;&#x7D20;&#x5F53;&#x7136;&#x6709;&#xFF0C;&#x754C;&#x9762;&#x80AF;&#x5B9A;&#x4E0D;&#x662F;&#x4ECE;&#x7A7A;&#x6C14;&#x91CC;&#x8E66;&#x51FA;&#x6765;&#x7684;&#xFF0C;&#x4F46;&#x662F; Compose &#x7684;&#x754C;&#x9762;&#x5143;&#x7D20;&#x662F;&#x5728;&#x5E95;&#x5C42;&#x6D3B;&#x52A8;&#x7684;&#xFF0C;&#x6211;&#x4EEC;&#x62FF;&#x4E0D;&#x5230;&#xFF0C;&#x6240;&#x4EE5;&#x4E5F;&#x64CD;&#x4F5C;&#x4E0D;&#x4E86;&#x3002;</p>
<p>&#x4F46;&#x6211;&#x4EEC;&#x53EF;&#x4EE5;&#x7528;&#x4E00;&#x79CD;&#x53EB;&#x505A; State Hoisting&#x2014;&#x2014;&#x72B6;&#x6001;&#x63D0;&#x5347;&#x2014;&#x2014;&#x7684;&#x65B9;&#x5F0F;&#x6765;&#x628A;&#x754C;&#x9762;&#x91CC;&#x7684;&#x5C5E;&#x6027;&#x66B4;&#x9732;&#x51FA;&#x6765;&#xFF0C;&#x7136;&#x540E;&#x76F4;&#x63A5;&#x53BB;&#x5BF9;&#x8FD9;&#x4E9B;&#x5C5E;&#x6027;&#x505A;&#x52A8;&#x753B;&#x3002;&#x7531;&#x4E8E; Compose &#x7684;&#x58F0;&#x660E;&#x5F0F;&#x7279;&#x6027;&#xFF0C;&#x5C5E;&#x6027;&#x5728;&#x6539;&#x53D8;&#x4E4B;&#x540E;&#x4F1A;&#x76F4;&#x63A5;&#x88AB;&#x5E94;&#x7528;&#x5230;&#x754C;&#x9762;&#xFF0C;&#x52A8;&#x753B;&#x5C31;&#x88AB;&#x5448;&#x73B0;&#x51FA;&#x6765;&#x4E86;&#x3002;&#x8FD9;&#x5C31;&#x662F; Compose &#x91CC;&#x52A8;&#x753B;&#x7684;&#x5199;&#x6CD5;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x6211;&#x5728;&#x5F00;&#x5934;&#x6F14;&#x793A;&#x7684;&#x51FD;&#x6570;&#xFF1A;<code>animateFloatAsState()</code>&#x3002;&#x9664;&#x4E86; <code>animateFloatAsState()</code>&#xFF0C;Compose &#x8FD8;&#x6709; <code>animateDpAsState()</code> <code>animateColorAsState()</code>&#xFF0C;&#x8FD9;&#x4E00;&#x5957;&#x51FD;&#x6570;&#x6BD4;&#x8F83;&#x9002;&#x5408;&#x72B6;&#x6001;&#x8F6C;&#x79FB;&#x578B;&#x7684;&#x52A8;&#x753B;&#xFF1B;&#x53E6;&#x5916;&#xFF0C;&#x5BF9;&#x4E8E;&#x591A;&#x4E2A;&#x5C5E;&#x6027;&#x7684;&#x72B6;&#x6001;&#x5207;&#x6362;&#x3001;&#x7279;&#x6B8A;&#x573A;&#x666F;&#x7684;&#x52A8;&#x753B;&#x4EE5;&#x53CA;&#x590D;&#x6742;&#x52A8;&#x753B;&#x7684;&#x7CBE;&#x7EC6;&#x5B9A;&#x5236;&#xFF0C;Compose &#x4E5F;&#x6709;&#x76F8;&#x5E94;&#x7684; API&#x3002;</p>
<h2 id="%E7%9C%9F%E6%AD%A3%E7%9A%84%E5%8E%9F%E5%9B%A0">&#x771F;&#x6B63;&#x7684;&#x539F;&#x56E0;</h2>
<p>&#x90A3;&#x2026;&#x2026;&#x4E3A;&#x4EC0;&#x4E48;&#x8981;&#x6362;&#x4E00;&#x79CD;&#x5199;&#x6CD5;&#xFF0C;&#x800C;&#x4E0D;&#x7EE7;&#x7EED;&#x6CBF;&#x7528;&#x5C5E;&#x6027;&#x52A8;&#x753B;&#x5462;&#xFF1F;&#x5C31;&#x662F;&#x6211;&#x521A;&#x624D;&#x8BF4;&#x7684;&#xFF1A;&#x5C5E;&#x6027;&#x52A8;&#x753B;&#x662F;&#x300C;&#x62FF;&#x5230; <code>View</code> &#x5BF9;&#x8C61;&#xFF0C;&#x64CD;&#x4F5C;&#x5BF9;&#x8C61;&#x7684;&#x5C5E;&#x6027;&#x300D;&#xFF0C;&#x800C; Compose &#x91CC;&#x5DF2;&#x7ECF;&#x6CA1;&#x6709;&#x53EF;&#x4EE5;&#x62FF;&#x5230;&#x7684;&#x754C;&#x9762;&#x5143;&#x7D20;&#x7684;&#x5BF9;&#x8C61;&#x4E86;&#x3002;</p>
<p>&#x90A3;&#x53C8;&#x4E3A;&#x4EC0;&#x4E48;&#x554A;&#xFF1F;&#x4E3A;&#x4EC0;&#x4E48;&#x4E0D;&#x8BA9;&#x6211;&#x4EEC;&#x62FF;&#x5230;&#xFF1F;&#x2014;&#x2014;&#x8FD9;&#x53C8;&#x8981;&#x56DE;&#x5230;&#x90A3;&#x4E2A;&#x8BCD;&#x4E86;&#xFF1A;&#x300C;&#x58F0;&#x660E;&#x5F0F;&#x300D;&#x3002;Compose &#x7684;&#x754C;&#x9762;&#x662F;&#x58F0;&#x660E;&#x5F0F;&#x7684;&#xFF0C;&#x5B83;&#x7684;&#x6838;&#x5FC3;&#x7406;&#x5FF5;&#x5C31;&#x662F;&#x8BA9;&#x5F00;&#x53D1;&#x8005;&#x53BB;&#x63CF;&#x8FF0;&#x754C;&#x9762;&#xFF0C;&#x800C;&#x4E0D;&#x662F;&#x64CD;&#x4F5C;&#x754C;&#x9762;&#x7EC4;&#x4EF6;&#x3002;&#x8FD9;&#x6837;&#x7684;&#x601D;&#x7EF4;&#x66F4;&#x76F4;&#x767D;&#x3001;&#x66F4;&#x50BB;&#x74DC;&#xFF0C;&#x5199;&#x8D77;&#x6765;&#x4E5F;&#x66F4;&#x8F7B;&#x677E;&#x3002;&#x6240;&#x4EE5;&#x8FD9;&#x5176;&#x5B9E;&#x662F;&#x4E00;&#x79CD;&#x8FDB;&#x6B65;&#x3002;</p>
<p>&#x53EF;&#x662F;&#xFF0C;&#x5982;&#x679C;&#x6211;&#x771F;&#x7684;&#x9700;&#x8981;&#x64CD;&#x4F5C;&#x754C;&#x9762;&#x5143;&#x7D20;&#x6765;&#x5E72;&#x5176;&#x4ED6;&#x4E8B;&#xFF0C;&#x90A3;&#x53EF;&#x600E;&#x4E48;&#x529E;&#xFF1F;&#x2014;&#x2014;&#x4F60;&#x60F3;&#x5E72;&#x4EC0;&#x4E48;&#xFF1F;&#x81EA;&#x5B9A;&#x4E49;&#x7ED8;&#x5236;&#x3001;&#x81EA;&#x5B9A;&#x4E49;&#x5E03;&#x5C40;&#x3001;&#x81EA;&#x5B9A;&#x4E49;&#x89E6;&#x6478;&#x64CD;&#x4F5C;&#x3001;&#x81EA;&#x5B9A;&#x4E49;&#x5404;&#x79CD;&#x76D1;&#x542C;&#xFF0C;Compose &#x90FD;&#x53EF;&#x4EE5;&#x505A;&#xFF0C;&#x800C;&#x4E14;&#x90FD;&#x4E0D;&#x9700;&#x8981;&#x62FF;&#x5230;&#x6240;&#x8C13;&#x7684;&#x300C;&#x754C;&#x9762;&#x5143;&#x7D20;&#x300D;&#x3002;&#x542C;&#x8D77;&#x6765;&#x53EF;&#x80FD;&#x6BD4;&#x8F83;&#x4E0D;&#x53EF;&#x601D;&#x8BAE;&#xFF0C;&#x4F46;&#x662F;&#x4F60;&#x5B66;&#x4E00;&#x5B66;&#x3001;&#x5199;&#x4E00;&#x5199;&#x5C31;&#x77E5;&#x9053;&#x4E86;&#x3002;Compose &#x662F;&#x4E00;&#x4E2A;&#x7ECF;&#x8FC7;&#x6210;&#x719F;&#x8BBE;&#x8BA1;&#x7684;&#x3001;&#x4F53;&#x7CFB;&#x5B8C;&#x6574;&#x7684;&#x6846;&#x67B6;&#xFF0C;&#x6240;&#x4EE5;&#x867D;&#x7136;&#x5B83;&#x4E0D;&#x53EF;&#x80FD;&#x7A81;&#x7834; Android &#x7CFB;&#x7EDF;&#x672C;&#x8EAB;&#x7684;&#x80FD;&#x529B;&#x9650;&#x5236;&#xFF0C;&#x4F46;&#x662F;&#x8BE5;&#x6709;&#x7684;&#x529F;&#x80FD;&#xFF0C;&#x4F60;&#x5F97;&#x76F8;&#x4FE1;&#xFF0C;&#x5B83;&#x4E00;&#x5B9A;&#x662F;&#x6709;&#x7684;&#x3002;</p>
<p>&#x9488;&#x5BF9; Compose &#x7684;&#x77E5;&#x8BC6;&#x4F53;&#x7CFB;&#xFF0C;&#x6211;&#x505A;&#x4E86;&#x4E00;&#x5F20;&#x6846;&#x67B6;&#x56FE;&#xFF0C;&#x6709;&#x9700;&#x8981;&#x7684;&#x626B;&#x7801;&#x81EA;&#x53D6;&#x3002;</p>
<p><img src="http://image.rengwuxian.com/2022/04/15/e8c1b0ed252c4.png" alt="&#x5C5E;&#x6027;&#x52A8;&#x753B;&#x4E3A;&#x4EC0;&#x4E48;&#x4E0D;&#x80FD;&#x79FB;&#x690D;&#x5230; Jetpack Compose&#xFF1F;" loading="lazy"></p>
<p>&#x6240;&#x4EE5;&#xFF0C;&#x4E3A;&#x4EC0;&#x4E48;&#x5C5E;&#x6027;&#x52A8;&#x753B;&#x6CA1;&#x6709;&#x88AB;&#x79FB;&#x690D;&#x5230; Compose &#x6765;&#xFF1F;&#x56E0;&#x4E3A; Compose &#x91CC;&#x62FF;&#x4E0D;&#x5230;&#x754C;&#x9762;&#x5143;&#x7D20;&#x7684;&#x5BF9;&#x8C61;&#xFF0C;&#x4ECE;&#x800C;&#x5BFC;&#x81F4;&#x5C5E;&#x6027;&#x52A8;&#x753B;&#x7684;&#x6574;&#x4E2A;&#x7406;&#x8BBA;&#x6A21;&#x578B;&#x4E0D;&#x518D;&#x9002;&#x7528;&#x4E86;&#x3002;&#x5982;&#x679C;&#x786C;&#x8981;&#x628A;&#x5C5E;&#x6027;&#x52A8;&#x753B;&#x79FB;&#x690D;&#x8FC7;&#x6765;&#xFF0C;&#x62FF;&#x7ED9; Compose &#x7528;&#xFF0C;&#x80FD;&#x505A;&#x5230;&#x5417;&#xFF1F;&#x8FD9;&#x4E2A;&#x5728;&#x6280;&#x672F;&#x4E0A;&#x662F;&#x80FD;&#x505A;&#x5230;&#x7684;&#xFF0C;&#x4F46;&#x6CA1;&#x5FC5;&#x8981;&#xFF0C;&#x4E5F;&#x4E0D;&#x5E94;&#x8BE5;&#x3002;&#x867D;&#x7136;&#x5C5E;&#x6027;&#x52A8;&#x753B;&#x6211;&#x4EEC;&#x90FD;&#x7528;&#x5F97;&#x6BD4;&#x8F83;&#x719F;&#x4E86;&#xFF0C;&#x4F46;&#x65E2;&#x7136; Compose &#x505A;&#x51FA;&#x4E86;&#x6BD4;&#x5C5E;&#x6027;&#x52A8;&#x753B;&#x66F4;&#x5F3A;&#x5927;&#x3001;&#x66F4;&#x597D;&#x7528;&#x7684;&#x52A8;&#x753B;&#x7CFB;&#x7EDF;&#xFF0C;&#x90A3;&#x6362;&#x5C31;&#x6362;&#x5457;&#xFF1F;</p>
<h2 id="compose-%E5%8F%AF%E4%BB%A5%E5%BC%80%E5%A7%8B%E6%90%9E%E4%BA%86">Compose &#x53EF;&#x4EE5;&#x5F00;&#x59CB;&#x641E;&#x4E86;</h2>
<p>Compose &#x771F;&#x7684;&#x53EF;&#x4EE5;&#x5B66;&#x8D77;&#x6765;&#x4E86;&#x3002;&#x6211;&#x7528;&#x4E8B;&#x5B9E;&#x6765;&#x8DDF;&#x4F60;&#x4EEC;&#x8BF4;&#x660E;&#x4E00;&#x4E0B;&#x3002;&#x6211;&#x662F;&#x6709;&#x4E00;&#x95E8; Compose &#x8BFE;&#x7A0B;&#x7684;&#xFF0C;&#x8FD9;&#x95E8;&#x8BFE;&#x4ECE;&#x53BB;&#x5E74;&#x4E0B;&#x534A;&#x5E74;&#x5F00;&#x59CB;&#x91CD;&#x5236;&#xFF0C;&#x73B0;&#x5728;&#x300C;&#x52A8;&#x753B;&#x300D;&#x8FD9;&#x4E00;&#x7AE0;&#x8282;&#x5C31;&#x8981;&#x66F4;&#x65B0;&#x5B8C;&#x4E86;&#xFF0C;&#x8FD9;&#x6BB5;&#x65F6;&#x95F4;&#x6211;&#x4EEC;&#x7ECF;&#x5E38;&#x4F1A;&#x6536;&#x5230;&#x4E00;&#x4E9B;&#x6D77;&#x5916;&#x7684;&#x5B66;&#x5458;&#x7684;&#x53CD;&#x9988;&#x2014;&#x2014;&#x4E3B;&#x8981;&#x662F;&#x7F8E;&#x56FD;&#x548C;&#x65B0;&#x52A0;&#x5761;&#x7684;&#x2014;&#x2014;&#x8BF4;&#x4ED6;&#x4EEC;&#x90A3;&#x8FB9;&#x5DF2;&#x7ECF;&#x7528;&#x4E0A; Compose &#x4E86;&#xFF0C;&#x516C;&#x53F8;&#x8981;&#x6C42;&#x5FC5;&#x987B;&#x5B66;&#x4F1A; Compose&#xFF0C;&#x6240;&#x4EE5;&#x5E0C;&#x671B;&#x6211;&#x80FD;&#x5FEB;&#x70B9;&#x66F4;&#x65B0;&#x3002;&#x867D;&#x7136;&#x8BF4;&#xFF0C;&#x5BF9;&#x4E8E;&#x65B0;&#x6280;&#x672F;&#x6211;&#x4EEC;&#x56FD;&#x5185;&#x6574;&#x4F53;&#x4E0A;&#x4F1A;&#x6BD4;&#x56FD;&#x5916;&#x4FDD;&#x5B88;&#x4E00;&#x4E9B;&#xFF0C;&#x6BD4;&#x5982;&#x5F53;&#x5E74;&#x4ECE; Eclipse &#x5230; Android Studio&#xFF0C;&#x4ECE; Java &#x5230; Kotlin&#xFF0C;&#x5305;&#x62EC;&#x5BF9; RxJava &#x7684;&#x5E7F;&#x6CDB;&#x63A5;&#x7EB3;&#xFF0C;&#x56FD;&#x5185;&#x5BF9;&#x4E8E;&#x65B0;&#x6280;&#x672F;&#x7684;&#x63A5;&#x53D7;&#x603B;&#x4F1A;&#x6BD4;&#x56FD;&#x5916;&#x665A;&#x4E00;&#x4E9B;&#x3002;&#x4F46;&#x662F;&#x65E9;&#x665A;&#xFF0C;&#x6211;&#x4EEC;&#x56FD;&#x5185;&#x4E5F;&#x4F1A;&#x8FD8;&#x662F;&#x4F1A;&#x9010;&#x6E10;&#x5207;&#x6362;&#x5230; Compose &#x7684;&#xFF0C;&#x8FD9;&#x53EA;&#x662F;&#x4E2A;&#x65F6;&#x95F4;&#x95EE;&#x9898;&#x3002;&#x800C;&#x4E14;&#x5176;&#x5B9E;&#x73B0;&#x5728;&#x56FD;&#x5185;&#x4E5F;&#x5DF2;&#x7ECF;&#x6709;&#x4E00;&#x4E9B;&#x516C;&#x53F8;&#x548C;&#x56E2;&#x961F;&#x5728;&#x4E0A; Compose &#x4E86;&#xFF0C;&#x6240;&#x4EE5;&#x8FD9;&#x4E2A;&#x300C;&#x5168;&#x9762;&#x5207;&#x6362;&#x300D;&#x7684;&#x65F6;&#x95F4;&#x4E5F;&#x4E0D;&#x4F1A;&#x592A;&#x4E45;&#x4E86;&#x3002;</p>
<p><strong>&#x5E7F;&#x544A;&#x90E8;&#x5206;&#xFF1A;&#x5982;&#x679C;&#x4F60;&#x8981;&#x5B66; Compose&#xFF0C;&#x53EF;&#x4EE5;&#x8003;&#x8651;&#x4E00;&#x4E0B;&#x6211;&#x7684;&#x8BFE;&#x7A0B;&#x3002;</strong><br>
&#x6211;&#x82B1;&#x4E86;&#x4E00;&#x5E74;&#x591A;&#x7684;&#x65F6;&#x95F4;&#x51E0;&#x4E4E;&#x5168;&#x804C;&#x5728;&#x7814;&#x7A76; Compose&#xFF0C;&#x800C;&#x4E14;&#x5BF9;&#x4E8E;&#x4E00;&#x4E9B;&#x6BD4;&#x8F83;&#x6DF1;&#x7684;&#x95EE;&#x9898;&#x6211;&#x8FD8;&#x4F1A;&#x548C; Android &#x6838;&#x5FC3;&#x56E2;&#x961F;&#x7684;&#x4EBA;&#x76F4;&#x63A5;&#x4EA4;&#x6D41;&#xFF0C;&#x5E76;&#x4E14;&#x5927;&#x5BB6;&#x4E5F;&#x80FD;&#x4ECE;&#x6211;&#x7684;&#x516C;&#x5F00;&#x89C6;&#x9891;&#x6765;&#x9A8C;&#x8BC1;&#x6211;&#x8BB2;&#x89E3;&#x77E5;&#x8BC6;&#x2014;&#x2014;&#x5C24;&#x5176;&#x662F;&#x6DF1;&#x5EA6;&#x77E5;&#x8BC6;&#x2014;&#x2014;&#x7684;&#x80FD;&#x529B;&#xFF0C;&#x6240;&#x4EE5;&#x4F60;&#x5982;&#x679C;&#x8981;&#x627E; Compose &#x7684;&#x5BFC;&#x5E08;&#xFF0C;&#x5E0C;&#x671B;&#x8BA9;&#x4E00;&#x4E2A;&#x4EBA;&#x628A;&#x4F60;&#x4ECE;&#x5165;&#x95E8;&#x5E26;&#x6210;&#x4E13;&#x5BB6;&#xFF0C;&#x6211;&#x51E0;&#x4E4E;&#x53EF;&#x80FD;&#x662F;&#x4F60;&#x6700;&#x597D;&#x7684;&#x9009;&#x62E9;&#x3002;&#x5F53;&#x7136;&#x4E86;&#xFF0C;&#x4F60;&#x4E0D;&#x62A5;&#x6211;&#x7684;&#x8BFE;&#x4E5F;&#x80FD;&#x5B66;&#x4F1A; Compose&#xFF0C;&#x6211;&#x7684;&#x4F5C;&#x7528;&#x662F;&#x5E2E;&#x4F60;&#x5149;&#x901F;&#x5B66;&#x4F1A;&#xFF0C;&#x4EE5;&#x53CA;&#x5E2E;&#x4F60;&#x8FBE;&#x5230;&#x6781;&#x81F4;&#x7684;&#x6DF1;&#x5EA6;&#x3002;&#x4E00;&#x4E2A;&#x4EBA;&#x60F3;&#x5728;&#x77ED;&#x65F6;&#x95F4;&#x5185;&#x5229;&#x7528;&#x4E1A;&#x4F59;&#x65F6;&#x95F4;&#x6210;&#x4E3A; Compose &#x9AD8;&#x624B;&#x662F;&#x5F88;&#x96BE;&#x7684;&#xFF0C;&#x4F46;&#x6709;&#x4E86;&#x6211;&#x7684;&#x8BFE;&#x7A0B;&#xFF0C;&#x4E00;&#x4E2A;&#x6708;&#x7684;&#x4E1A;&#x4F59;&#x65F6;&#x95F4;&#x8DB3;&#x591F;&#x4F60;&#x6210;&#x4E3A;&#x9AD8;&#x624B;&#x4E86;&#x2014;&#x2014;&#x662F;&#x771F;&#x7684;&#x9AD8;&#x624B;&#xFF0C;&#x4F60;&#x7684; Compose &#x77E5;&#x8BC6;&#x5C06;&#x80FD;&#x6253;&#x8D25;&#x5927;&#x591A;&#x6570;&#x5927;&#x5382;&#x7684;&#x9762;&#x8BD5;&#x5B98;&#x2014;&#x2014;&#x4E0D;&#x8FC7;&#x9762;&#x8BD5;&#x5B98;&#x4E5F;&#x62A5;&#x4E86;&#x8BFE;&#x7684;&#x9664;&#x5916;&#x554A;&#x2014;&#x2014;&#x8FD9;&#x662F;&#x6211;&#x7684;&#x4EF7;&#x503C;&#x6240;&#x5728;&#x3002;</p>
<p>&#x4E0D;&#x8FC7;&#x4E0D;&#x7BA1;&#x4F60;&#x5B66;&#x4E0D;&#x5B66;&#x6211;&#x7684;&#x8BFE;&#xFF0C;Compose &#x786E;&#x5B9E;&#x53EF;&#x4EE5;&#x5F00;&#x59CB;&#x5B66;&#x4E86;&#x3002;&#x5B83;&#x80FD;&#x5E2E;&#x6211;&#x4EEC;&#x6781;&#x5927;&#x5730;&#x63D0;&#x5347;&#x5F00;&#x53D1;&#x754C;&#x9762;&#x7684;&#x6548;&#x7387;&#xFF0C;&#x4EE5;&#x53CA;&#x964D;&#x4F4E;&#x590D;&#x6742;&#x754C;&#x9762;&#x7684;&#x5F00;&#x53D1;&#x96BE;&#x5EA6;&#x3002;&#x8FD9;&#x4E24;&#x4EF6;&#x4E8B;&#x60C5;&#x4E00;&#x76F4;&#x90FD;&#x662F;&#x975E;&#x5E38;&#x6709;&#x4EF7;&#x503C;&#x4E5F;&#x975E;&#x5E38;&#x56F0;&#x96BE;&#x7684;&#xFF0C;&#x800C; Compose &#x5BF9;&#x4E8E;&#x8FD9;&#x4E24;&#x4EF6;&#x4E8B;&#x60C5;&#x90FD;&#x6709;&#x7ACB;&#x7AFF;&#x89C1;&#x5F71;&#x7684;&#x6548;&#x679C;&#x3002;&#x6240;&#x4EE5;&#xFF0C;&#x641E;&#x8D77;&#x6765;&#x5427;&#xFF01;&#x73B0;&#x5728;&#x4E0A;&#x8F66; Compose&#xFF0C;&#x5E94;&#x8BE5;&#x662F;&#x5BF9;&#x4E8E;&#x56FD;&#x5185;&#x5F00;&#x53D1;&#x8005;&#x7684;&#x6700;&#x540E;&#x4E00;&#x6CE2;&#x65E9;&#x9E1F;&#x7EA2;&#x5229;&#x4E86;&#x3002;</p>
<h2 id="%E6%9C%80%E5%90%8E">&#x6700;&#x540E;</h2>
<p>&#x4E0B;&#x671F;&#x6211;&#x53EF;&#x80FD;&#x4F1A;&#x7EE7;&#x7EED;&#x804A; Compose&#xFF0C;&#x4E5F;&#x53EF;&#x80FD;&#x662F; Jetpack &#x7684;&#x5176;&#x4ED6;&#x5185;&#x5BB9;&#xFF0C;&#x6216;&#x8005;&#x5176;&#x4ED6; Android &#x5F00;&#x53D1;&#x7684;&#x4E8B;&#x60C5;&#x3002;&#x6216;&#x8005;&#x5927;&#x5BB6;&#x5982;&#x679C;&#x6709;&#x4EC0;&#x4E48;&#x95EE;&#x9898;&#x60F3;&#x95EE;&#x6211;&#x7684;&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x5728;&#x8BC4;&#x8BBA;&#x533A;&#x544A;&#x8BC9;&#x6211;&#xFF0C;&#x6211;&#x53EF;&#x4EE5;&#x9009;&#x62E9;&#x4E00;&#x4E9B;&#x5728;&#x4EE5;&#x540E;&#x7684;&#x89C6;&#x9891;&#x91CC;&#x8FDB;&#x884C;&#x56DE;&#x7B54;&#x3002;&#x597D;&#x4E86;&#xFF0C;&#x672C;&#x671F;&#x89C6;&#x9891;&#x5C31;&#x5230;&#x8FD9;&#x91CC;&#xFF0C;&#x5982;&#x679C;&#x4F60;&#x559C;&#x6B22;&#x7684;&#x8BDD;&#xFF0C;&#x6B22;&#x8FCE;&#x70B9;&#x8D5E;&#x8F6C;&#x53D1;&#x6536;&#x85CF;&#x5173;&#x6CE8;&#xFF0C;&#x5927;&#x5BB6;&#x7684;&#x8BA4;&#x53EF;&#x5BF9;&#x6211;&#x505A;&#x597D;&#x8FD9;&#x4E2A;&#x8D26;&#x53F7;&#x5F88;&#x6709;&#x5E2E;&#x52A9;&#x3002;&#x6211;&#x662F;&#x6254;&#x7269;&#x7EBF;&#xFF0C;&#x6211;&#x4E0D;&#x548C;&#x4F60;&#x6BD4;&#x9AD8;&#x4F4E;&#xFF0C;&#x6211;&#x53EA;&#x52A9;&#x4F60;&#x6210;&#x957F;&#xFF0C;&#x6211;&#x4EEC;&#x4E0B;&#x671F;&#x89C1;&#x3002;<br>
<img src="http://image.rengwuxian.com/2022/04/15/e8c1b0ed252c4.png" alt="&#x5C5E;&#x6027;&#x52A8;&#x753B;&#x4E3A;&#x4EC0;&#x4E48;&#x4E0D;&#x80FD;&#x79FB;&#x690D;&#x5230; Jetpack Compose&#xFF1F;" loading="lazy"></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[【带源码】我又用Jetpack Compose做了个示例App，是怎样的体验？]]></title><description><![CDATA[能浏览，能点开，还有动画，代码还不多。今天我就用最流畅的方式给大家讲解一下它的代码，让大家看看 Compose 的界面代码到底长什么样。]]></description><link>https://rengwuxian.com/jetpack-compose-weiguan-app/</link><guid isPermaLink="false">623808504fdc7d0237fde719</guid><category><![CDATA[Compose]]></category><dc:creator><![CDATA[扔物线]]></dc:creator><pubDate>Mon, 21 Mar 2022 08:17:19 GMT</pubDate><media:content url="https://rengwuxian.com/content/images/2022/03/Compose---------1.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h2 id="%E8%A7%86%E9%A2%91%E5%85%88%E8%A1%8C">&#x89C6;&#x9891;&#x5148;&#x884C;</h2>
<iframe width="100%" height="480" src="//player.bilibili.com/player.html?bvid=BV1Y341157ym&amp;page=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>
<blockquote>
<img src="https://rengwuxian.com/content/images/2022/03/Compose---------1.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;"><p>&#x4E0B;&#x9762;&#x662F;&#x89C6;&#x9891;&#x5185;&#x5BB9;&#x7684;&#x811A;&#x672C;&#x6574;&#x7406;&#x7A3F;&#x3002;&#x5982;&#x679C;&#x4F60;&#x770B;&#x4E86;&#x89C6;&#x9891;&#xFF0C;&#x90A3;&#x4E0B;&#x9762;&#x7684;&#x6587;&#x7A3F;&#x5C31;&#x4E0D;&#x7528;&#x770B;&#x4E86;&#xFF0C;&#x76F4;&#x63A5;&#x7FFB;&#x5230;&#x5E95;&#x90E8;&#x5C31;&#x884C;&#x3002;</p>
</blockquote>
<h2 id="%E5%BC%80%E5%9C%BA">&#x5F00;&#x573A;</h2>
<p>&#x5927;&#x5BB6;&#x597D;&#xFF0C;&#x6211;&#x662F;&#x6254;&#x7269;&#x7EBF;&#x6731;&#x51EF;&#x3002;</p>
<p>&#x53BB;&#x5E74;&#x6211;&#x53D1;&#x8FC7;&#x51E0;&#x4E2A;&#x89C6;&#x9891;&#x8BB2; Compose&#xFF0C;&#x6709;&#x505A; Compose &#x7684;&#x4ECB;&#x7ECD;&#x7684;&#xFF0C;&#x6709;&#x8BB2;&#x539F;&#x7406;&#x7684;&#xFF0C;&#x4F46;&#x552F;&#x72EC;&#x6CA1;&#x6709;&#x5B9E;&#x9645;&#x4EE3;&#x7801;&#x7684;&#x8BB2;&#x89E3;&#x3002;&#x5012;&#x662F;&#x6709;&#x4E00;&#x8282;&#x6211;&#x7684; Compose &#x8BFE;&#x7A0B;&#x7684;&#x8BD5;&#x542C;&#x8BFE;&#x6211;&#x4E5F;&#x653E;&#x4E86;&#x51FA;&#x6765;&#xFF0C;&#x4F46;&#x662F;&#x90A3;&#x4E2A;&#x662F;&#x8BFE;&#x7A0B;&#xFF0C;&#x662F;&#x4E09;&#x4E2A;&#x5C0F;&#x65F6;&#x7684;&#xFF0C;&#x6709;&#x4EBA;&#x5ACC;&#x957F;&#xFF0C;&#x5ACC;&#x5570;&#x55E6;&#x3002;</p>
<p><img src="http://image.rengwuxian.com/2022/03/21/85f62e39c16c8.gif" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p>&#x6211;&#x771F;&#x662F;&#x2026;&#x2026;</p>
<p>&#x6240;&#x4EE5;&#x4ECA;&#x5929;&#xFF0C;&#x6211;&#x5C31;&#x7ED9;&#x5927;&#x5BB6;&#x6765;&#x4E00;&#x4E2A; Compose &#x4EE3;&#x7801;&#x7684;&#x6F14;&#x793A;&#x3002;</p>
<p><img src="http://image.rengwuxian.com/2022/03/21/f36f5c9f7cc35.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p>&#x8FD9;&#x4E2A;&#xFF0C;&#x662F;&#x6211;&#x7528; Compose &#x5199;&#x7684;&#x4E00;&#x4E2A;&#x53EB;&#x505A;&#x300C;&#x56F4;&#x89C2;&#x300D;&#x7684;&#x865A;&#x6784;&#x7684; App&#xFF0C;&#x300C;&#x865A;&#x6784;&#x300D;&#x7684;&#x610F;&#x601D;&#x5C31;&#x662F;&#x91CC;&#x9762;&#x7684;&#x529F;&#x80FD;&#x662F;&#x6211;&#x7F16;&#x7684;&#xFF0C;&#x56E0;&#x4E3A;&#x6211;&#x53EA;&#x662F;&#x8981;&#x628A;&#x754C;&#x9762;&#x548C;&#x4EA4;&#x4E92;&#x7ED9;&#x505A;&#x51FA;&#x6765;&#x3002;&#x8FD9;&#x754C;&#x9762;&#x770B;&#x7740;&#x590D;&#x6742;&#xFF0C;&#x4F46;&#x662F;&#x7528; Compose &#x5199;&#x8D77;&#x6765;&#x5176;&#x5B9E;&#x7279;&#x522B;&#x7B80;&#x5355;&#x3002;&#x4ECA;&#x5929;&#x6211;&#x5C31;&#x7528;&#x6700;&#x6D41;&#x7545;&#x7684;&#x65B9;&#x5F0F;&#x7ED9;&#x5927;&#x5BB6;&#x8BB2;&#x89E3;&#x4E00;&#x4E0B;&#x5B83;&#x7684;&#x4EE3;&#x7801;&#xFF0C;&#x8BA9;&#x5927;&#x5BB6;&#x770B;&#x770B; Compose &#x7684;&#x754C;&#x9762;&#x4EE3;&#x7801;&#x5230;&#x5E95;&#x957F;&#x4EC0;&#x4E48;&#x6837;&#x3002;</p>
<h2 id="%E5%8A%9F%E8%83%BD">&#x529F;&#x80FD;</h2>
<p>&#x6211;&#x5148;&#x7B80;&#x5355;&#x4ECB;&#x7ECD;&#x4E00;&#x4E0B;&#x8FD9;&#x4E2A;&#x8F6F;&#x4EF6;&#x7684;&#x300C;&#x529F;&#x80FD;&#x300D;&#x3002;&#x300C;&#x529F;&#x80FD;&#x300D;&#x4E24;&#x4E2A;&#x5B57;&#x5F97;&#x52A0;&#x4E2A;&#x5F15;&#x53F7;&#xFF0C;&#x56E0;&#x4E3A;&#x90FD;&#x662F;&#x5047;&#x7684;&#x561B;&#x3002;</p>
<p>&#x9996;&#x5148;&#x9876;&#x90E8;&#x662F;&#x4E00;&#x4E9B;&#x57FA;&#x672C;&#x4FE1;&#x606F;&#xFF0C;&#x4F8B;&#x5982;&#x5F53;&#x524D;&#x7528;&#x6237;&#x662F;&#x8C01;&#x3001;&#x901A;&#x77E5;&#x6309;&#x94AE;&#xFF0C;&#x4EE5;&#x53CA;&#x4E00;&#x4E2A;&#x641C;&#x7D22;&#x6846;&#x3002;<br>
<img src="http://image.rengwuxian.com/2022/03/22/a0da4f282b90b.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"><br>
&#x7136;&#x540E;&#x4E2D;&#x95F4;&#x5C31;&#x662F;&#x56F4;&#x89C2;&#x7684;&#x5185;&#x5BB9;&#x3002;<br>
<img src="http://image.rengwuxian.com/2022/03/22/5fae85ce97fbc.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"><br>
&#x6700;&#x4E0A;&#x9762;&#x4F60;&#x53EF;&#x4EE5;&#x9009;&#x62E9;&#x4F60;&#x8981;&#x56F4;&#x89C2;&#x8C01;&#x2014;&#x2014;&#x5B9E;&#x9645;&#x4E0A;&#x662F;&#x9009;&#x4E0D;&#x4E86;&#x7684;&#x554A;&#xFF0C;&#x6211;&#x6CA1;&#x5199;&#x8FD9;&#x4E2A;&#x529F;&#x80FD;&#xFF0C;&#x6240;&#x4EE5;&#x6211;&#x5C31;&#x4E0D;&#x70B9;&#x4E86;&#xFF1B;&#x5F80;&#x4E0B;&#x662F;&#x8FD9;&#x4E2A;&#x4F60;&#x56F4;&#x89C2;&#x7684;&#x4EBA;&#x4ED6;&#x559C;&#x6B22;&#x7684;&#x4E1C;&#x897F;&#xFF0C;&#x6BD4;&#x5982;&#x4F60;&#x770B;&#x8FD9;&#x662F;&#x5728;&#x56F4;&#x89C2;&#x6211;&#x5BF9;&#x5427;&#xFF0C;&#x6211;&#x5C31;&#x559C;&#x6B22;&#x8FD9;&#x4E48;&#x51E0;&#x4E2A;&#x4E1C;&#x897F;&#x3002;&#x4F60;&#x4E5F;&#x53EF;&#x4EE5;&#x70B9;&#x51FB;&#x5176;&#x4E2D;&#x4E00;&#x9879;&#xFF0C;&#x6765;&#x67E5;&#x770B;&#x8BE6;&#x60C5;&#x3002;<br>
<img src="http://image.rengwuxian.com/2022/03/22/5e53d3faa70ca.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"><br>
&#x8BE6;&#x60C5;&#x9875;&#x7684;&#x9876;&#x90E8;&#x662F;&#x4E00;&#x4E2A;&#x9884;&#x89C8;&#x56FE;&#xFF0C;&#x56FE;&#x7684;&#x4E0B;&#x65B9;&#x5C31;&#x662F;&#x5404;&#x79CD;&#x8BE6;&#x7EC6;&#x4FE1;&#x606F;&#x3002;</p>
<p>&#x7136;&#x540E;&#x5173;&#x6389;&#x8BE6;&#x60C5;&#x9875;&#x4E4B;&#x540E;&#xFF0C;&#x4E0B;&#x65B9;&#x662F;&#x8FD9;&#x4E2A;&#x88AB;&#x56F4;&#x89C2;&#x7684;&#x4EBA;&#x6700;&#x8FD1;&#x7684;&#x884C;&#x52A8;&#x8F68;&#x8FF9;&#x3002;<br>
<img src="http://image.rengwuxian.com/2022/03/22/d2e971d1604a8.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"><br>
&#x5728;&#x9875;&#x9762;&#x7684;&#x6700;&#x4E0B;&#x65B9;&#xFF0C;&#x662F;&#x4E00;&#x4E2A;&#x5207;&#x6362;&#x6807;&#x7B7E;&#x9875;&#x7684;&#x5BFC;&#x822A;&#x6761;&#xFF0C;&#x4E0D;&#x8FC7;&#x8FD9;&#x4E2A;&#x6761;&#x7684;&#x5BFC;&#x822A;&#x529F;&#x80FD;&#x6211;&#x4E5F;&#x6CA1;&#x505A;&#xFF0C;&#x53EA;&#x505A;&#x4E86;&#x70B9;&#x51FB;&#x6548;&#x679C;&#x3002;<br>
<img src="http://image.rengwuxian.com/2022/03/21/142df4ee088dd.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p>&#x5C31;&#x8FD9;&#x4E48;&#x7B80;&#x5355;&#x7684;&#x4E00;&#x4E2A;&#x865A;&#x6784;&#x7684;&#x793A;&#x4F8B; App&#xFF0C;&#x53EB;&#x505A;&#x300A;&#x56F4;&#x89C2;&#x300B;&#x3002;&#x90A3;&#x4E48;&#x63A5;&#x4E0B;&#x6765;&#x6211;&#x4EEC;&#x5C31;&#x6765;&#x770B;&#x770B;&#x5B83;&#x7684;&#x4EE3;&#x7801;&#x662F;&#x600E;&#x4E48;&#x5199;&#x7684;&#x3002;</p>
<h2 id="%E4%BB%A3%E7%A0%81">&#x4EE3;&#x7801;</h2>
<p>&#x9996;&#x5148;&#xFF0C;&#x7531;&#x4E8E;&#x5B83;&#x7684;&#x754C;&#x9762;&#x662F;&#x7528; Compose &#x5199;&#x7684;&#xFF0C;&#x6240;&#x4EE5;&#x6211;&#x8981;&#x628A; <code>setContentView()</code> &#x5220;&#x6389;&#xFF0C;&#x6362;&#x6210; Compose  &#x4E13;&#x7528;&#x7684; <code>setContent {}</code>&#xFF1A;</p>
<pre><code class="language-markdown">setContentView(R.layout.activity_main)

...

setContent {
  
}
</code></pre>
<p>&#x7136;&#x540E;&#x5C31;&#x53EF;&#x4EE5;&#x5199;&#x5185;&#x5BB9;&#x4E86;&#x3002;</p>
<p>&#x9274;&#x4E8E;&#x8FD9;&#x662F;&#x4E2A;&#x4E0A;&#x4E0B;&#x7ED3;&#x6784;&#x7684;&#x5206;&#x680F;&#x5E03;&#x5C40;&#xFF0C;&#x6240;&#x4EE5;&#x4E8C;&#x8BDD;&#x4E0D;&#x8BF4;&#xFF0C;&#x6211;&#x5148;&#x628A;&#x5E95;&#x90E8;&#x7684;&#x5BFC;&#x822A;&#x6761;&#x7ED9;&#x505A;&#x4E86;&#x3002;&#x7528;&#x4E00;&#x4E2A; <code>Row()</code> &#x6765;&#x505A;&#x6A2A;&#x5411;&#x5E03;&#x5C40;&#xFF0C;&#x91CC;&#x9762;&#x7528; 4 &#x4E2A;&#x8FDE;&#x7EED;&#x7684; <code>Icon()</code> &#x6765;&#x663E;&#x793A; 4 &#x4E2A;&#x56FE;&#x6807;&#xFF1A;</p>
<pre><code class="language-markdown">setContent {
  NavBar()
}

-&gt;
  
@Composable
private fun NavBar() {
  Row {
    Icon(painterResource(R.drawable.icon1), &quot;&#x56FE;&#x6807;&quot;)
    Icon(painterResource(R.drawable.icon2), &quot;&#x56FE;&#x6807;&quot;)
    Icon(painterResource(R.drawable.icon3), &quot;&#x56FE;&#x6807;&quot;)
    Icon(painterResource(R.drawable.icon4), &quot;&#x56FE;&#x6807;&quot;)
  }
}
</code></pre>
<p><img src="http://image.rengwuxian.com/2022/03/21/ddf2b184b36e1.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p>&#x5F88;&#x96BE;&#x770B;&#xFF0C;&#x6CA1;&#x5173;&#x7CFB;&#xFF0C;&#x6211;&#x53BB;&#x8C03;&#x6574;&#x4E00;&#x4E0B;&#x8FD9;&#x4E9B;&#x56FE;&#x6807;&#x3002;&#x6211;&#x628A;&#x56FE;&#x6807;&#x62BD;&#x5230;&#x5355;&#x72EC;&#x7684;&#x51FD;&#x6570;&#x91CC;&#xFF1A;</p>
<p><img src="http://image.rengwuxian.com/2022/03/21/5a1735f22f4e7.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p>&#x518D;&#x8C03;&#x6574;&#x4E00;&#x4E0B;&#x56FE;&#x6807;&#x7684;&#x5C3A;&#x5BF8;&#xFF1A;</p>
<p><img src="http://image.rengwuxian.com/2022/03/21/3b6b189585a72.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p><img src="http://image.rengwuxian.com/2022/03/21/13bb5cf0c9878.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p>&#x518D;&#x5F52;&#x6574;&#x4E00;&#x4E0B;&#x5B83;&#x4EEC;&#x7684;&#x4F4D;&#x7F6E;&#x5E03;&#x5C40;&#xFF1A;</p>
<p><img src="http://image.rengwuxian.com/2022/03/21/ff5fd541a5e6c.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p><img src="http://image.rengwuxian.com/2022/03/21/14da3953c51fb.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p>&#x5C31;&#x4E00;&#x4E0B;&#x5B50;&#x53D8;&#x5F97;&#x6574;&#x9F50;&#x4E86;&#x3002;</p>
<p>&#x7136;&#x540E;&#x6211;&#x518D;&#x7ED9;&#x5B83;&#x4EEC;&#x6D82;&#x4E0A;&#x8272;&#xFF1A;</p>
<p><img src="http://image.rengwuxian.com/2022/03/21/49f2332a109ed.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p><img src="http://image.rengwuxian.com/2022/03/21/85c64d235b151.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p>&#x54CE;&#xFF0C;&#x5C31;&#x53C8;&#x597D;&#x770B;&#x4E86;&#x5F88;&#x591A;&#x3002;</p>
<p>&#x8FD9;&#x65F6;&#x5019;&#x4E3A;&#x4E86;&#x8BA9;&#x8FD9;&#x4E9B;&#x56FE;&#x6807;&#x6709;&#x70B9;&#x51FB;&#x7684;&#x6CE2;&#x7EB9;&#x6548;&#x679C;&#xFF0C;&#x6211;&#x518D;&#x628A;&#x5B83;&#x5916;&#x9762;&#x5305;&#x4E0A;&#x4E00;&#x5C42; Button()&#xFF1A;</p>
<p><img src="http://image.rengwuxian.com/2022/03/21/580db786cdeb4.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p><img src="http://image.rengwuxian.com/2022/03/21/6b7190c304839.gif" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p>&#x597D;&#xFF0C;&#x8FD9;&#x6837;&#x5E95;&#x680F;&#x5C31;&#x5B8C;&#x6210;&#x4E86;&#x3002;</p>
<p>&#x4EE3;&#x7801;&#x7684;&#x7EC6;&#x8282;&#x6211;&#x5728;&#x8FD9;&#x4E2A;&#x89C6;&#x9891;&#x91CC;&#x5C31;&#x4E0D;&#x6DF1;&#x5165;&#x62C6;&#x89E3;&#x4E86;&#xFF0C;&#x4ECA;&#x5929;&#x4E3B;&#x8981;&#x662F;&#x5FEB;&#x901F;&#x6F14;&#x793A;&#x3001;&#x5FEB;&#x901F;&#x611F;&#x53D7;&#xFF0C;&#x8BA9;&#x4F60;&#x611F;&#x53D7;&#x4E00;&#x4E0B;&#x7528; Compose &#x5199;&#x754C;&#x9762;&#x5927;&#x6982;&#x662F;&#x600E;&#x4E48;&#x4E00;&#x56DE;&#x4E8B;&#x3002;&#x8981;&#x770B;&#x7EC6;&#x8282;&#x7684;&#x53EF;&#x4EE5;&#x53BB;&#x770B;&#x8FD9;&#x4E2A;&#x9879;&#x76EE;&#x7684;&#x6E90;&#x7801;&#xFF0C;&#x626B;&#x7801;&#x52A0;&#x6211;&#x7684;&#x52A9;&#x6559;&#xFF0C;&#x8BA9;&#x5979;&#x53D1;&#x7ED9;&#x4F60;&#x5C31;&#x884C;&#xFF0C;&#x6697;&#x53F7;&#x300C;&#x56F4;&#x89C2;&#x300D;&#x3002;&#x6216;&#x8005;&#x770B;&#x6211;&#x7684; Compose &#x8BFE;&#x7A0B;&#x7684;&#x8BD5;&#x542C;&#x8BFE;&#x4E5F;&#x884C;&#xFF0C;&#x90A3;&#x4E2A;&#x4E5F;&#x5F88;&#x7EC6;&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x52A0;&#x52A9;&#x6559;&#x8BA9;&#x52A9;&#x6559;&#x53D1;&#x4F60;&#x3002;<br>
<img src="https://rengwuxian.com/content/images/2022/04/c296e6f8690b7407f9167d1dfbd86c8.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"><br>
&#x5BFC;&#x822A;&#x6761;&#x5B8C;&#x6210;&#x4E4B;&#x540E;&#xFF0C;&#x5C31;&#x53EF;&#x4EE5;&#x505A;&#x4E0A;&#x9762;&#x7684;&#x90E8;&#x5206;&#x4E86;&#x3002;&#x90A3;&#x4E48;&#x5728;&#x505A;&#x8FD9;&#x90E8;&#x5206;&#x4E4B;&#x524D;&#xFF0C;&#x6211;&#x8981;&#x5148;&#x7528;&#x4E00;&#x4E2A; <code>Column()</code> &#x6765;&#x505A;&#x7EB5;&#x5411;&#x5E03;&#x5C40;&#x6765;&#x628A;&#x6574;&#x4E2A;&#x754C;&#x9762;&#x4E0A;&#x4E0B;&#x5206;&#x5F00;&#xFF0C;&#x4E0B;&#x9762;&#x662F;&#x5BFC;&#x822A;&#x6761;&#xFF0C;&#x4E0A;&#x9762;&#x5C31;&#x662F;&#x6211;&#x63A5;&#x4E0B;&#x6765;&#x8981;&#x5199;&#x7684;&#x90E8;&#x5206;&#xFF1A;</p>
<pre><code class="language-markdown">Column {
    
    NavBar()
}
</code></pre>
<p>&#x7531;&#x4E8E;&#x8FD9;&#x4E00;&#x90E8;&#x5206;&#x7684;&#x5185;&#x90E8;&#x4E5F;&#x662F;&#x7EB5;&#x5411;&#x7684;&#x5E03;&#x5C40;&#xFF0C;&#x6240;&#x4EE5;&#x6211;&#x518D;&#x5957;&#x4E00;&#x5C42; <code>Column()</code>&#xFF1A;</p>
<pre><code class="language-markdown">Column {
    Column {
    }
    NavBar()
}
</code></pre>
<p>&#x7136;&#x540E;&#x52A0;&#x4E2A;  <code>fillMaxWidth()</code> &#x8BA9;&#x5B83;&#x6A2A;&#x5411;&#x6491;&#x6EE1;&#xFF1B;&#x518D;&#x7ED9;&#x5B83;&#x4E2A; <code>weight()</code>&#xFF0C;&#x8BA9;&#x5B83;&#x7EB5;&#x5411;&#x6491;&#x6EE1;&#x5269;&#x4F59;&#x7A7A;&#x95F4;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x628A;&#x5BFC;&#x822A;&#x6761;&#x8E29;&#x5230;&#x5E95;&#xFF1A;</p>
<pre><code class="language-markdown">Column {
  Column(Modifier
      .fillMaxWidth()
      .weight(1f)
      .background(Color(0xfffafafa))) {
  }
  NavBar()
}
</code></pre>
<p><img src="http://image.rengwuxian.com/2022/03/21/e27fffbf4e914.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p>&#x597D;&#xFF0C;&#x63A5;&#x4E0B;&#x6765;&#x5C31;&#x8981;&#x586B;&#x5145;&#x4E0A;&#x9762;&#x8FD9;&#x4E00;&#x5927;&#x5757;&#x7A7A;&#x767D;&#x4E86;&#x3002;</p>
<p>&#x4ECE;&#x4E0A;&#x5230;&#x4E0B;&#x5730;&#x505A;&#xFF0C;&#x6240;&#x4EE5;&#x7B2C;&#x4E00;&#x6B65;&#x662F;&#x9876;&#x90E8;&#x7684;&#x57FA;&#x672C;&#x4FE1;&#x606F;&#x7684;&#x6A2A;&#x6761;&#x3002;</p>
<p>&#x6211;&#x53EF;&#x4EE5;&#x5148;&#x7528;&#x4E00;&#x4E2A; <code>Row()</code> &#x6765;&#x7ED9;&#x51FA;&#x6A2A;&#x5411;&#x7684;&#x5E03;&#x5C40;&#xFF1A;</p>
<pre><code class="language-markdown">Column {
  Column(
    Modifier
      .fillMaxWidth()
      .weight(1f)
      .background(Color(0xfffcfcfc))
  ) {
    Row {
      
    }
  }
  NavBar()
}
</code></pre>
<p>&#x7136;&#x540E;&#x5F80;&#x91CC;&#x9762;&#x4F9D;&#x6B21;&#x585E;&#x4E00;&#x4E2A;&#x5934;&#x50CF;&#x7684;&#x56FE;&#x7247;&#xFF1A;</p>
<pre><code class="language-markdown">Column {
  Column(
    Modifier
      .fillMaxWidth()
      .weight(1f)
      .background(Color(0xfffcfcfc))
  ) {
    Row {
      Image(
        painterResource(id = R.drawable.avatar_rengwuxian),
        &quot;&#x5934;&#x50CF;&quot;,
      )
    }
  }
  NavBar()
}
</code></pre>
<p><img src="http://image.rengwuxian.com/2022/03/21/50794a8101590.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p>&#x4E00;&#x4E2A;&#x7EB5;&#x5411;&#x5305;&#x7740;&#x4E24;&#x5757;&#x6587;&#x5B57;&#x7684; <code>Column()</code>&#xFF1A;</p>
<pre><code class="language-markdown">Column {
    Column(
        Modifier
            .fillMaxWidth()
            .weight(1f)
            .background(Color(0xfffcfcfc))
    ) {
        Row {
            Image(
                painterResource(id = R.drawable.avatar_rengwuxian),
                &quot;&#x5934;&#x50CF;&quot;,
            )
            Column {
                Text(&quot;&#x6B22;&#x8FCE;&#x56DE;&#x6765;&#xFF01;&quot;)
                Text(&quot;&#x5C0F;&#x6731;&quot;)
            }
        }
    }
    NavBar()
}
</code></pre>
<p><img src="http://image.rengwuxian.com/2022/03/21/f7eeba6ac74ba.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p>&#x548C;&#x4E00;&#x4E2A;&#x5C0F;&#x94C3;&#x94DB;&#xFF1A;</p>
<pre><code class="language-markdown">Column {
    Column(
        Modifier
            .fillMaxWidth()
            .weight(1f)
            .background(Color(0xfffcfcfc))
    ) {
        Row {
            Image(
                painterResource(id = R.drawable.avatar_rengwuxian),
                &quot;&#x5934;&#x50CF;&quot;,
            )
        }
        Column {
            Text(&quot;&#x6B22;&#x8FCE;&#x56DE;&#x6765;&#xFF01;&quot;)
            Text(&quot;&#x5C0F;&#x6731;&quot;)
        }
        Image(
            painterResource(R.drawable.notification_new),
            &quot;&#x901A;&#x77E5;&quot;
        )
    }
    NavBar()
}
</code></pre>
<p><img src="http://image.rengwuxian.com/2022/03/21/27ba8cd1daa14.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p>&#x4E1C;&#x897F;&#x90FD;&#x663E;&#x793A;&#x51FA;&#x6765;&#x4E86;&#xFF0C;&#x63A5;&#x4E0B;&#x6765;&#x7ED9;&#x5B83;&#x4EEC;&#x8C03;&#x8C03;&#x6837;&#x5F0F;&#x3002;</p>
<p>&#x5934;&#x50CF;&#x505A;&#x6210;&#x5706;&#x89D2;&#x7684;&#xFF0C;&#x5C3A;&#x5BF8;&#x4E5F;&#x8C03;&#x4E00;&#x4E0B;&#xFF1A;</p>
<pre><code class="language-markdown">Image(
    painterResource(id = R.drawable.avatar_rengwuxian),
    &quot;&#x5934;&#x50CF;&quot;,
    Modifier
        .size(64.dp)
        .clip(CircleShape)
)
</code></pre>
<p><img src="http://image.rengwuxian.com/2022/03/21/8aa86f6428c74.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p>&#x6587;&#x5B57;&#x7684;&#x989C;&#x8272;&#x548C;&#x6837;&#x5F0F;&#x4E5F;&#x6253;&#x78E8;&#x6253;&#x78E8;&#xFF1A;</p>
<pre><code class="language-markdown">Text(&quot;&#x6B22;&#x8FCE;&#x56DE;&#x6765;&#xFF01;&quot;, fontSize = 14.sp, color = Color(0xffb4b4b4))
Text(&quot;&#x5C0F;&#x6731;&quot;, fontSize = 18.sp, fontWeight = FontWeight.Bold)
</code></pre>
<p><img src="http://image.rengwuxian.com/2022/03/21/8e0535a7eba67.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p>&#x5C0F;&#x94C3;&#x94DB;&#x7ED9;&#x7F29;&#x5C0F;&#x70B9;&#xFF1A;</p>
<pre><code class="language-markdown">Image(
    painterResource(R.drawable.notification_new),
    &quot;&#x901A;&#x77E5;&quot;,
    Modifier.size(32.dp)
)
</code></pre>
<p><img src="http://image.rengwuxian.com/2022/03/21/3d6374c03bf3a.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p>&#x518D;&#x52A0;&#x4E2A;&#x5706;&#x5F62;&#x7684;&#x5E95;&#x5B50;&#xFF1A;</p>
<pre><code class="language-markdown">Surface(
    Modifier.clip(CircleShape),
    color = Color(0xfffef7f0)
) {
    Image(
        painterResource(R.drawable.notification_new),
        &quot;&#x901A;&#x77E5;&quot;,
        Modifier.padding(10.dp).size(32.dp)
    )
}
</code></pre>
<p><img src="http://image.rengwuxian.com/2022/03/21/0b7fcc1e9c753.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p>&#x6837;&#x5F0F;&#x8C03;&#x597D;&#x4E4B;&#x540E;&#xFF0C;&#x518D;&#x7EDF;&#x4E00;&#x8C03;&#x6574;&#x4E00;&#x4E0B;&#x5B83;&#x4EEC;&#x7684;&#x5E03;&#x5C40;&#xFF1A;</p>
<pre><code class="language-markdown">Row(
    Modifier.fillMaxWidth(),
    verticalAlignment = Alignment.CenterVertically
) {
    Image(
        painterResource(id = R.drawable.avatar_rengwuxian),
        &quot;&#x5934;&#x50CF;&quot;,
        Modifier.size(64.dp).clip(CircleShape)
    )
    Column(
        Modifier.padding(start = 14.dp).weight(1f)
    ) {
        Text(&quot;&#x6B22;&#x8FCE;&#x56DE;&#x6765;&#xFF01;&quot;, fontSize = 14.sp, color = Color(0xffb4b4b4))
        Spacer(modifier = Modifier.height(6.dp))
        Text(&quot;&#x5C0F;&#x6731;&quot;, fontSize = 18.sp, fontWeight = FontWeight.Bold)
    }
    Surface(
        Modifier.clip(CircleShape),
        color = Color(0xfffef7f0)
    ) {
        Image(
            painterResource(R.drawable.notification_new),
            &quot;&#x901A;&#x77E5;&quot;,
            Modifier
                .padding(10.dp)
                .size(32.dp)
        )
    }
}
</code></pre>
<p><img src="http://image.rengwuxian.com/2022/03/21/4758af46da14d.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p>&#x7136;&#x540E;&#x7ED9;&#x6574;&#x4E2A; <code>Row()</code> &#x52A0;&#x4E0A;&#x4E2A; <code>padding()</code>&#xFF1A;</p>
<pre><code class="language-markdown">Row(
    Modifier
        .fillMaxWidth()
        .padding(28.dp, 36.dp, 28.dp, 16.dp),
    verticalAlignment = Alignment.CenterVertically
)
</code></pre>
<p><img src="http://image.rengwuxian.com/2022/03/21/317ebe049d4ee.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p>&#x597D;&#xFF0C;&#x8FD9;&#x4E2A;&#x9876;&#x680F;&#x5C31;&#x5B8C;&#x6210;&#x4E86;&#x3002;&#x6211;&#x628A;&#x5B83;&#x7684;&#x4EE3;&#x7801;&#x4E5F;&#x62BD;&#x5230;&#x5355;&#x72EC;&#x7684;&#x51FD;&#x6570;&#x91CC;&#xFF0C;&#x5E72;&#x5E72;&#x51C0;&#x51C0;&#xFF1A;</p>
<pre><code class="language-markdown">Column {
    Column(
        Modifier
            .fillMaxWidth()
            .weight(1f)
            .background(Color(0xfffcfcfc))
    ) {
        TopBar()
    }
    NavBar()
}

&#x5F80;&#x4E0B;&#x662F;&#x4E00;&#x4E2A;&#x641C;&#x7D22;&#x680F;&#xFF1A;
Column(...) {
    TopBar()
    SearchBar()
}

-&gt;

@Composable
fun SearchBar() {

}
</code></pre>
<p>&#x4E00;&#x6837;&#x7684;&#x5199;&#x6CD5;&#xFF0C;&#x57FA;&#x672C;&#x6CA1;&#x4EC0;&#x4E48;&#x597D;&#x8BF4;&#x7684;&#xFF1A;</p>
<pre><code class="language-markdown">@Composable
fun SearchBar() {
  Row(
    Modifier
      .padding(24.dp, 12.dp)
      .fillMaxWidth()
      .height(56.dp)
      .clip(RoundedCornerShape(28.dp))
      .background(Color.White), verticalAlignment = Alignment.CenterVertically
  ) {
    var searchText by remember { mutableStateOf(&quot;&quot;) }
    BasicTextField(
      searchText, { searchText = it }, Modifier
        .padding(start = 24.dp)
        .weight(1f), textStyle = TextStyle(fontSize = 16.sp)
    ) {
      if (searchText.isEmpty()) {
        Text(&quot;&#x641C;&#x641C;&#x770B;&#xFF1F;&quot;, color = Color(0xffb4b4b4), fontSize = 16.sp)
      }
      it()
    }
    Box(
      Modifier
        .padding(6.dp)
        .fillMaxHeight()
        .aspectRatio(1f)
        .clip(CircleShape)
        .background(Color(0xfffa9e51))
    ) {
      Icon(
        painterResource(R.drawable.ic_search), &quot;&#x641C;&#x7D22;&quot;,
        Modifier
          .size(24.dp)
          .align(Alignment.Center),
        tint = Color.White
      )
    }
  }
}
</code></pre>
<p><img src="http://image.rengwuxian.com/2022/03/21/ad24c044bf775.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p>&#x53EA;&#x6709;&#x4E00;&#x70B9;&#xFF1A;&#x5B83;&#x7684;&#x63D0;&#x793A;&#x6587;&#x5B57;&#x7684;&#x5199;&#x6CD5;&#x548C;&#x4F20;&#x7EDF;&#x7684; <code>EditText()</code>&#x4E0D;&#x4E00;&#x6837;&#xFF0C;&#x662F;&#x6211;&#x81EA;&#x5DF1;&#x624B;&#x5199;&#x7684;&#xFF1A;</p>
<p><img src="http://image.rengwuxian.com/2022/03/21/e3916a82a75d8.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p><img src="http://image.rengwuxian.com/2022/03/21/ad24c044bf775.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p><img src="http://image.rengwuxian.com/2022/03/21/90823a28fdb2e.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p>&#x8FD9;&#x79CD;&#x5199;&#x6CD5;&#x770B;&#x8D77;&#x6765;&#x6BD4;&#x8F83;&#x9EBB;&#x70E6;&#xFF0C;&#x4F46;&#x662F;&#x6781;&#x5927;&#x5730;&#x589E;&#x52A0;&#x4E86;&#x7075;&#x6D3B;&#x6027;&#x3002;&#x6BD4;&#x5982;&#x6211;&#x53EF;&#x4EE5;&#x7ED9;&#x5B83;&#x52A0;&#x4E2A;&#x56FE;&#x6807;&#x3001;&#x52A0;&#x4E2A;&#x5E2E;&#x52A9;&#x6587;&#x5B57;&#x3001;&#x62A5;&#x9519;&#x6587;&#x5B57;&#xFF0C;&#x76F4;&#x63A5;&#x52A0;&#x5C31;&#x884C;&#xFF0C;&#x800C;&#x4E14;&#x683C;&#x5F0F;&#x5B8C;&#x5168;&#x4E0D;&#x53D7;&#x9650;&#x5236;&#xFF0C;&#x800C;&#x5728;&#x4F20;&#x7EDF;&#x7684; <code>EditText</code> &#x91CC;&#x53EA;&#x80FD;&#x9760;&#x81EA;&#x5B9A;&#x4E49; View &#x6765;&#x5B9E;&#x73B0;&#x8FD9;&#x4E9B;&#x529F;&#x80FD;&#x3002;<strong>&#x5176;&#x5B9E; Compose &#x5B98;&#x65B9;&#x4E5F;&#x5176;&#x5B9E;&#x63D0;&#x4F9B;&#x4E86;&#x66F4;&#x7B80;&#x5355;&#x7684;&#x63D0;&#x793A;&#x6587;&#x5B57;&#x7684;&#x5199;&#x6CD5;&#xFF0C;&#x76F4;&#x63A5;&#x586B;&#x5199;&#x4E00;&#x4E2A;&#x5B57;&#x7B26;&#x4E32;&#x7C7B;&#x578B;&#x7684; <code>label</code> &#x53C2;&#x6570;&#x5C31;&#x884C;&#xFF1A;</strong></p>
<pre><code class="language-markdown">TextField(
    value = text,
    onValueChange = { text = it },
    label = { Text(&quot;Label&quot;) }
)
</code></pre>
<p><img src="http://image.rengwuxian.com/2022/03/21/a17d2f3cf648a.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p><strong>&#x53EA;&#x662F;&#x8FD9;&#x79CD;&#x5199;&#x6CD5;&#x8981;&#x7528; Material Design &#x7684;&#x6837;&#x5F0F;&#xFF0C;&#x800C;&#x6211;&#x60F3;&#x5B8C;&#x5168;&#x81EA;&#x5DF1;&#x5B9A;&#x5236;&#x6837;&#x5F0F;&#xFF0C;&#x6240;&#x4EE5;&#x5C31;&#x6CA1;&#x7528;&#x5B83;&#x3002;</strong></p>
<p>&#x641C;&#x7D22;&#x680F;&#x518D;&#x5F80;&#x4E0B;&#xFF0C;&#x5C31;&#x662F;&#x6838;&#x5FC3;&#x533A;&#x57DF;&#x4E86;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x88AB;&#x56F4;&#x89C2;&#x7684;&#x4EBA;&#x7684;&#x4FE1;&#x606F;&#x3002;&#x2014;&#x2014;&#x521A;&#x624D;&#x6211;&#x8BF4;&#x8FC7;&#xFF0C;&#x8FD9;&#x662F;&#x4E2A;&#x53EB;&#x505A;&#x300A;&#x56F4;&#x89C2;&#x300B;&#x7684; App &#x8FD8;&#x8BB0;&#x5F97;&#x5417;&#xFF1F;&#x867D;&#x7136;&#x662F;&#x865A;&#x6784;&#x7684;&#x3002;</p>
<p>&#x56F4;&#x89C2;&#x533A;&#x57DF;&#x6700;&#x4E0A;&#x9762;&#x662F;&#x88AB;&#x56F4;&#x89C2;&#x7684;&#x4EBA;&#x540D;&#x5217;&#x8868;&#xFF0C;&#x8FD9;&#x4E2A;&#x5F88;&#x7B80;&#x5355;&#xFF0C;&#x6A2A;&#x5411;&#x5E03;&#x5C40;&#x91CC;&#x5305;&#x7740;&#x4E00;&#x4E9B;&#x6587;&#x5B57;&#x5C31;&#x5B8C;&#x4E86;&#xFF0C;&#x5176;&#x4E2D;&#x88AB;&#x9009;&#x4E2D;&#x7684;&#x6587;&#x5B57;&#x5E95;&#x90E8;&#x6709;&#x4E00;&#x4E2A;&#x5706;&#x5934;&#x7684;&#x6A2A;&#x6761;&#xFF1A;</p>
<pre><code class="language-markdown">TopBar()
SearchBar()
NamesBar()

...

@Composable
fun NamesBar() {
    val names = listOf(&quot;&#x6254;&#x7269;&#x7EBF;&quot;, &quot;&#x6731;&#x51EF;&quot;, &quot;&#x8001;&#x51AF;&quot;, &quot;&#x90DD;&#x54E5;&quot;, &quot;&#x5F20;&#x4E09;&quot;, &quot;&#x5B59;&#x609F;&#x7A7A;&quot;)
    var selected by remember { mutableStateOf(0) }
    LazyRow(Modifier.padding(0.dp, 8.dp), contentPadding = PaddingValues(12.dp, 0.dp)) {
        itemsIndexed(names) { index, name -&gt;
            Column(Modifier.padding(16.dp, 4.dp).width(IntrinsicSize.Max)) {
                Text(name, color = if (index == selected) Color(0xfffa9e51) else Color(0xffb4b4b4))
                if (index == selected) {
                    Box(
                        Modifier.fillMaxWidth().height(2.dp).clip(RoundedCornerShape(1.dp))
                            .background(Color(0xfffa9e51))
                    )
                }
            }
        }
    }
}
</code></pre>
<p>&#x5173;&#x4E8E;&#x8FD9;&#x91CC;&#x552F;&#x4E00;&#x9700;&#x8981;&#x8BF4;&#x7684;&#x662F;&#xFF0C;&#x7531;&#x4E8E;&#x5217;&#x8868;&#x7684;&#x5185;&#x5BB9;&#x662F;&#x53EF;&#x4EE5;&#x6ED1;&#x52A8;&#x7684;&#xFF0C;&#x6240;&#x4EE5;&#x9700;&#x8981;&#x7528; <code>LazyRow()</code> &#x800C;&#x4E0D;&#x662F; <code>Row()</code>&#x3002;&#x8FD9;&#x4E2A; <code>LazyRow()</code> &#x7684;&#x529F;&#x80FD;&#x5BF9;&#x6807;&#x7684;&#x662F;&#x4F20;&#x7EDF;&#x5199;&#x6CD5;&#x7684; <code>RecyclerView</code>&#xFF0C;&#x4E0D;&#x8FC7;&#x5199;&#x8D77;&#x6765;&#x7B80;&#x5355;&#x4E00;&#x4E9B;&#xFF0C;&#x4E0D;&#x7528; <code>Adapter</code>&#xFF0C;&#x4E5F;&#x4E0D;&#x7528; <code>ViewHolder</code>&#xFF0C;&#x76F4;&#x63A5;&#x5FAA;&#x73AF;&#x904D;&#x5386;&#x6BCF;&#x4E00;&#x9879;&#x7136;&#x540E;&#x76F4;&#x63A5;&#x5199;&#x6BCF;&#x4E2A;&#x9879;&#x76EE;&#x7684;&#x5E03;&#x5C40;&#x5C31;&#x5B8C;&#x4E86;&#xFF1A;<br>
<img src="http://image.rengwuxian.com/2022/03/21/1e15424d1aee9.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"><br>
&#x867D;&#x7136;&#x770B;&#x8D77;&#x6765;&#x662F;&#x904D;&#x5386;&#x7684;&#x5199;&#x6CD5;&#xFF0C;&#x4F46; Compose &#x4F9D;&#x7136;&#x4F1A;&#x548C; <code>RecyclerView</code>&#x4E00;&#x6837;&#x52A8;&#x6001;&#x52A0;&#x8F7D;&#xFF0C;&#x7528;&#x5230;&#x54EA;&#x4E00;&#x9879;&#x624D;&#x5E03;&#x5C40;&#x548C;&#x7ED8;&#x5236;&#x54EA;&#x4E00;&#x9879;&#xFF0C;&#x4E0D;&#x4F1A;&#x50CF;&#x4EE3;&#x7801;&#x770B;&#x8D77;&#x6765;&#x90A3;&#x6837;&#x8001;&#x8001;&#x5B9E;&#x5B9E;&#x5730;&#x628A;&#x6BCF;&#x4E00;&#x9879;&#x90FD;&#x6309;&#x987A;&#x5E8F;&#x5168;&#x90E8;&#x8BA1;&#x7B97;&#xFF0C;&#x6240;&#x4EE5;&#x867D;&#x7136;&#x662F;&#x904D;&#x5386;&#x7684;&#x5199;&#x6CD5;&#xFF0C;&#x4F46;&#x6027;&#x80FD;&#x4E0A;&#x4E0D;&#x4F1A;&#x7206;&#x70B8;&#x3002;</p>
<p>&#x540D;&#x5B57;&#x5217;&#x8868;&#x518D;&#x5F80;&#x4E0B;&#xFF0C;&#x662F;&#x4E00;&#x4E2A;&#x53EB;&#x505A;&#x300C;TA &#x7231;&#x7684;&#x300D;&#x7684;&#x533A;&#x57DF;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x8FD9;&#x4E2A;&#x88AB;&#x56F4;&#x89C2;&#x7684;&#x4EBA;&#x4ED6;&#x90FD;&#x559C;&#x6B22;&#x4EC0;&#x4E48;&#x3002;&#x90A3;&#x4E48;&#x9996;&#x5148;&#xFF0C;&#x6765;&#x4E2A;&#x6807;&#x9898;&#x680F;&#xFF1A;</p>
<pre><code class="language-markdown">TopBar()
SearchBar()
NamesBar()
LovesArea()

...

@Composable
fun LovesArea() {
  Row(
    Modifier
      .padding(24.dp, 12.dp, 24.dp)
      .fillMaxWidth()
  ) {
    Text(&quot;TA &#x7231;&#x7684;&quot;, fontSize = 16.sp, fontWeight = FontWeight.Bold)
    Spacer(Modifier.weight(1f))
    Text(&quot;&#x67E5;&#x770B;&#x5168;&#x90E8;&quot;, fontSize = 15.sp, color = Color(0xffb4b4b4))
  }
}
</code></pre>
<p><img src="http://image.rengwuxian.com/2022/03/21/eac455a0c2da2.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p>&#x597D;&#xFF0C;&#x6807;&#x9898;&#x680F;&#x7684;&#x4E0B;&#x65B9;&#x662F;&#x6A2A;&#x5411;&#x6392;&#x5E03;&#x7684;&#x90A3;&#x4E9B;&#x300C;&#x7231;&#x300D;&#x7684;&#x5217;&#x8868;&#xFF1A;</p>
<pre><code class="language-markdown">@Composable
fun LovesArea() {
  Column {
    Row(
      Modifier
        .padding(24.dp, 12.dp, 24.dp)
        .fillMaxWidth()
    ) {
      Text(&quot;TA &#x7231;&#x7684;&quot;, fontSize = 16.sp, fontWeight = FontWeight.Bold)
      Spacer(Modifier.weight(1f))
      Text(&quot;&#x67E5;&#x770B;&#x5168;&#x90E8;&quot;, fontSize = 15.sp, color = Color(0xffb4b4b4))
    }
    // &#x5C31;&#x8FD9;&#x91CC;
  }
}
</code></pre>
<p>&#x7531;&#x4E8E;&#x662F;&#x4E2A;&#x5217;&#x8868;&#xFF0C;&#x6240;&#x4EE5;&#x6211;&#x7528; <code>LazyRow()</code> &#x800C;&#x4E0D;&#x662F; <code>Row()</code>&#xFF1A;</p>
<pre><code class="language-markdown">LazyRow {
}
</code></pre>
<p>&#x91CC;&#x9762;&#x5185;&#x5BB9;&#x7684;&#x586B;&#x5145;&#x8FD8;&#x662F;&#x540C;&#x6837;&#x7684;&#x5957;&#x8DEF;&#xFF0C;&#x505A;&#x5B8C;&#x4E4B;&#x540E;&#x5C31;&#x662F;&#x8FD9;&#x4E2A;&#x6837;&#x5B50;&#xFF1A;</p>
<p><img src="http://image.rengwuxian.com/2022/03/21/88ce1ad197f77.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p>&#x7136;&#x540E;&#x6211;&#x7528; <code>LazyRow()</code> &#x7684; <code>horizontalArrangement</code> &#x53C2;&#x6570;&#x6765;&#x628A;&#x5143;&#x7D20;&#x4E92;&#x76F8;&#x9694;&#x5F00;&#xFF1A;</p>
<pre><code class="language-markdown">LazyRow(horizontalArrangement = Arrangement.spacedBy(24.dp)) {
    ...
}
</code></pre>
<p><img src="http://image.rengwuxian.com/2022/03/21/562cb14bc02ac.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"><br>
&#x518D;&#x7528; <code>contentPadding</code> &#x6765;&#x7ED9;&#x4E24;&#x5934;&#x4E5F;&#x52A0;&#x4E0A;&#x70B9;&#x7A7A;&#x767D;&#xFF1A;</p>
<pre><code class="language-markdown">LazyRow(horizontalArrangement = Arrangement.spacedBy(24.dp),
       contentPadding = PaddingValues(24.dp, 0.dp)) {
    ...
}
</code></pre>
<p><img src="http://image.rengwuxian.com/2022/03/21/60df80ddf173c.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p>&#x8FD9;&#x4E2A; <code>contentPadding</code>&#xFF0C;&#x5B83;&#x548C; <code>padding()</code> &#x7684;&#x533A;&#x522B;&#x662F;&#xFF0C;&#x5728;&#x6ED1;&#x52A8;&#x7684;&#x65F6;&#x5019;&#x5185;&#x5BB9;&#x4E0D;&#x4F1A;&#x5728;&#x4E24;&#x5934;&#x88AB;&#x5207;&#x6389;&#xFF0C;&#x800C;&#x662F;&#x4F1A;&#x89E6;&#x8FBE;&#x5230;&#x6ED1;&#x52A8;&#x533A;&#x57DF;&#x7684;&#x8FB9;&#x7F18;&#xFF1A;</p>
<p><img src="http://image.rengwuxian.com/2022/03/21/3660981fb250f.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p>&#x90A3;&#x4E48;&#x8FD9;&#x4E2A;&#x300C;TA &#x7231;&#x7684;&#x300D;&#x90E8;&#x5206;&#x5C31;&#x4E5F;&#x505A;&#x5B8C;&#x4E86;&#x3002;&#x770B;&#x7740;&#x8FD8;&#x4E0D;&#x9519;&#xFF0C;&#x662F;&#x5427;&#xFF1F;</p>
<p>&#x5269;&#x4E0B;&#x7684;&#x4E5F;&#x90FD;&#x662F;&#x8FD9;&#x4E2A;&#x5199;&#x6CD5;&#xFF0C;&#x6BD4;&#x5982;&#x518D;&#x5F80;&#x4E0B;&#x7684;&#x300C;TA &#x53BB;&#x8FC7;&#x300D;&#x677F;&#x5757;&#xFF1A;</p>
<p><img src="http://image.rengwuxian.com/2022/03/21/16877aac20770.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p>&#x4EE5;&#x53CA;&#x8FD9;&#x91CC;&#x7684;&#x9879;&#x76EE;&#x88AB;&#x70B9;&#x5F00;&#x540E;&#x7684;&#x65B0;&#x9875;&#x9762;&#xFF1A;</p>
<p><img src="http://image.rengwuxian.com/2022/03/21/e388c72800cbc.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p>&#x6240;&#x4EE5;&#x5E03;&#x5C40;&#x4EE3;&#x7801;&#x6211;&#x5C31;&#x4E0D;&#x53CD;&#x590D;&#x8BF4;&#x4E86;&#x3002;&#x91CD;&#x70B9;&#x8BF4;&#x4E00;&#x4E0B;&#x8FD9;&#x4E2A;&#x6253;&#x5F00;&#x548C;&#x5173;&#x95ED;&#x7684;&#x52A8;&#x753B;&#xFF1A;</p>
<p><img src="http://image.rengwuxian.com/2022/03/21/aa79d6920fd24.gif" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<p>&#x52A8;&#x753B;&#x662F;&#x5206;&#x591A;&#x79CD;&#x7684;&#xFF0C;&#x8FD9;&#x79CD;&#x5B9E;&#x8D28;&#x4E0A;&#x5C5E;&#x4E8E;&#x754C;&#x9762;&#x8DF3;&#x8F6C;&#x7684;&#x8FC7;&#x6E21;&#x52A8;&#x753B;&#x3002;&#x8981;&#x505A;&#x8FD9;&#x79CD;&#x52A8;&#x753B;&#xFF0C;&#x6700;&#x4F20;&#x7EDF;&#x7684;&#x65B9;&#x5F0F;&#x662F;&#x7528; Android &#x63D0;&#x4F9B;&#x7684; Transition API&#x3002;&#x4E0D;&#x8FC7; Transition API &#x7684;&#x7684;&#x6548;&#x679C;&#x4F1A;&#x5DEE;&#x4E00;&#x4E9B;&#xFF0C;&#x5982;&#x679C;&#x4E0D;&#x6D89;&#x53CA; Activity &#x6216;&#x8005; Fragment &#x7684;&#x8DF3;&#x8F6C;&#xFF0C;&#x8FC7;&#x6E21;&#x52A8;&#x753B;&#x4E5F;&#x53EF;&#x4EE5;&#x9009;&#x62E9;&#x7528; Jetpack &#x7684; MotionLayout &#x6765;&#x5B9E;&#x73B0;&#x3002;MotionLayout &#x5728; Compose &#x91CC;&#x4E5F;&#x662F;&#x53EF;&#x4EE5;&#x7528;&#x7684;&#xFF0C;&#x4E0D;&#x8FC7;&#x6211;&#x8FD8;&#x6CA1;&#x8BD5;&#x8FC7; Compose &#x91CC;&#x7684; MotionLayout &#x7684;&#x529F;&#x80FD;&#x5168;&#x4E0D;&#x5168;&#xFF0C;&#x6211;&#x5728;&#x8FD9;&#x91CC;&#x662F;&#x76F4;&#x63A5;&#x7528; Compose &#x7684;&#x52A8;&#x753B; API &#x6765;&#x5B9E;&#x73B0;&#x7684;&#x8FD9;&#x4E2A;&#x8FC7;&#x6E21;&#x6548;&#x679C;&#x3002;&#x539F;&#x7406;&#x5F88;&#x7B80;&#x5355;&#xFF1A;&#x7ED9;&#x8FD9;&#x4E2A;&#x8BE6;&#x60C5;&#x9875;&#x8BBE;&#x7F6E;&#x56DB;&#x79CD;&#x72B6;&#x6001;&#xFF1A;&#x672A;&#x6253;&#x5F00;&#x3001;&#x5DF2;&#x6253;&#x5F00;&#x3001;&#x6253;&#x5F00;&#x4E2D;&#x4EE5;&#x53CA;&#x5173;&#x95ED;&#x4E2D;&#xFF0C;&#x901A;&#x8FC7;&#x72B6;&#x6001;&#x6765;&#x6E10;&#x53D8;&#x5F0F;&#x64CD;&#x4F5C;&#x8BE6;&#x60C5;&#x9875;&#x4E2D;&#x7684;&#x5404;&#x4E2A;&#x5C5E;&#x6027;&#x7684;&#x503C;&#x2014;&#x2014;&#x6BD4;&#x5982;&#x6BCF;&#x4E2A;&#x7EC4;&#x4EF6;&#x7684;&#x5C3A;&#x5BF8;&#x548C;&#x504F;&#x79FB;&#x2014;&#x2014;&#x4ECE;&#x800C;&#x8FBE;&#x5230;&#x8BE6;&#x60C5;&#x9875;&#x7684;&#x663E;&#x793A;&#x548C;&#x5173;&#x95ED;&#x52A8;&#x4F5C;&#x7684;&#x52A8;&#x753B;&#x5F62;&#x5F0F;&#x7684;&#x5448;&#x73B0;&#x3002;</p>
<p>&#x6548;&#x679C;&#x8FD8;&#x4E0D;&#x9519;&#x54C8;&#xFF1F;&#x5B9E;&#x9645;&#x4E0A;&#x5982;&#x679C;&#x4F60;&#x4E0D;&#x4F1A; Compose&#xFF0C;&#x6216;&#x8005;&#x4F60;&#x4EEC;&#x516C;&#x53F8;&#x7684;&#x9879;&#x76EE;&#x91CC;&#x6CA1;&#x5728;&#x7528; Compose&#xFF0C;&#x800C;&#x662F;&#x7528;&#x7684;&#x4F20;&#x7EDF;&#x7684; View &#x7CFB;&#x7EDF;&#xFF0C;&#x8FD9;&#x79CD;&#x6548;&#x679C;&#x4E5F;&#x662F;&#x53EF;&#x4EE5;&#x5B9E;&#x73B0;&#x7684;&#xFF0C;&#x4F60;&#x6709;&#x4E24;&#x4E2A;&#x9009;&#x62E9;&#xFF1A;&#x81EA;&#x5B9A;&#x4E49; View&#xFF0C;&#x6216;&#x8005; MotionLayout&#x3002;&#x5176;&#x4E2D;&#x81EA;&#x5B9A;&#x4E49; View &#x4F1A;&#x9EBB;&#x70E6;&#x4E00;&#x70B9;&#xFF0C;MotionLayout &#x5C31;&#x7B80;&#x5355;&#x5F88;&#x591A;&#xFF0C;&#x6027;&#x80FD;&#x4E0A;&#x4E5F;&#x4E0D;&#x4E00;&#x5B9A;&#x4F1A;&#x6BD4; Compose &#x66F4;&#x5DEE;&#x2014;&#x2014;&#x751A;&#x81F3;&#x5BF9;&#x4E8E;&#x73B0;&#x5728;&#x6765;&#x8BF4;&#x53EF;&#x80FD;&#x4F1A;&#x597D;&#x4E00;&#x70B9;&#xFF0C;&#x8FD9;&#x4E2A;&#x6211;&#x4E0D;&#x786E;&#x5B9A;&#xFF0C;&#x56E0;&#x4E3A;&#x867D;&#x7136; Compose &#x7684;&#x7406;&#x8BBA;&#x6027;&#x80FD;&#x662F;&#x6BD4; View &#x7CFB;&#x7EDF;&#x66F4;&#x597D;&#x7684;&#xFF0C;&#x5305;&#x62EC; MotionLayout&#xFF0C;&#x4F46;&#x5B83;&#x4E0D;&#x662F;&#x6BD4;&#x8F83;&#x65B0;&#x561B;&#xFF0C;&#x6240;&#x4EE5;&#x6211;&#x4E0D;&#x786E;&#x5B9A;&#x5B83;&#x6BCF;&#x4E2A;&#x90E8;&#x5206;&#x7684;&#x7EC6;&#x8282;&#x4F18;&#x5316;&#x8DDF;&#x6CA1;&#x8DDF;&#x4E0A;&#x3002;</p>
<p>&#x53E6;&#x5916;&#x636E;&#x6211;&#x6240;&#x77E5;&#xFF0C;Compose &#x5728;&#x52A8;&#x753B;&#x65B9;&#x9762;&#x4E5F;&#x6B63;&#x5728;&#x505A;&#x66F4;&#x591A;&#x7684;&#x5DE5;&#x4F5C;&#xFF0C;&#x5176;&#x4E2D;&#x5C31;&#x5305;&#x62EC;&#x8BA9;&#x8FD9;&#x79CD;&#x8FC7;&#x6E21;&#x52A8;&#x753B;&#x7684;&#x5F00;&#x53D1;&#x53EF;&#x4EE5;&#x66F4;&#x52A0;&#x7B80;&#x4FBF;&#x3002;&#x867D;&#x7136;&#x50CF;&#x6211;&#x8FD9;&#x6837;&#x624B;&#x5199;&#x6574;&#x4E2A;&#x52A8;&#x753B;&#x8FC7;&#x7A0B;&#x4E5F;&#x4E0D;&#x662F;&#x5F88;&#x9EBB;&#x70E6;&#xFF0C;&#x4F46;&#x662F;&#x5982;&#x679C;&#x6709;&#x4E86;&#x5B98;&#x65B9;&#x7684;&#x66F4;&#x7701;&#x4E8B;&#x7684; API&#xFF0C;&#x90A3;&#x80AF;&#x5B9A;&#x8FD8;&#x662F;&#x66F4;&#x597D;&#x7684;&#x3002;&#x8C01;&#x8FD8;&#x4E0D;&#x662F;&#x4E2A;&#x5C0F;&#x61D2;&#x86CB;&#x5462;&#xFF1F;</p>
<p><strong>&#x8FD9;&#x90E8;&#x5206;&#x52A8;&#x753B;&#x7684;&#x8BE6;&#x7EC6;&#x4EE3;&#x7801;&#x5927;&#x5BB6;&#x53EF;&#x4EE5;&#x53BB;&#x770B;&#x6211;&#x7684;&#x6E90;&#x7801;&#xFF0C;&#x52A0;&#x6211;&#x7684;&#x52A9;&#x6559;&#xFF0C;&#x8BA9;&#x5979;&#x53D1;&#x4F60;&#x5C31;&#x884C;&#xFF0C;&#x800C;&#x4E14;&#x6211;&#x7684; Compose &#x8BFE;&#x7A0B;&#x6B63;&#x5F0F;&#x7248;&#x4E2D;&#x4E5F;&#x4F1A;&#x7D27;&#x8DDF;&#x5B98;&#x65B9;&#x7684;&#x811A;&#x6B65;&#xFF0C;&#x6269;&#x5145;&#x52A8;&#x753B;&#x76F8;&#x5173;&#x7684;&#x5185;&#x5BB9;&#x3002;</strong><br>
<img src="https://rengwuxian.com/content/images/2022/04/c296e6f8690b7407f9167d1dfbd86c8.png" alt="&#x3010;&#x5E26;&#x6E90;&#x7801;&#x3011;&#x6211;&#x53C8;&#x7528;Jetpack Compose&#x505A;&#x4E86;&#x4E2A;&#x793A;&#x4F8B;App&#xFF0C;&#x662F;&#x600E;&#x6837;&#x7684;&#x4F53;&#x9A8C;&#xFF1F;" loading="lazy"></p>
<h2 id="%E7%BB%93%E5%B0%BE">&#x7ED3;&#x5C3E;</h2>
<p>&#x4ECA;&#x5929;&#x5C31;&#x662F;&#x8FD9;&#x4E9B;&#x4E86;&#xFF0C;&#x559C;&#x6B22;&#x7684;&#x8BDD;&#x8BF7;&#x5927;&#x5BB6;&#x70B9;&#x4E2A;&#x8D5E;&#xFF0C;&#x4F60;&#x4EEC;&#x7684;&#x652F;&#x6301;&#x5BF9;&#x6211;&#x5F88;&#x91CD;&#x8981;&#x3002;&#x5173;&#x4E8E; Compose&#xFF0C;&#x4EE5;&#x53CA;&#x521A;&#x624D;&#x6211;&#x63D0;&#x5230;&#x7684; MotionLayout&#xFF0C;&#x8FD8;&#x6709;&#x66F4;&#x591A;&#x7684;&#x5404;&#x79CD; Android &#x5F00;&#x53D1;&#x7684;&#x5185;&#x5BB9;&#xFF0C;&#x6211;&#x4EE5;&#x540E;&#x4E5F;&#x4F1A;&#x505A;&#x66F4;&#x591A;&#x5206;&#x4EAB;&#x3002;<br>
&#x5173;&#x6CE8;&#x6211;&#xFF0C;&#x4E0D;&#x9519;&#x8FC7;&#x6211;&#x7684;&#x4EFB;&#x4F55;&#x65B0;&#x5185;&#x5BB9;&#x3002;&#x6211;&#x662F;&#x6254;&#x7269;&#x7EBF;&#xFF0C;&#x6211;&#x4E0D;&#x548C;&#x4F60;&#x6BD4;&#x9AD8;&#x4F4E;&#xFF0C;&#x6211;&#x53EA;&#x52A9;&#x4F60;&#x6210;&#x957F;&#x3002;</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[为什么要成为 GDE（谷歌认证开发专家）？我发现了盲点]]></title><description><![CDATA[我是扔物线朱凯，中国第一名 Android GDE 和第一名 Kotlin GDE。最初我加入 GDE 是因为工作原因，但慢慢地我发现 GDE 有更重要的意义：影响。影响 Google，影响世界。]]></description><link>https://rengwuxian.com/gde-sense/</link><guid isPermaLink="false">6149fde5faf0486eb62aca57</guid><dc:creator><![CDATA[扔物线]]></dc:creator><pubDate>Tue, 21 Sep 2021 22:00:00 GMT</pubDate><media:content url="https://rengwuxian.com/content/images/2021/09/GDE---.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h2 id="%E8%A7%86%E9%A2%91%E5%85%88%E8%A1%8C">&#x89C6;&#x9891;&#x5148;&#x884C;</h2>
<iframe width="100%" height="480" src="//player.bilibili.com/player.html?bvid=BV1L64y187Xf&amp;page=1&amp;high_quality=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>
<blockquote>
<img src="https://rengwuxian.com/content/images/2021/09/GDE---.png" alt="&#x4E3A;&#x4EC0;&#x4E48;&#x8981;&#x6210;&#x4E3A; GDE&#xFF08;&#x8C37;&#x6B4C;&#x8BA4;&#x8BC1;&#x5F00;&#x53D1;&#x4E13;&#x5BB6;&#xFF09;&#xFF1F;&#x6211;&#x53D1;&#x73B0;&#x4E86;&#x76F2;&#x70B9;"><p>&#x4E0B;&#x9762;&#x662F;&#x89C6;&#x9891;&#x5185;&#x5BB9;&#x7684;&#x811A;&#x672C;&#x6574;&#x7406;&#x7A3F;&#x3002;&#x5982;&#x679C;&#x4F60;&#x770B;&#x4E86;&#x89C6;&#x9891;&#xFF0C;&#x90A3;&#x4E0B;&#x9762;&#x7684;&#x6587;&#x7A3F;&#x5C31;&#x4E0D;&#x7528;&#x770B;&#x4E86;&#xFF0C;&#x76F4;&#x63A5;&#x7FFB;&#x5230;&#x5E95;&#x90E8;&#x8BC4;&#x8BBA;&#x533A;&#x5427;&#x3002;</p>
</blockquote>
<h2 id="%E6%96%87%E5%AD%97%E7%89%88">&#x6587;&#x5B57;&#x7248;</h2>
<p>&#x5927;&#x5BB6;&#x597D;&#xFF0C;&#x6211;&#x662F;&#x6254;&#x7269;&#x7EBF;&#x6731;&#x51EF;&#x3002;</p>
<p>&#x5728;&#x6211;&#x6BCF;&#x671F;&#x7684;&#x89C6;&#x9891;&#x5F00;&#x59CB;&#x4EE5;&#x540E;&#xFF0C;&#x53F3;&#x4E0B;&#x89D2;&#x7684;&#x4E2A;&#x4EBA;&#x4ECB;&#x7ECD;&#x91CC;&#x90FD;&#x6709;&#x4E24;&#x4E2A; GDE &#x7684;&#x8EAB;&#x4EFD;&#x6807;&#x7B7E;&#x3002;&#x4E00;&#x4E2A; Android &#x7684;&#xFF0C;&#x4E00;&#x4E2A; Kotlin &#x7684;&#x3002;&#x81EA;&#x4ECE;&#x6211;&#x4E0A;&#x7EBF;&#x8FD9;&#x4E2A; GDE &#x6807;&#x7B7E;&#x4E4B;&#x540E;&#xFF0C;&#x5C31;&#x4E00;&#x76F4;&#x6709;&#x4EBA;&#x6765;&#x95EE;&#x6211;&#x8981;&#x600E;&#x4E48;&#x624D;&#x80FD;&#x6210;&#x4E3A; GDE&#x3002;&#x8FD9;&#x4E2A;&#x95EE;&#x9898;&#x90ED;&#x9716;&#x4E13;&#x95E8;&#x5199;&#x8FC7;&#x4E00;&#x7BC7;&#x6587;&#x7AE0;&#x2014;&#x2014;&#x90ED;&#x9716;&#x4E5F;&#x662F;&#x4E2A; Android GDE&#x2014;&#x2014;&#x6211;&#x89C9;&#x5F97;&#x5199;&#x5F97;&#x5F88;&#x597D;&#xFF0C;&#x6240;&#x4EE5;&#x5927;&#x5BB6;&#x53BB;&#x770B;&#x4ED6;&#x7684;&#x6587;&#x7AE0;&#x5C31;&#x884C;&#x4E86;&#x3002;&#xFF08;&#x4F20;&#x9001;&#x95E8;&#xFF1A;<a href="https://blog.csdn.net/guolin_blog/article/details/108917223?ref=rengwuxian.com">&#x5206;&#x4EAB;&#x6211;&#x6210;&#x4E3A;GDE&#xFF08;Google&#x5F00;&#x53D1;&#x8005;&#x4E13;&#x5BB6;&#xFF09;&#x7684;&#x7ECF;&#x5386; - CSDN</a>&#xFF09;</p>
<p>&#x90A3;&#x4E48;&#x597D;&#xFF0C;&#x4ECA;&#x5929;&#x7684;&#x89C6;&#x9891;&#x5C31;&#x5230;&#x8FD9;&#x91CC;&#x2026;&#x2026;&#x8981;&#x505A;&#x4E00;&#x4E2A;&#x8F6C;&#x6298;&#x4E86;&#xFF0C;&#x6211;&#x4EEC;&#x6765;&#x804A;&#x53E6;&#x4E00;&#x4E2A;&#x6211;&#x66F4;&#x60F3;&#x8DDF;&#x5927;&#x5BB6;&#x5206;&#x4EAB;&#x7684;&#x95EE;&#x9898;&#xFF1A;&#x4E3A;&#x4EC0;&#x4E48;&#x8981;&#x6210;&#x4E3A; GDE&#x3002;&#x6211;&#x8BA4;&#x4E3A;&#x8FD9;&#x662F;&#x6BCF;&#x4E2A;&#x4EBA;&#x5728;&#x63D0;&#x51FA;&#x300C;&#x600E;&#x4E48;&#x6210;&#x4E3A; GDE&#x300D;&#x4E4B;&#x524D;&#x8981;&#x66F4;&#x5148;&#x786E;&#x5B9A;&#x7684;&#x95EE;&#x9898;&#xFF0C;&#x800C;&#x4E0D;&#x662F;&#x4E00;&#x770B;&#x300C;&#x8BF6;&#xFF0C;&#x6254;&#x7269;&#x7EBF;&#x662F; GDE &#x554A;&#xFF0C;&#x6211;&#x80FD;&#x4E0D;&#x80FD;&#x4E5F;&#x5F04;&#x4E00;&#x4E2A;&#x300D;&#x2014;&#x2014;&#x5F04;&#x4EC0;&#x4E48;&#x5F04;&#xFF0C;&#x5148;&#x77E5;&#x9053;&#x5B83;&#x662F;&#x4EC0;&#x4E48;&#x518D;&#x8BF4;&#x3002;GDE &#x7684;&#x8EAB;&#x4EFD;&#x786E;&#x5B9E;&#x80FD;&#x7ED9;&#x4F60;&#x4E00;&#x4E9B;&#x597D;&#x5904;&#xFF0C;&#x6BD4;&#x5982;&#x5B98;&#x65B9;&#x8BA4;&#x53EF;&#x7684;&#x5149;&#x73AF;&#xFF0C;&#x6BD4;&#x5982;&#x514D;&#x8D39;&#x53C2;&#x52A0; I/O &#x5927;&#x4F1A;&#xFF1B;&#x4F46;&#x6211;&#x505A; GDE &#x8FD9;&#x4E09;&#x5E74;&#x6765;&#x6162;&#x6162;&#x611F;&#x53D7;&#x5230;&#xFF0C;&#x6210;&#x4E3A; GDE &#x5BF9;&#x6211;&#x4EEC;&#x6765;&#x8BF4;&#x6709;&#x66F4;&#x6709;&#x4EF7;&#x503C;&#x7684;&#x610F;&#x4E49;&#xFF0C;&#x8FD9;&#x4E2A;&#x610F;&#x4E49;&#x5C31;&#x662F;&#xFF1A;&#x5F71;&#x54CD;&#x3002;</p>
<h2 id="%E6%88%91%E4%BD%9C%E4%B8%BA-gde-%E9%83%BD%E5%B9%B2%E5%98%9B%E4%BA%86">&#x6211;&#x4F5C;&#x4E3A; GDE &#x90FD;&#x5E72;&#x561B;&#x4E86;</h2>
<p>&#x8BF4;&#x5230;&#x5F71;&#x54CD;&#xFF0C;&#x5927;&#x5BB6;&#x53EF;&#x80FD;&#x6700;&#x76F4;&#x63A5;&#x60F3;&#x5230;&#x7684;&#x662F;&#x5BF9;&#x793E;&#x533A;&#x3001;&#x5BF9;&#x5F00;&#x53D1;&#x8005;&#x4EEC;&#x7684;&#x5F71;&#x54CD;&#xFF0C;&#x56E0;&#x4E3A; GDE &#x53EF;&#x4EE5;&#x53BB;&#x505A;&#x6F14;&#x8BB2;&#xFF0C;&#x6216;&#x8005;&#x50CF;&#x6211;&#x8FD9;&#x6837;&#x505A;&#x89C6;&#x9891;&#x561B;&#x3002;&#x8FD9;&#x4E2A;&#x5012;&#x662F;&#x6709;&#xFF0C;&#x4F46;&#x6211;&#x8981;&#x8BF4;&#x7684;&#x662F;&#x53E6;&#x4E00;&#x4E2A;&#x89D2;&#x5EA6;&#xFF1A;&#x5BF9; Google &#x7684;&#x5F71;&#x54CD;&#xFF0C;&#x5BF9;&#x4E16;&#x754C;&#x7684;&#x5F71;&#x54CD;&#x3002;</p>
<p>&#x6211;&#x662F;&#x5728; 2018 &#x5E74; 10 &#x6708;&#x6210;&#x4E3A; Android GDE &#x7684;&#xFF0C;&#x5F53;&#x65F6;&#x7533;&#x8BF7;&#x7684;&#x539F;&#x56E0;&#x5F88;&#x7B80;&#x5355;&#xFF0C;&#x6211;&#x7684;&#x5DE5;&#x4F5C;&#x5C31;&#x662F; Android &#x6280;&#x672F;&#x7684;&#x5206;&#x4EAB;&#xFF0C;&#x53C8;&#x78B0;&#x4E0A;&#x5728; Google &#x5DE5;&#x4F5C;&#x7684;&#x670B;&#x53CB;&#x7A0B;&#x8DEF;&#x6765;&#x95EE;&#x6211;&#x6709;&#x6CA1;&#x6709;&#x5174;&#x8DA3;&#x7533;&#x8BF7; GDE&#xFF0C;&#x90A3;&#x5F53;&#x7136;&#x6709;&#x5174;&#x8DA3;&#x4E86;&#xFF01;&#x5C31;&#x7533;&#x8BF7;&#x4E86;&#x3002;&#xFF08;&#x611F;&#x8C22;&#x8DEF;&#x603B;&#xFF01;&#xFF09;</p>
<p>&#x6210;&#x4E3A; GDE &#x8FD9;&#x4E48;&#x4E45;&#x4EE5;&#x6765;&#xFF0C;&#x6211;&#x548C; Google &#x7684;&#x540C;&#x4E8B;&#x6709;&#x8FC7;&#x5F88;&#x591A;&#x6B21;&#x7684;&#x6C9F;&#x901A;&#xFF0C;&#x4E2D;&#x56FD;&#x8FD9;&#x8FB9;&#x7684;&#x3001;&#x7F8E;&#x56FD;&#x90A3;&#x8FB9;&#x7684;&#xFF0C;&#x90FD;&#x6709;&#x3002;&#x6C9F;&#x901A;&#x7684;&#x5185;&#x5BB9;&#x9664;&#x4E86;&#x4E00;&#x4E9B;&#x6F14;&#x8BB2;&#x7684;&#x9080;&#x8BF7;&#x4E4B;&#x5916;&#xFF0C;&#x4E3B;&#x8981;&#x662F;&#x4E24;&#x7C7B;&#xFF1A;&#x6280;&#x672F;&#x52A8;&#x5411;&#x7684;&#x901A;&#x62A5;&#x4EE5;&#x53CA;&#x89C2;&#x70B9;&#x7684;&#x4EA4;&#x6D41;&#x3002;</p>
<ul>
<li>&#x6240;&#x8C13;&#x6280;&#x672F;&#x52A8;&#x5411;&#x7684;&#x901A;&#x62A5;&#x4E3B;&#x8981;&#x662F; Android &#x56E2;&#x961F;&#x5185;&#x90E8;&#x7684;&#x4E00;&#x4E9B;&#x6280;&#x672F;&#x52A8;&#x5411;&#x4F1A;&#x7ED9;&#x5230;&#x6211;&#xFF0C;&#x56E0;&#x4E3A;&#x6211;&#x4F5C;&#x4E3A; GDE &#x662F;&#x9700;&#x8981;&#x63D0;&#x524D;&#x77E5;&#x9053;&#x8FD9;&#x4E9B;&#x4E1C;&#x897F;&#x624D;&#x53EF;&#x4EE5;&#x66F4;&#x65B9;&#x4FBF;&#x5730;&#x505A;&#x4E8B;&#x7684;&#x561B;&#x3002;</li>
<li>&#x53E6;&#x4E00;&#x7C7B;&#x5C31;&#x662F;&#x89C2;&#x70B9;&#x7684;&#x4EA4;&#x6D41;&#xFF0C;&#x8FD9;&#x4E2A;&#x662F;&#x56E0;&#x4E3A; Android &#x56E2;&#x961F;&#x5728;&#x4E00;&#x4E9B;&#x6280;&#x672F;&#x51B3;&#x7B56;&#x4E0A;&#xFF0C;&#x4F1A;&#x628A; GDE &#x8FD9;&#x4E2A;&#x7FA4;&#x4F53;&#x7684;&#x610F;&#x89C1;&#x4F5C;&#x4E3A;&#x4ED6;&#x4EEC;&#x51B3;&#x7B56;&#x7684;&#x53C2;&#x8003;&#x6765;&#x6E90;&#x4E4B;&#x4E00;&#xFF0C;&#x6240;&#x4EE5;&#x4ED6;&#x4EEC;&#x4F1A;&#x6765;&#x8BE2;&#x95EE; GDE &#x5BF9;&#x4E8E;&#x6280;&#x672F;&#x7684;&#x53D1;&#x5C55;&#x6709;&#x4EC0;&#x4E48;&#x610F;&#x89C1;&#x3002;&#x6211;&#x4EEC;&#x6709;&#x65F6;&#x5019;&#x4F1A;&#x89C1;&#x5230; Android &#x53D1;&#x5E03;&#x65B0;&#x7248;&#x7CFB;&#x7EDF;&#x7684;&#x65F6;&#x5019;&#x8BF4;&#xFF0C;&#x300C;&#x6211;&#x4EEC;&#x53C2;&#x8003;&#x6765;&#x81EA;&#x5F00;&#x53D1;&#x8005;&#x7684;&#x610F;&#x89C1;&#xFF0C;&#x56E0;&#x6B64;&#x505A;&#x4E86;&#x4EC0;&#x4E48;&#x4EC0;&#x4E48;&#x6539;&#x52A8;&#x300D;&#xFF0C;&#x8FD9;&#x4E2A;&#x300C;&#x5F00;&#x53D1;&#x8005;&#x300D;&#xFF0C;&#x5C31;&#x5305;&#x62EC; GDE&#x3002;&#x4E0D;&#x8FC7;&#x6211;&#x4E00;&#x822C;&#x63D0;&#x7684;&#x4E0D;&#x662F; Android &#x7CFB;&#x7EDF;&#x7684;&#xFF0C;&#x6211;&#x63D0;&#x7684;&#x6BD4;&#x8F83;&#x591A;&#x7684;&#x662F; Jetpack &#x548C; Kotlin &#x76F8;&#x5173;&#x7684;&#x610F;&#x89C1;&#x548C;&#x60F3;&#x6CD5;&#xFF0C;&#x6BD4;&#x5982;&#x6211;&#x89C9;&#x5F97;&#x5F53;&#x4E0B;&#x5E94;&#x8BE5;&#x5148;&#x63A8;&#x5E7F;&#x54EA;&#x4E2A;&#x5E93;&#xFF0C;&#x539F;&#x56E0;&#x662F;&#x4EC0;&#x4E48;&#xFF0C;&#x6216;&#x8005;&#x5982;&#x679C; Google &#x5F53;&#x4E0B;&#x975E;&#x5E38;&#x60F3;&#x63A8;&#x67D0;&#x4E2A;&#x5E93;&#x7684;&#x8BDD;&#xFF0C;&#x6211;&#x8BA4;&#x4E3A;&#x6BD4;&#x8F83;&#x5408;&#x9002;&#x7684;&#x63A8;&#x5E7F;&#x903B;&#x8F91;&#x662F;&#x4EC0;&#x4E48;&#x3002;&#x6211;&#x4EEC; GDE &#x7684;&#x610F;&#x89C1; Google &#x8FD8;&#x662F;&#x4F1A;&#x5F53;&#x56DE;&#x4E8B;&#x7684;&#xFF0C;&#x8D77;&#x7801;&#x6211;&#x662F;&#x4E00;&#x76F4;&#x80FD;&#x611F;&#x53D7;&#x5F97;&#x5230;&#x3002;</li>
</ul>
<h2 id="%E6%9B%B4%E5%A4%A7%E7%9A%84%E6%84%8F%E4%B9%89%EF%BC%9A%E5%BD%B1%E5%93%8D">&#x66F4;&#x5927;&#x7684;&#x610F;&#x4E49;&#xFF1A;&#x5F71;&#x54CD;</h2>
<p>&#x7136;&#x540E;&#x505A;&#x7740;&#x505A;&#x7740;&#xFF0C;&#x6211;&#x5C31;&#x6162;&#x6162;&#x610F;&#x8BC6;&#x5230;&#x4E00;&#x4EF6;&#x4E8B;&#xFF1A;&#x6211;&#x662F;&#x5728;&#x5F71;&#x54CD; Google &#x554A;&#xFF1F;</p>
<p>&#x90A3;&#x6211;&#x89C9;&#x5F97;&#x8FD9;&#x4E2A;&#x4E8B;&#x5C31;&#x6709;&#x70B9;&#x725B;&#x903C;&#x4E86;&#x3002;</p>
<p>&#x5F3A;&#x8C03;&#x4E00;&#x4E0B;&#xFF0C;&#x4E0D;&#x662F;&#x6211;&#x725B;&#x903C;&#xFF0C;&#x662F;&#x8FD9;&#x4E2A;&#x4E8B;&#x725B;&#x903C;&#x3002;</p>
<p>&#x4E3A;&#x4EC0;&#x4E48;&#x5462;&#xFF1F;&#x5927;&#x5BB6;&#x90FD;&#x505A;&#x5F00;&#x53D1;&#xFF0C;&#x80AF;&#x5B9A;&#x77E5;&#x9053;&#x6211;&#x4EEC;&#x5728;&#x5E73;&#x65F6;&#x7684;&#x5F00;&#x53D1;&#x4E2D;&#x6709;&#x5F88;&#x591A;&#x7684;&#x75DB;&#x70B9;&#x3002;&#x8FD9;&#x4E9B;&#x75DB;&#x70B9;&#x9760;&#x8C01;&#x89E3;&#x51B3;&#xFF1F;&#x4E00;&#x90E8;&#x5206;&#x9760;&#x81EA;&#x5DF1;&#xFF0C;&#x8FD8;&#x6709;&#x4E00;&#x90E8;&#x5206;&#x9760;&#x5382;&#x5546;&#xFF0C;&#x4E5F;&#x5C31;&#x662F; Android&#x3002;Android &#x662F;&#x613F;&#x610F;&#x5E2E;&#x6211;&#x4EEC;&#x89E3;&#x51B3;&#x95EE;&#x9898;&#x7684;&#xFF0C;&#x56E0;&#x4E3A;&#x670D;&#x52A1;&#x597D;&#x4E86;&#x5F00;&#x53D1;&#x8005;&#xFF0C;&#x8F6F;&#x4EF6;&#x7684;&#x751F;&#x6001;&#x624D;&#x80FD;&#x597D;&#xFF0C;&#x8FD9;&#x662F;&#x4E2A;&#x7B80;&#x5355;&#x7684;&#x9053;&#x7406;&#x3002;&#x4F46;&#x662F;&#x8981;&#x8BA9;&#x4ED6;&#x4EEC;&#x5E2E;&#x6211;&#x4EEC;&#x89E3;&#x51B3;&#x95EE;&#x9898;&#xFF0C;&#x9996;&#x5148;&#x5F97;&#x8BA9;&#x4ED6;&#x4EEC;&#x542C;&#x5230;&#x6211;&#x4EEC;&#x7684;&#x95EE;&#x9898;&#x5427;&#xFF1F;&#x600E;&#x4E48;&#x8BA9;&#x4ED6;&#x4EEC;&#x542C;&#xFF1F;&#x8BF4;&#x554A;&#xFF01;&#x8C01;&#x8BF4;&#xFF1F;GDE &#x554A;&#xFF01;GDE &#x53EF;&#x4EE5;&#x628A;&#x5927;&#x5BB6;&#x7684;&#x75DB;&#x70B9;&#x544A;&#x8BC9; Google &#x6216;&#x8005;&#x8BF4;&#x544A;&#x8BC9; Android&#xFF0C;&#x8BA9;&#x4ED6;&#x4EEC;&#x4E86;&#x89E3;&#x6211;&#x4EEC;&#x54EA;&#x91CC;&#x4E0D;&#x8212;&#x670D;&#xFF0C;&#x4ED6;&#x4EEC;&#x624D;&#x4F1A;&#x53BB;&#x5E2E;&#x6211;&#x4EEC;&#x89E3;&#x51B3;&#x3002;&#x4F46;&#x662F;&#x6211;&#x4E00;&#x4E2A; Android GDE &#x662F;&#x4E0D;&#x591F;&#x7684;&#x2014;&#x2014;&#x54E6;&#x65E9;&#x5C31;&#x4E0D;&#x662F;&#x4E00;&#x4E2A;&#x4E86;&#xFF0C;&#x73B0;&#x5728;&#x662F;&#x56DB;&#x4E2A;&#x4E86;&#x2014;&#x2014;&#x56DB;&#x4E2A;&#x4E5F;&#x662F;&#x4E0D;&#x591F;&#x7684;&#xFF0C;&#x6211;&#x4EEC;&#x8FD8;&#x9700;&#x8981;&#x66F4;&#x591A;&#xFF0C;&#x4E2D;&#x56FD;&#x90A3;&#x4E48;&#x5927;&#x5462;&#x5BF9;&#x4E0D;&#x5BF9;&#xFF1F;GDE &#x8D8A;&#x591A;&#xFF0C;&#x6211;&#x4EEC;&#x53EF;&#x4EE5;&#x548C; Google &#x8BB2;&#x7684;&#x5C31;&#x8D8A;&#x591A;&#xFF0C;Google &#x80FD;&#x5E2E;&#x6211;&#x4EEC;&#x89E3;&#x51B3;&#x7684;&#x95EE;&#x9898;&#x5C31;&#x8D8A;&#x591A;&#x3002;</p>
<p>&#x5F00;&#x53D1;&#x7684;&#x75DB;&#x70B9;&#x6709;&#x4E9B;&#x662F;&#x5168;&#x4E16;&#x754C;&#x901A;&#x7528;&#x7684;&#xFF0C;&#x6BD4;&#x5982; UI&#x3001;&#x6BD4;&#x5982;&#x6027;&#x80FD;&#x4F18;&#x5316;&#xFF1B;&#x8FD8;&#x6709;&#x4E00;&#x90E8;&#x5206;&#x662F;&#x4E0D;&#x901A;&#x7528;&#x7684;&#xFF0C;&#x662F;&#x4E2D;&#x56FD;&#x72EC;&#x6709;&#x7684;&#xFF0C;&#x6BD4;&#x5982;&#x70ED;&#x66F4;&#x65B0;&#x3001;&#x6BD4;&#x5982;&#x4FDD;&#x6D3B;&#xFF0C;&#x8FD9;&#x4E9B;&#x662F;&#x7531;&#x4E8E;&#x4E2D;&#x56FD;&#x7684;&#x7279;&#x6B8A;&#x56FD;&#x60C5;&#x800C;&#x5BFC;&#x81F4;&#x53EA;&#x6709;&#x4E2D;&#x56FD;&#x5E02;&#x573A;&#x5B58;&#x5728;&#x7684;&#x75DB;&#x70B9;&#x3002;&#x5168;&#x4E16;&#x754C;&#x7684; Android &#x5DE5;&#x7A0B;&#x5E08;&#x90FD;&#x505A;&#x5F00;&#x53D1;&#xFF0C;&#x4E5F;&#x90FD;&#x5728;&#x505A;&#x521B;&#x65B0;&#x3002;&#x4E2D;&#x56FD;&#x4EBA;&#x4E0D;&#x7BA1;&#x662F;&#x5F00;&#x53D1;&#x80FD;&#x529B;&#x8FD8;&#x662F;&#x521B;&#x65B0;&#x80FD;&#x529B;&#xFF0C;&#x662F;&#x4E0D;&#x5F31;&#x7684;&#xFF0C;&#x8FD9;&#x4E2A;&#x4E0D;&#x662F;&#x5439;&#xFF0C;&#x54B1;&#x53BB;&#x770B;&#x770B;&#x4E16;&#x754C;&#x77E5;&#x540D; App &#x7684;&#x6392;&#x884C;&#x699C;&#x3001;&#x53BB;&#x7FFB;&#x7FFB; GitHub &#x90FD;&#x80FD;&#x770B;&#x51FA;&#x6765;&#x3002;&#x4F46;&#x662F;&#x5982;&#x679C;&#x5168;&#x4E16;&#x754C;&#x7684;&#x5DE5;&#x7A0B;&#x5E08;&#x90FD;&#x5728;&#x8212;&#x9002;&#x5730;&#x505A;&#x7740;&#x5F00;&#x53D1;&#x548C;&#x521B;&#x65B0;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x6211;&#x4EEC;&#x5374;&#x9700;&#x8981;&#x5206;&#x51FA;&#x5F88;&#x5927;&#x4E00;&#x90E8;&#x5206;&#x7CBE;&#x529B;&#x53BB;&#x7814;&#x7A76;&#x70ED;&#x66F4;&#x65B0;&#x548C;&#x4FDD;&#x6D3B;&#xFF0C;&#x8FD9;&#x4E2A;&#x4E8B;&#x60C5;&#x5C31;&#x2026;&#x2026;&#x5F88;&#x4E0D;&#x5BF9;&#x52B2;&#x3002;&#x70ED;&#x66F4;&#x65B0;&#x6280;&#x672F;&#x548C;&#x4FDD;&#x6D3B;&#x6280;&#x672F;&#xFF0C;&#x4E2D;&#x56FD;&#x662F;&#x5168;&#x4E16;&#x754C;&#x505A;&#x5F97;&#x6700;&#x597D;&#x7684;&#xFF0C;&#x4E3A;&#x4EC0;&#x4E48;&#xFF1F;&#x56E0;&#x4E3A;&#x662F;&#x786C;&#x9700;&#x6C42;&#x554A;&#xFF01;&#x6211;&#x4EEC;&#x6CA1;&#x6709;&#x7EDF;&#x4E00;&#x7684;&#x5E94;&#x7528;&#x5546;&#x5E97;&#xFF0C;&#x6240;&#x4EE5;&#x5E94;&#x7528;&#x7684;&#x81EA;&#x52A8;&#x66F4;&#x65B0;&#x6210;&#x4E86;&#x95EE;&#x9898;&#xFF1B;&#x6211;&#x4EEC;&#x6CA1;&#x6709;&#x7EDF;&#x4E00;&#x7A33;&#x5B9A;&#x7684;&#x6D88;&#x606F;&#x63A8;&#x9001;&#x673A;&#x5236;&#xFF0C;&#x6240;&#x4EE5;&#x6D88;&#x606F;&#x63A8;&#x9001;&#x53EA;&#x80FD;&#x9760;&#x4FDD;&#x6D3B;&#x6765;&#x81EA;&#x5DF1;&#x63A8;&#x3002;&#xFF08;&#x4FDD;&#x6D3B;&#x8FD9;&#x4EF6;&#x4E8B;&#x7684;&#x521D;&#x8877;&#x662F;&#x597D;&#x7684;&#xFF0C;&#x4F46;&#x5728;&#x8D70;&#x5411;&#x4E0A;&#x9010;&#x6E10;&#x88AB;&#x52A0;&#x5165;&#x4E86;&#x4E00;&#x4E9B;&#x7684;&#x6076;&#xFF0C;&#x4E0D;&#x8FC7;&#x8FD9;&#x4E2A;&#x5C31;&#x662F;&#x53E6;&#x4E00;&#x4E2A;&#x8BDD;&#x9898;&#x4E86;&#xFF0C;&#x4ECA;&#x5929;&#x6682;&#x4E14;&#x4E0D;&#x8C08;&#x3002;&#xFF09;&#x6211;&#x4EEC;&#x6709;&#x4EBA;&#x3001;&#x6709;&#x6280;&#x672F;&#xFF0C;&#x4F46;&#x5374;&#x88AB;&#x8FEB;&#x82B1;&#x5F88;&#x591A;&#x7684;&#x4EBA;&#x548C;&#x7CBE;&#x529B;&#x53BB;&#x89E3;&#x51B3;&#x4E00;&#x4E9B;&#x672C;&#x6765;&#x4E0D;&#x5E94;&#x8BE5;&#x5B58;&#x5728;&#x7684;&#x95EE;&#x9898;&#xFF0C;&#x90A3;&#x6211;&#x4EEC;&#x7684;&#x751F;&#x4EA7;&#x80FD;&#x529B;&#x5176;&#x5B9E;&#x5C31;&#x88AB;&#x9650;&#x5236;&#x4E86;&#x3002;&#x6240;&#x4EE5;&#x8FD9;&#x4E9B;&#x95EE;&#x9898;&#xFF0C;&#x6211;&#x4EEC;&#x4E5F;&#x5E94;&#x8BE5;&#x53BB;&#x63A8;&#x52A8; Google &#x6765;&#x5E2E;&#x6211;&#x4EEC;&#x89E3;&#x51B3;&#x3002;</p>
<p>&#x8981;&#x77E5;&#x9053;&#xFF0C;&#x5168;&#x4E16;&#x754C;&#x6709;&#x5F88;&#x591A;&#x7684; GDE&#xFF0C;&#x6BCF;&#x4E2A;&#x56FD;&#x5BB6;&#x4E5F;&#x591A;&#x5C11;&#x6709;&#x4E00;&#x4E9B;&#x81EA;&#x5DF1;&#x72EC;&#x6709;&#x7684;&#x95EE;&#x9898;&#x3002;Android &#x662F;&#x8981;&#x5E2E;&#x52A9;&#x5168;&#x4E16;&#x754C;&#x7684;&#x5F00;&#x53D1;&#x8005;&#x89E3;&#x51B3;&#x95EE;&#x9898;&#xFF0C;&#x4F46;&#x89E3;&#x51B3;&#x8C01;&#x7684;&#x95EE;&#x9898;&#xFF1F;&#x5F53;&#x7136;&#x662F;&#x89E3;&#x51B3;&#x63D0;&#x51FA;&#x95EE;&#x9898;&#x7684;&#x4EBA;&#x7684;&#x95EE;&#x9898;&#x3002;&#x6240;&#x4EE5;&#x9996;&#x5148;&#x8981;&#x6709;&#x4EBA;&#x6765;&#x63D0;&#x51FA;&#x95EE;&#x9898;&#x3002;&#x6211;&#x4EEC;&#x4F5C;&#x4E3A; GDE&#xFF0C;&#x628A;&#x6211;&#x4EEC;&#x7684;&#x75DB;&#x70B9;&#x3001;&#x6211;&#x4EEC;&#x7684;&#x9700;&#x6C42;&#xFF0C;&#x6709;&#x6761;&#x7406;&#x3001;&#x6709;&#x4F9D;&#x636E;&#x5730;&#x5411; Google &#x53CD;&#x9988;&#xFF0C;&#x53BB;&#x5F71;&#x54CD;&#x3001;&#x53BB;&#x63A8;&#x52A8; Google &#x5E2E;&#x52A9;&#x6211;&#x4EEC;&#x6253;&#x9020;&#x4E00;&#x4E2A;&#x66F4;&#x597D;&#x7684;&#x5F00;&#x53D1;&#x73AF;&#x5883;&#xFF0C;&#x8FD9;&#xFF0C;&#x662F;&#x6211;&#x8BA4;&#x4E3A;&#x9664;&#x4E86;&#x4E2A;&#x4EBA;&#x7684;&#x5149;&#x73AF;&#x548C;&#x514D;&#x8D39;&#x7684; I/O &#x5927;&#x4F1A;&#x95E8;&#x7968;&#x4E4B;&#x5916;&#xFF0C;GDE &#x8FD9;&#x4E2A;&#x8EAB;&#x4EFD;&#x66F4;&#x91CD;&#x8981;&#x7684;&#x610F;&#x4E49;&#x3002;&#x6211;&#x76F8;&#x4FE1;&#xFF0C;&#x8FD9;&#x4E5F;&#x662F; Google &#x5BF9; GDE &#x9879;&#x76EE;&#x7684;&#x771F;&#x6B63;&#x671F;&#x671B;&#x3002;&#x4ED6;&#x4EEC;&#x5E0C;&#x671B;&#x88AB;&#x6211;&#x4EEC;&#x5F71;&#x54CD;&#xFF0C;&#x53EA;&#x8981;&#x6211;&#x4EEC;&#x7684;&#x5F71;&#x54CD;&#x662F;&#x597D;&#x7684;&#x3001;&#x662F;&#x6709;&#x610F;&#x4E49;&#x7684;&#x3002;</p>
<h2 id="%E6%9B%B4%E5%A4%9A%E7%9A%84%E5%BD%B1%E5%93%8D%EF%BC%9A%E4%B8%96%E7%95%8C">&#x66F4;&#x591A;&#x7684;&#x5F71;&#x54CD;&#xFF1A;&#x4E16;&#x754C;</h2>
<p>&#x5176;&#x5B9E;&#x9664;&#x4E86;&#x5F71;&#x54CD; Google&#xFF0C;&#x6211;&#x4EEC;&#x8FD8;&#x53EF;&#x4EE5;&#x5F71;&#x54CD;&#x66F4;&#x591A;&#x3002;&#x5F53;&#x6211;&#x4EEC;&#x5BF9; Google &#x7684;&#x5F71;&#x54CD;&#x8D8A;&#x6765;&#x8D8A;&#x591A;&#x3001;&#x8D8A;&#x6765;&#x8D8A;&#x5927;&#xFF0C;&#x6211;&#x4EEC;&#x7684;&#x8FD9;&#x4E9B;&#x5F71;&#x54CD;&#x4E5F;&#x4E00;&#x5B9A;&#x4F1A;&#x8FDB;&#x4E00;&#x6B65;&#x6E17;&#x900F;&#x5230;&#x5176;&#x4ED6;&#x5730;&#x533A;&#x7684;&#x5F00;&#x53D1;&#x8005;&#x793E;&#x533A;&#x4E2D;&#xFF0C;&#x8BA9;&#x6211;&#x4EEC;&#x7684;&#x6280;&#x672F;&#x3001;&#x6211;&#x4EEC;&#x7684;&#x89E3;&#x51B3;&#x65B9;&#x6848;&#x88AB;&#x4E16;&#x754C;&#x4E0A;&#x66F4;&#x591A;&#x7684;&#x5730;&#x65B9;&#x770B;&#x5230;&#xFF0C;&#x8BA9;&#x4ED6;&#x4EEC;&#x770B;&#x770B;&#x300C;&#x4E2D;&#x56FD;&#x7684; App &#x662F;&#x600E;&#x4E48;&#x4F18;&#x5316;&#x6027;&#x80FD;&#x7684;&#x300D;&#x300C;&#x4E2D;&#x56FD;&#x7684;&#x97F3;&#x89C6;&#x9891; App &#x662F;&#x600E;&#x4E48;&#x9AD8;&#x6548;&#x52A0;&#x8F7D;&#x7684;&#x300D;&#x300C;&#x4E2D;&#x56FD;&#x7684;&#x4E92;&#x8054;&#x7F51;&#x516C;&#x53F8;&#x662F;&#x600E;&#x4E48;&#x534F;&#x540C;&#x5DE5;&#x4F5C;&#x7684;&#x300D;&#x300C;&#x4E2D;&#x56FD;&#x4EBA;&#x662F;&#x600E;&#x4E48;&#x5728;&#x5BB6;&#x529E;&#x516C;&#x7684;&#x300D;&#x3002;&#x73B0;&#x5728;&#x4E2D;&#x56FD;&#x7684;&#x4E92;&#x8054;&#x7F51;&#x516C;&#x53F8;&#x548C;&#x5F00;&#x53D1;&#x8005;&#x793E;&#x533A;&#x5DF2;&#x7ECF;&#x4E0D;&#x662F;&#x5F53;&#x5E74;&#x53EA;&#x80FD;&#x5B66;&#x522B;&#x4EBA;&#x7684;&#x6C34;&#x5E73;&#x4E86;&#xFF0C;&#x5F88;&#x591A;&#x65F6;&#x5019;&#x6211;&#x4EEC;&#x751A;&#x81F3;&#x662F;&#x4E16;&#x754C;&#x9886;&#x5148;&#x7684;&#x6C34;&#x5E73;&#xFF0C;&#x8FD9;&#x4E2A;&#x6211;&#x5C31;&#x4E0D;&#x6253;&#x5E7F;&#x544A;&#x4E86;&#xFF0C;&#x5EFA;&#x8BAE;&#x5927;&#x5BB6;&#x53EF;&#x4EE5;&#x628A;&#x4F60;&#x8BA4;&#x4E3A;&#x4E16;&#x754C;&#x9876;&#x5C16;&#x7684;&#x4E2D;&#x56FD;&#x516C;&#x53F8;&#x548C;&#x4E2D;&#x56FD; App &#x7684;&#x540D;&#x5B57;&#x6253;&#x5728;&#x5F39;&#x5E55;&#x91CC;&#x3002;&#x968F;&#x7740;&#x6211;&#x4EEC;&#x7684;&#x6280;&#x672F;&#x548C;&#x89E3;&#x51B3;&#x65B9;&#x6848;&#x88AB;&#x4E16;&#x754C;&#x4E0A;&#x66F4;&#x591A;&#x7684;&#x5730;&#x65B9;&#x770B;&#x5230;&#xFF0C;&#x4E2D;&#x56FD;&#x5F00;&#x53D1;&#x8005;&#x5728;&#x4E16;&#x754C;&#x4E0A;&#x7684;&#x8BDD;&#x8BED;&#x6743;&#x4E5F;&#x4E00;&#x5B9A;&#x4F1A;&#x66F4;&#x5927;&#xFF0C;&#x6211;&#x4EEC;&#x5C31;&#x53EF;&#x4EE5;&#x7528;&#x81EA;&#x5DF1;&#x52AA;&#x529B;&#x505A;&#x51FA;&#x7684;&#x6280;&#x672F;&#x53BB;&#x4E00;&#x70B9;&#x70B9;&#x5730;&#x5F71;&#x54CD;&#x4E16;&#x754C;&#x3001;&#x9886;&#x5BFC;&#x4E16;&#x754C;&#x3002;</p>
<p>&#x4E0D;&#x8FC7;&#x8FD9;&#x4E2A;&#x53EF;&#x80FD;&#x5C31;&#x4E0D;&#x662F; Google &#x5728;&#x610F;&#x7684;&#x4E8B;&#x4E86;&#xFF0C;&#x56E0;&#x4E3A;&#x5B83;&#x8D85;&#x51FA; Google &#x7684;&#x751F;&#x6001;&#x4E86;&#x2014;&#x2014;&#x4F46;&#x6211;&#x4EEC;&#x662F;&#x53EF;&#x4EE5;&#x505A;&#x7684;&#x3002;</p>
<h2 id="%E6%9D%A5%E5%92%8C%E6%88%91%E4%BB%AC%E4%B8%80%E8%B5%B7">&#x6765;&#x548C;&#x6211;&#x4EEC;&#x4E00;&#x8D77;</h2>
<p>&#x6240;&#x4EE5;&#xFF0C;&#x5982;&#x679C;&#x4F60;&#x8BA4;&#x540C;&#x6211;&#x7684;&#x60F3;&#x6CD5;&#xFF0C;&#x5E76;&#x4E14;&#x4E5F;&#x5E0C;&#x671B;&#x53EF;&#x4EE5;&#x5E2E;&#x52A9;&#x5927;&#x5BB6;&#x6253;&#x9020;&#x4E00;&#x4E2A;&#x66F4;&#x597D;&#x7684;&#x5F00;&#x53D1;&#x751F;&#x6001;&#xFF0C;&#x975E;&#x5E38;&#x6B22;&#x8FCE;&#x4F60;&#x4E5F;&#x6765;&#x7533;&#x8BF7; GDE&#xFF01;&#x8BA9;&#x6211;&#x4EEC;&#x4E00;&#x8D77;&#x6765;&#xFF0C;&#x5F71;&#x54CD;&#xFF01;</p>
<p>&#x5176;&#x5B9E;&#x4E5F;&#x4E0D;&#x9650;&#x4E8E; GDE&#xFF0C;&#x4E3B;&#x8981;&#x6211;&#x662F;&#x505A; Android &#x5F00;&#x53D1;&#x7684;&#xFF0C;&#x6700;&#x91CD;&#x8981;&#x7684;&#x5C31;&#x662F;&#x5F71;&#x54CD; Google&#xFF0C;&#x6240;&#x4EE5; GDE &#x5C31;&#x6210;&#x4E86;&#x6700;&#x597D;&#x7684;&#x9009;&#x62E9;&#x3002;&#x5982;&#x679C;&#x4F60;&#x662F;&#x505A;&#x5176;&#x4ED6;&#x65B9;&#x5411;&#x5F00;&#x53D1;&#x7684;&#xFF0C;&#x4F60;&#x53EF;&#x4EE5;&#x53BB;&#x505A;&#x4F60;&#x90A3;&#x4E2A;&#x65B9;&#x5411;&#x7684;&#x300C;DE&#x300D;&#x3002;&#x603B;&#x4E4B;&#xFF0C;&#x8BA9;&#x6211;&#x4EEC;&#x4E00;&#x8D77;&#x6765;&#xFF0C;&#x5F71;&#x54CD;&#xFF01;</p>
<p>&#x5982;&#x679C;&#x4F60;&#x60F3;&#x548C;&#x6211;&#x4EEC;&#x4E00;&#x8D77;&#x5F71;&#x54CD;&#xFF0C;&#x60F3;&#x52A0;&#x5165; GDE&#xFF0C;&#x53EF;&#x4EE5;&#x8054;&#x7CFB;&#x4F60;&#x8BA4;&#x8BC6;&#x7684;&#x4EFB;&#x4F55;&#x4E00;&#x4E2A; Google &#x5458;&#x5DE5;&#x6216;&#x8005; GDE&#x3002;&#x6211;&#x662F;&#x6254;&#x7269;&#x7EBF;&#xFF0C;&#x6211;&#x4E0D;&#x548C;&#x4F60;&#x6BD4;&#x9AD8;&#x4F4E;&#xFF0C;&#x6211;&#x53EA;&#x52A9;&#x4F60;&#x6210;&#x957F;&#xFF0C;&#x6211;&#x4EEC;&#x4E0B;&#x671F;&#x89C1;&#xFF01;</p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[LiveData：还没普及就让我去世？我去你的 Kotlin 协程]]></title><description><![CDATA[LiveData 是 Android 官方在 2017 年推出的一系列架构组件中的一个，跟它一起的还有 ViewModel 和 Lifecycle 等等，以及这几年陆续出现的一个个新成员。这些组件后来有了统一的名字：Jetpack；而 Jetpack 的各个组件也越来越被 Android 开发者接受。LiveData 作为 Jetpack 的架构组件的元老级成员，发展势头也一直不错，可是——它从今往后要开始往下走了。就像你在视频开头看到的，有人问 Android 团队「你们是要废弃 LiveData 了吗？」这个问题可不是瞎问的。]]></description><link>https://rengwuxian.com/livedata/</link><guid isPermaLink="false">6111434afaf0486eb62aca20</guid><category><![CDATA[Jetpack]]></category><dc:creator><![CDATA[扔物线]]></dc:creator><pubDate>Mon, 09 Aug 2021 22:01:00 GMT</pubDate><media:content url="https://rengwuxian.com/content/images/2021/08/LiveData-cover.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h2 id="%E8%A7%86%E9%A2%91%E5%85%88%E8%A1%8C">&#x89C6;&#x9891;&#x5148;&#x884C;</h2>
<iframe width="100%" height="480" src="//player.bilibili.com/player.html?bvid=BV1WL411E7ry&amp;page=1&amp;high_quality=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>
<blockquote>
<img src="https://rengwuxian.com/content/images/2021/08/LiveData-cover.png" alt="LiveData&#xFF1A;&#x8FD8;&#x6CA1;&#x666E;&#x53CA;&#x5C31;&#x8BA9;&#x6211;&#x53BB;&#x4E16;&#xFF1F;&#x6211;&#x53BB;&#x4F60;&#x7684; Kotlin &#x534F;&#x7A0B;"><p>&#x4E0B;&#x9762;&#x662F;&#x89C6;&#x9891;&#x5185;&#x5BB9;&#x7684;&#x811A;&#x672C;&#x6574;&#x7406;&#x7A3F;&#x3002;&#x5982;&#x679C;&#x4F60;&#x770B;&#x4E86;&#x89C6;&#x9891;&#xFF0C;&#x90A3;&#x4E0B;&#x9762;&#x7684;&#x6587;&#x7A3F;&#x5C31;&#x4E0D;&#x7528;&#x770B;&#x4E86;&#xFF0C;&#x76F4;&#x63A5;&#x7FFB;&#x5230;&#x5E95;&#x90E8;&#x8BC4;&#x8BBA;&#x533A;&#x5427;&#x3002;</p>
</blockquote>
<h2 id="%E6%96%87%E5%AD%97%E7%89%88">&#x6587;&#x5B57;&#x7248;</h2>
<p>&#x5728;&#x4ECA;&#x5E74;&#xFF08;2021 &#x5E74;&#xFF09;&#x7684; Google I/O &#x5927;&#x4F1A;&#x4E2D;&#x7684; Jetpack Q&amp;A &#x73AF;&#x8282;&#xFF0C;Android &#x56E2;&#x961F;&#x88AB;&#x95EE;&#x4E86;&#x4E00;&#x4E2A;&#x5F88;&#x6709;&#x610F;&#x601D;&#x7684;&#x95EE;&#x9898;&#xFF1A;LiveData &#x662F;&#x8981;&#x88AB;&#x5E9F;&#x5F03;&#x4E86;&#x5417;&#xFF1F;</p>
<p><img src="https://i.loli.net/2021/08/10/fWalmtbinkSh6Gz.png" alt="LiveData&#xFF1A;&#x8FD8;&#x6CA1;&#x666E;&#x53CA;&#x5C31;&#x8BA9;&#x6211;&#x53BB;&#x4E16;&#xFF1F;&#x6211;&#x53BB;&#x4F60;&#x7684; Kotlin &#x534F;&#x7A0B;" loading="lazy"></p>
<p><img src="https://i.loli.net/2021/08/10/GZzvT8XjS5BM2La.png" alt="LiveData&#xFF1A;&#x8FD8;&#x6CA1;&#x666E;&#x53CA;&#x5C31;&#x8BA9;&#x6211;&#x53BB;&#x4E16;&#xFF1F;&#x6211;&#x53BB;&#x4F60;&#x7684; Kotlin &#x534F;&#x7A0B;" loading="lazy"></p>
<h2 id="%E9%97%AE%E9%A2%98%E4%B8%8D%E6%98%AF%E7%9E%8E%E9%97%AE%E7%9A%84">&#x95EE;&#x9898;&#x4E0D;&#x662F;&#x778E;&#x95EE;&#x7684;</h2>
<p>&#x5927;&#x5BB6;&#x597D;&#xFF0C;&#x6211;&#x662F;&#x6254;&#x7269;&#x7EBF;&#x6731;&#x51EF;&#x3002;&#x4ECA;&#x5929;&#x6765;&#x804A;&#x4E2A;&#x8F7B;&#x677E;&#x7684;&#xFF0C;&#x4E0D;&#x90A3;&#x4E48;&#x786C;&#x6838;&#x7684;&#x2014;&#x2014;LiveData&#x3002;</p>
<p>LiveData &#x662F; Android &#x5B98;&#x65B9;&#x5728; 2017 &#x5E74;&#x63A8;&#x51FA;&#x7684;&#x4E00;&#x7CFB;&#x5217;&#x67B6;&#x6784;&#x7EC4;&#x4EF6;&#x4E2D;&#x7684;&#x4E00;&#x4E2A;&#xFF0C;&#x8DDF;&#x5B83;&#x4E00;&#x8D77;&#x7684;&#x8FD8;&#x6709; ViewModel &#x548C; Lifecycle &#x7B49;&#x7B49;&#xFF0C;&#x4EE5;&#x53CA;&#x8FD9;&#x51E0;&#x5E74;&#x9646;&#x7EED;&#x51FA;&#x73B0;&#x7684;&#x4E00;&#x4E2A;&#x4E2A;&#x65B0;&#x6210;&#x5458;&#x3002;&#x8FD9;&#x4E9B;&#x7EC4;&#x4EF6;&#x540E;&#x6765;&#x6709;&#x4E86;&#x7EDF;&#x4E00;&#x7684;&#x540D;&#x5B57;&#xFF1A;Jetpack&#xFF1B;&#x800C; Jetpack &#x7684;&#x5404;&#x4E2A;&#x7EC4;&#x4EF6;&#x4E5F;&#x8D8A;&#x6765;&#x8D8A;&#x88AB; Android &#x5F00;&#x53D1;&#x8005;&#x63A5;&#x53D7;&#x3002;LiveData &#x4F5C;&#x4E3A; Jetpack &#x7684;&#x67B6;&#x6784;&#x7EC4;&#x4EF6;&#x7684;&#x5143;&#x8001;&#x7EA7;&#x6210;&#x5458;&#xFF0C;&#x53D1;&#x5C55;&#x52BF;&#x5934;&#x4E5F;&#x4E00;&#x76F4;&#x4E0D;&#x9519;&#xFF0C;&#x53EF;&#x662F;&#x2014;&#x2014;&#x5B83;&#x4ECE;&#x4ECA;&#x5F80;&#x540E;&#x8981;&#x5F00;&#x59CB;&#x5F80;&#x4E0B;&#x8D70;&#x4E86;&#x3002;&#x5C31;&#x50CF;&#x4F60;&#x5728;&#x89C6;&#x9891;&#x5F00;&#x5934;&#x770B;&#x5230;&#x7684;&#xFF0C;&#x6709;&#x4EBA;&#x95EE; Android &#x56E2;&#x961F;&#x300C;&#x4F60;&#x4EEC;&#x662F;&#x8981;&#x5E9F;&#x5F03; LiveData &#x4E86;&#x5417;&#xFF1F;&#x300D;&#x8FD9;&#x4E2A;&#x95EE;&#x9898;&#x53EF;&#x4E0D;&#x662F;&#x778E;&#x95EE;&#x7684;&#x3002;</p>
<p>&#x90A3;&#x662F;&#x548B;&#x95EE;&#x7684;&#x5462;&#xFF1F;&#x8FD9;&#x8FD8;&#x5F97;&#x4ECE;&#x5F53;&#x5E74;&#x7684; RxJava &#x8BF4;&#x8D77;&#x3002;</p>
<h2 id="%E4%BB%8E-rxjava-%E8%AF%B4%E8%B5%B7">&#x4ECE; RxJava &#x8BF4;&#x8D77;</h2>
<p>LiveData &#x5728; 2017 &#x5E74;&#x521A;&#x4E00;&#x9762;&#x4E16;&#xFF0C;&#x5C31;&#x53D7;&#x5230;&#x4E86;&#x5F88;&#x5927;&#x7684;&#x5173;&#x6CE8;&#xFF0C;&#x5176;&#x4E2D;&#x4E00;&#x4E2A;&#x539F;&#x56E0;&#x662F;&#x5B83;&#x8BA9;&#x5F88;&#x591A;&#x4EBA;&#x60F3;&#x5230;&#x4E86; RxJava&#x3002;LiveData &#x662F;&#x4E00;&#x4E2A;&#x4EE5;&#x89C2;&#x5BDF;&#x8005;&#x6A21;&#x5F0F;&#x4E3A;&#x6838;&#x5FC3;&#xFF0C;&#x901A;&#x8FC7;&#x8BA9;&#x754C;&#x9762;&#x5BF9;&#x53D8;&#x91CF;&#x8FDB;&#x884C;&#x8BA2;&#x9605;&#x6765;&#x5B9E;&#x73B0;&#x81EA;&#x52A8;&#x901A;&#x77E5;&#x5237;&#x65B0;&#x7684;&#x7EC4;&#x4EF6;&#xFF0C;&#x800C; RxJava &#x6700;&#x6838;&#x5FC3;&#x7684;&#x5173;&#x952E;&#x8BCD;&#x5C31;&#x662F;&#x89C2;&#x5BDF;&#x8005;&#x6A21;&#x5F0F;&#x548C;&#x4E8B;&#x4EF6;&#x6D41;&#xFF0C;&#x6240;&#x4EE5;&#x5F53;&#x65F6;&#x5F88;&#x591A;&#x4EBA;&#x62FF;&#x5B83;&#x53BB;&#x548C; RxJava &#x505A;&#x6BD4;&#x8F83;&#xFF1A;&#x6709;&#x4EBA;&#x8BF4;&#x5B83;&#x6BD4; RxJava &#x597D;&#x7528;&#xFF0C;&#x6709;&#x4EBA;&#x8BF4;&#x5B83;&#x6CA1;&#x6709; RxJava &#x5F3A;&#x5927;&#xFF0C;&#x8FD8;&#x6709;&#x4EBA;&#x8BF4;&#x5B83;&#x4FE9;&#x6839;&#x672C;&#x5C31;&#x4E0D;&#x662F;&#x4E00;&#x4E2A;&#x4E1C;&#x897F;&#xFF0C;&#x653E;&#x5728;&#x4E00;&#x8D77;&#x6BD4;&#x8F83;&#x662F;&#x6CA1;&#x6709;&#x610F;&#x4E49;&#x7684;&#x3002;</p>
<p>&#x81F3;&#x4E8E;&#x6211;&#x7684;&#x89C2;&#x70B9;&#x561B;&#x2026;&#x2026;&#x8FD9;&#x5C31;&#x8BF4;&#x3002;</p>
<p>RxJava &#x662F;&#x5728; 2014&#x3001;2015 &#x5E74;&#x8FD9;&#x4E2A;&#x65F6;&#x95F4;&#x706B;&#x8D77;&#x6765;&#x7684;&#xFF0C;&#x56FD;&#x5185;&#x665A;&#x4E00;&#x4E9B;&#xFF0C;&#x5927;&#x6982;&#x5728; 2016 &#x5E74;&#x5F00;&#x59CB;&#x7206;&#x706B;&#x3002;&#x5F53;&#x65F6;&#x5168;&#x4E16;&#x754C;&#x7684;&#x52B3;&#x52A8;&#x4EBA;&#x6C11;&#x7528; RxJava &#x4E00;&#x822C;&#x662F;&#x505A;&#x4E24;&#x4EF6;&#x4E8B;&#xFF1A;&#x7F51;&#x7EDC;&#x8BF7;&#x6C42;&#xFF0C;&#x4EE5;&#x53CA; event bus&#x3002;&#x7F51;&#x7EDC;&#x8BF7;&#x6C42;&#x8FD9;&#x4E2A;&#x5C31;&#x4E0D;&#x7528;&#x8BF4;&#x4E86;&#xFF0C;RxJava &#x914D;&#x5408; Retrofit &#x6765;&#x505A;&#x7F51;&#x7EDC;&#x8BF7;&#x6C42;&#xFF0C;&#x5404;&#x79CD;&#x590D;&#x6742;&#x64CD;&#x4F5C;&#x548C;&#x7EBF;&#x7A0B;&#x5207;&#x6362;&#xFF0C;&#x8C01;&#x7528;&#x8C01;&#x77E5;&#x9053;&#x2014;&#x2014;&#x73B0;&#x5728;&#x7528;&#x534F;&#x7A0B;&#x5C31;&#x53EF;&#x4EE5;&#x4E86;&#xFF0C;&#x6BD4; RxJava &#x65B9;&#x4FBF;&#xFF1B;&#x800C; event bus&#xFF0C;&#x5F53;&#x65F6;&#x6BD4;&#x8F83;&#x706B;&#x7684;&#x662F;&#x4E24;&#x4E2A;&#x5F00;&#x6E90;&#x5E93;&#xFF1A;GreenRobot &#x7684; EventBus&#x2014;&#x2014;&#x540C;&#x540D;&#x5E93;&#x2014;&#x2014;&#xFF0C;&#x548C; Square &#x7684; Otto&#xFF0C;&#x5728; RxJava &#x6D41;&#x884C;&#x8D77;&#x6765;&#x4E4B;&#x540E;&#xFF0C;&#x5927;&#x5BB6;&#x53D1;&#x73B0;&#xFF0C;&#x54CE;&#xFF0C;&#x8FD9; RxJava &#x7A0D;&#x5FAE;&#x5B9A;&#x5236;&#x4E00;&#x4E0B;&#x4E5F;&#x80FD;&#x5B9E;&#x73B0; event bus &#x7684;&#x529F;&#x80FD;&#x554A;&#xFF1F;&#x90A3;&#x65E2;&#x7136;&#x6211;&#x90FD;&#x7528; RxJava &#x4E86;&#xFF0C;&#x6211;&#x4E3A;&#x5565;&#x4E0D;&#x628A; event bus &#x4E5F;&#x4EA4;&#x7ED9;&#x5B83;&#x505A;&#xFF1F;&#x5C31;&#x8FD9;&#x6837;&#xFF0C;&#x4E00;&#x79CD;&#x53EB;&#x505A; RxBus &#x7684;&#x6A21;&#x5F0F;&#x5C31;&#x6D41;&#x884C;&#x4E86;&#x8D77;&#x6765;&#xFF0C;&#x540E;&#x6765;&#x4E5F;&#x6709;&#x4EBA;&#x5F00;&#x6E90;&#x4E86;&#x8FD9;&#x6837;&#x7684;&#x5E93;&#x3002;</p>
<p>&#x5C31;&#x5728;&#x8FD9;&#x6837;&#x7684;&#x65F6;&#x4EE3;&#x80CC;&#x666F;&#x4E0B;&#xFF0C;LiveData &#x5728; 2017 &#x5E74;&#x53D1;&#x5E03;&#x4E86;&#x3002;&#x5B83;&#x7684;&#x529F;&#x80FD;&#x662F;&#x8BA9;&#x53D8;&#x91CF;&#x53EF;&#x4EE5;&#x88AB;&#x8BA2;&#x9605;&#x3002;&#x8DDF;&#x4E00;&#x822C;&#x7684;&#x8BA2;&#x9605;&#x6BD4;&#x8D77;&#x6765;&#xFF0C;LiveData &#x6709;&#x4E24;&#x4E2A;&#x7279;&#x70B9;&#xFF1A;&#x4E00;&#x662F;&#x5B83;&#x7684;&#x76EE;&#x6807;&#x975E;&#x5E38;&#x76F4;&#x63A5;&#xFF0C;&#x76F4;&#x6307;&#x754C;&#x9762;&#x5237;&#x65B0;&#xFF0C;&#x6240;&#x4EE5;&#x5B83;&#x7684;&#x6570;&#x636E;&#x66F4;&#x65B0;&#x53EA;&#x53D1;&#x751F;&#x5728;&#x4E3B;&#x7EBF;&#x7A0B;&#xFF1B;&#x4E8C;&#x662F;&#x5B83;&#x501F;&#x52A9;&#x4E86;&#x53E6;&#x4E00;&#x4E2A;&#x67B6;&#x6784;&#x7EC4;&#x4EF6;&#x2014;&#x2014;Lifecycle&#x2014;&#x2014;&#x7684;&#x529F;&#x80FD;&#xFF0C;&#x8BA9;&#x5B83;&#x53EF;&#x4EE5;&#x53EA;&#x5728;&#x754C;&#x9762;&#x5230;&#x4E86;&#x524D;&#x53F0;&#x7684;&#x65F6;&#x5019;&#x624D;&#x901A;&#x77E5;&#x66F4;&#x65B0;&#xFF0C;&#x5728;&#x540E;&#x53F0;&#x7684;&#x65F6;&#x5019;&#x5C31;&#x95F7;&#x4E0D;&#x542D;&#x58F0;&#xFF0C;&#x907F;&#x514D;&#x6D6A;&#x8D39;&#x6027;&#x80FD;&#xFF0C;&#x4E5F;&#x907F;&#x514D;&#x4E86; bug&#x3002;</p>
<h2 id="%E4%B8%BA%E4%BB%80%E4%B9%88%E4%B8%8D%E7%94%A8-rxjava%EF%BC%9F">&#x4E3A;&#x4EC0;&#x4E48;&#x4E0D;&#x7528; RxJava&#xFF1F;</h2>
<p>&#x5F88;&#x65B9;&#x4FBF;&#xFF0C;&#x5F88;&#x597D;&#x7528;&#x3002;&#x4F46;&#x662F;&#x8FD9;&#x91CC;&#x5C31;&#x4F1A;&#x6709;&#x4E00;&#x4E2A;&#x95EE;&#x9898;&#xFF1A;&#x53D8;&#x91CF;&#x7684;&#x8BA2;&#x9605;&#xFF0C;&#x7528; RxJava &#x4E0D;&#x80FD;&#x505A;&#x5417;&#xFF1F;&#x4E3A;&#x4EC0;&#x4E48;&#x8981;&#x641E;&#x4E00;&#x4E2A;&#x65B0;&#x5E93;&#x51FA;&#x6765;&#x5462;&#xFF1F;RxJava &#x5C31;&#x662F;&#x4E13;&#x95E8;&#x505A;&#x4E8B;&#x4EF6;&#x8BA2;&#x9605;&#x7684;&#x5440;&#xFF1F;</p>
<ul>
<li>&#x662F;&#x56E0;&#x4E3A;&#x2026;&#x2026; LiveData &#x7684;&#x6570;&#x636E;&#x66F4;&#x65B0;&#x53D1;&#x751F;&#x5728;&#x4E3B;&#x7EBF;&#x7A0B;&#xFF1F;RxJava &#x4E5F;&#x53EF;&#x4EE5;&#x554A;&#xFF0C;&#x4E00;&#x4E2A;&#x64CD;&#x4F5C;&#x7B26;&#x7684;&#x4E8B;&#xFF08; <code>observeOn(AndroidSchedulers.MainThread))</code> &#xFF09;&#xFF0C;&#x5B89;&#x6392;&#x3002;</li>
<li>&#x90A3;&#x2026;&#x2026;&#x662F;&#x56E0;&#x4E3A;&#x5B83;&#x7ED3;&#x5408;&#x4E86; Lifecycle&#xFF0C;&#x5BF9;&#x751F;&#x547D;&#x5468;&#x671F;&#x7684;&#x652F;&#x6301;&#x6BD4;&#x8F83;&#x5230;&#x4F4D;&#xFF1F;RxJava &#x4E5F;&#x53EF;&#x4EE5;&#x554A;&#xFF0C;&#x6539;&#x5427;&#x6539;&#x5427;&#x5C31;&#x80FD;&#x652F;&#x6301;&#x4E86;&#xFF0C;&#x603B;&#x6BD4;&#x5199;&#x4E00;&#x4E2A;&#x65B0;&#x5E93;&#x5BB9;&#x6613;&#x5427;&#xFF1F;</li>
</ul>
<p>&#x6240;&#x4EE5; LiveData &#x7684;&#x529F;&#x80FD;&#xFF0C;&#x7528; RxJava &#x53EF;&#x4EE5;&#x5B9E;&#x73B0;&#x5417;&#xFF1F;&#x662F;&#x5B8C;&#x5168;&#x53EF;&#x4EE5;&#x7684;&#xFF0C;&#x6CA1;&#x6709;&#x4EFB;&#x4F55;&#x95EE;&#x9898;&#x3002;&#x90A3; Android &#x5B98;&#x65B9;&#x4E3A;&#x4EC0;&#x4E48;&#x8981;&#x505A;&#x4E00;&#x4E2A; LiveData &#x51FA;&#x6765;&#xFF0C;&#x800C;&#x4E0D;&#x662F;&#x76F4;&#x63A5;&#x63A8;&#x8350;&#x5927;&#x5BB6;&#x53BB;&#x7528; RxJava &#x6765;&#x5B9E;&#x73B0;&#x8FD9;&#x6837;&#x7684;&#x529F;&#x80FD;&#xFF1F;&#x6216;&#x8005;&#x9000;&#x4E00;&#x6B65;&#xFF0C;&#x7528; RxJava &#x6765;&#x505A; LiveData &#x7684;&#x5E95;&#x5C42;&#x5B9E;&#x73B0;&#x4E5F;&#x884C;&#x554A;&#xFF1F;&#x4E3A;&#x4EC0;&#x4E48;&#x90FD;&#x6CA1;&#x6709;&#xFF1F;&#x2014;&#x2014;&#x56E0;&#x4E3A; RxJava &#x592A;&#x5927;&#x4E86;&#xFF0C;&#x800C;&#x4E14;&#x5B83;&#x8FD8;&#x4E0D;&#x662F; Android &#x81EA;&#x5DF1;&#x5B98;&#x65B9;&#x7684;&#x4E1C;&#x897F;&#xFF0C;&#x800C;&#x662F;&#x522B;&#x4EBA;&#x7684;&#x3002;</p>
<p>&#x8FD9;&#x4E2A;&#x5012;&#x4E0D;&#x662F;&#x8BF4; Google &#x5C0F;&#x5FC3;&#x773C;&#x5B50;&#xFF0C;&#x53EA;&#x8BB8;&#x5BA3;&#x4F20;&#x6211;&#x81EA;&#x5DF1;&#x7684;&#x4E1C;&#x897F;&#xFF0C;&#x4E0D;&#x8BB8;&#x58EE;&#x5927;&#x522B;&#x4EBA;&#xFF0C;&#x800C;&#x662F; Android &#x4F5C;&#x4E3A;&#x4E00;&#x4E2A;&#x5E73;&#x53F0;&#x65B9;&#xFF0C;&#x5B83;&#x80AF;&#x5B9A;&#x8981;&#x8003;&#x8651;&#x5F00;&#x53D1;&#x8005;&#x4EEC;&#x7684;&#x666E;&#x904D;&#x6C34;&#x5E73;&#x7684;&#x3002;RxJava &#x8BF4;&#x5B9E;&#x8BDD;&#x867D;&#x7136;&#x597D;&#x7528;&#xFF0C;&#x4F46;&#x662F;&#x592A;&#x590D;&#x6742;&#x4E86;&#xFF0C;&#x4E0A;&#x624B;&#x6210;&#x672C;&#x5FD2;&#x9AD8;&#xFF0C;&#x6240;&#x4EE5;&#x5982;&#x679C; Android &#x8981;&#x7528; RxJava &#x6765;&#x5B9E;&#x73B0; LiveData&#xFF0C;&#x6216;&#x8005;&#x63A8;&#x8350;&#x5F00;&#x53D1;&#x8005;&#x4EEC;&#x7528; RxJava &#x6765;&#x81EA;&#x5DF1;&#x5B9E;&#x73B0; LiveData &#x7684;&#x529F;&#x80FD;&#xFF0C;&#x90A3;&#x4E48;&#x5B83;&#x5C31;&#x9700;&#x8981;&#x8003;&#x8651;&#x600E;&#x4E48;&#x8BA9;&#x6211;&#x4EEC;&#x5F00;&#x53D1;&#x8005;&#x5B66;&#x4F1A; RxJava&#x3002;&#x600E;&#x4E48;&#x8BA9;&#x6211;&#x4EEC;&#x5B66;&#x4F1A;&#xFF1F;&#x5C31;&#x53EA;&#x80FD;&#x81EA;&#x5DF1;&#x6559;&#x5457;&#xFF01;&#x5199;&#x6587;&#x6863;&#x3001;&#x51FA;&#x89C6;&#x9891;&#xFF0C;&#x6559;&#x5927;&#x5BB6;&#x7528; RxJava&#x3002;&#x90A3;&#x8FD9;&#x4E2A;&#x52A8;&#x4F5C;&#x5C31;&#x6709;&#x70B9;&#x5927;&#x4E86;&#xFF0C;&#x5C31;&#x628A;&#x4E8B;&#x60C5;&#x53D8;&#x590D;&#x6742;&#x4E86;&#x3002;&#x518D;&#x52A0;&#x4E0A; RxJava &#x8FD8;&#x65E2;&#x4E0D;&#x662F; Android &#x4F53;&#x7CFB;&#x91CC;&#x7684;&#x4E1C;&#x897F;&#xFF0C;&#x4E5F;&#x4E0D;&#x662F; Google &#x4F53;&#x7CFB;&#x91CC;&#x7684;&#x4E1C;&#x897F;&#xFF0C;&#x90A3;&#x4E48;&#x5982;&#x679C; Android &#x56E2;&#x961F;&#x5C31;&#x4E3A;&#x4E86;&#x4E00;&#x4E2A; LiveData &#x7684;&#x529F;&#x80FD;&#x8981;&#x53BB;&#x5168;&#x7F51;&#x63A8;&#x5E7F;&#x548C;&#x6559;&#x5B66; RxJava&#xFF0C;&#x8FD9;&#x4E2A;&#x903B;&#x8F91;&#x5C31;&#x6709;&#x70B9;&#x4E0D;&#x5BF9;&#x4E86;&#xFF0C;&#x4E8B;&#x60C5;&#x4E0D;&#x662F;&#x8FD9;&#x4E48;&#x73A9;&#x7684;&#x3002;&#x6240;&#x4EE5; RxJava &#x592A;&#x5927;&#x4E86;&#xFF0C;&#x5E76;&#x4E14;&#x662F;&#x7B2C;&#x4E09;&#x65B9;&#x7684;&#xFF0C;&#x8FD9;&#x4E24;&#x4E2A;&#x539F;&#x56E0;&#x7ED3;&#x5408;&#x8D77;&#x6765;&#xFF0C;&#x5C31;&#x8BA9; Android &#x7684; LiveData &#x6CA1;&#x6709;&#x4F7F;&#x7528; RxJava&#x3002;&#x8FD9;&#x5E76;&#x4E0D;&#x662F;&#x4E00;&#x4E2A;&#x7ADE;&#x4E89;&#x6216;&#x80F8;&#x6000;&#x7684;&#x95EE;&#x9898;&#xFF0C;&#x800C;&#x662F;&#x4E00;&#x4E2A;&#x300C;&#x4E0D;&#x8981;&#x628A;&#x4E8B;&#x60C5;&#x53D8;&#x590D;&#x6742;&#x300D;&#x7684;&#x95EE;&#x9898;&#x3002;&#x2014;&#x2014;&#x5F53;&#x7136;&#x8FD9;&#x662F;&#x6211;&#x81EA;&#x5DF1;&#x7684;&#x89C2;&#x70B9;&#x554A;&#x3002;</p>
<h2 id="20172021-%E7%9A%84%E5%8F%98%E5%8C%96">2017 - 2021 &#x7684;&#x53D8;&#x5316;</h2>
<p>&#x4F46;&#xFF01;&#x8FD9;&#x53EA;&#x662F;&#x5F53;&#x65F6;&#x7684;&#x60C5;&#x51B5;&#x3002;&#x5F53;&#x65F6;&#x662F;&#x4EC0;&#x4E48;&#x65F6;&#x5019;&#xFF1F;2017 &#x5E74;&#x3002;2017 &#x662F; Android &#x7684;&#x5927;&#x5E74;&#xFF0C;&#x8FD9;&#x4E00;&#x5E74;&#x53D1;&#x751F;&#x4E86;&#x597D;&#x51E0;&#x4EF6;&#x5927;&#x4E8B;&#xFF1A;</p>
<ul>
<li>&#x5B98;&#x65B9;&#x53D1;&#x5E03;&#x4E86;&#x51E0;&#x4E2A;&#x67B6;&#x6784;&#x7EC4;&#x4EF6;&#xFF1B;</li>
<li>&#x5B98;&#x65B9;&#x5BA3;&#x5E03;&#x5BF9; Kotlin &#x7684;&#x652F;&#x6301;&#xFF1B;</li>
<li><s>HenCoder &#x53D1;&#x5E03;</s>&#xFF08;&#x5047;&#xFF09;&#x3002;</li>
</ul>
<p>HenCoder &#x662F;&#x6211;&#x4E71;&#x8BB2;&#x7684;&#x554A;&#x3002;&#x6211;&#x8981;&#x8BF4;&#x7684;&#x662F; Kotlin&#xFF0C;Kotlin &#x5728; 2017 &#x5F97;&#x5230;&#x4E86; Android &#x5B98;&#x65B9;&#x7684;&#x516C;&#x5F00;&#x652F;&#x6301;&#xFF0C;&#x5728;&#x63A5;&#x4E0B;&#x6765;&#x8FD9;&#x51E0;&#x5E74;&#x91CC;&#xFF0C;Kotlin &#x81EA;&#x8EAB;&#x8D8A;&#x6765;&#x8D8A;&#x5B8C;&#x5584;&#xFF0C;&#x5B83;&#x7684;&#x534F;&#x7A0B;&#x4E5F;&#x8D8A;&#x6765;&#x8D8A;&#x5B8C;&#x5584;&#x3002;2017 &#x5E74;&#x4E4B;&#x524D;&#xFF0C;&#x4E8B;&#x4EF6;&#x8BA2;&#x9605;&#x5927;&#x90E8;&#x5206;&#x4EBA;&#x662F;&#x7528; EventBus &#x6216;&#x8005; Otto&#xFF0C;&#x5E76;&#x4E14;&#x5728; RxJava &#x6D41;&#x884C;&#x8D77;&#x6765;&#x4E4B;&#x540E;&#xFF0C;EventBus &#x548C; Otto &#x7684;&#x4F7F;&#x7528;&#x5F00;&#x59CB;&#x6301;&#x7EED;&#x4E0B;&#x964D;&#xFF1B;2017 &#x4E4B;&#x540E;&#xFF0C;&#x5BF9;&#x4E8E;&#x7B80;&#x5355;&#x573A;&#x666F;&#x5927;&#x5BB6;&#x6162;&#x6162;&#x8FC7;&#x6E21;&#x5230;&#x4E86; LiveData&#xFF0C;&#x590D;&#x6742;&#x573A;&#x666F;&#x8FD8;&#x5728;&#x7528; RxJava&#xFF0C;&#x56E0;&#x4E3A; LiveData &#x4E0D;&#x9002;&#x5408;&#x590D;&#x6742;&#x573A;&#x666F;&#xFF1B;&#x800C;&#x73B0;&#x5728;&#xFF0C;&#x6211;&#x4EEC;&#x6709;&#x4E86; Flow&#x3002;&#x534F;&#x7A0B;&#x7684; Flow &#x548C; RxJava &#x7684;&#x529F;&#x80FD;&#x8303;&#x56F4;&#x975E;&#x5E38;&#x76F8;&#x4F3C;&#x2014;&#x2014;&#x5176;&#x5B9E;&#x6211;&#x89C9;&#x5F97;&#x5C31;&#x662F;&#x4E00;&#x6837;&#x7684;&#x2014;&#x2014;&#x4F46;&#x662F; Flow &#x662F;&#x534F;&#x7A0B;&#x91CC;&#x5FC5;&#x4E0D;&#x53EF;&#x5C11;&#x7684;&#x4E00;&#x90E8;&#x5206;&#xFF0C;&#x800C;&#x534F;&#x7A0B;&#x662F; Kotlin &#x91CC;&#x5FC5;&#x4E0D;&#x53EF;&#x5C11;&#x7684;&#x4E00;&#x90E8;&#x5206;&#xFF0C;&#x800C; Kotlin &#x662F; Android &#x5F00;&#x53D1;&#x91CC;&#x5FC5;&#x4E0D;&#x53EF;&#x5C11;&#x7684;&#x4E00;&#x90E8;&#x5206;&#x2014;&#x2014;&#x54E6;&#x8FD9;&#x4E2A;&#x8BF4;&#x7684;&#x4E0D;&#x5BF9;&#xFF0C;&#x91CD;&#x65B0;&#x8BF4;&#x2014;&#x2014;&#x800C; Kotlin &#x53C8;&#x662F; Android &#x73B0;&#x5728;&#x4E3B;&#x63A8;&#x7684;&#x5F00;&#x53D1;&#x8BED;&#x8A00;&#x4EE5;&#x53CA;&#x672A;&#x6765;&#x7684;&#x8D8B;&#x52BF;&#xFF0C;&#x8FD9;&#x6837;&#x7684;&#x8BDD;&#xFF0C;Flow &#x4E00;&#x51FA;&#x6765;&#xFF0C;&#x90A3;&#x5C31;&#x6CA1; LiveData &#x4EC0;&#x4E48;&#x4E8B;&#x4E86;&#x3002;&#x522B;&#x8BF4; LiveData &#x4E86;&#xFF0C;&#x4EE5;&#x540E; RxJava &#x4E5F;&#x6CA1;&#x4EC0;&#x4E48;&#x4E8B;&#x4E86;&#x3002;&#x4E0D;&#x8FC7;&#x8FD9;&#x4E2A;&#x80AF;&#x5B9A;&#x9700;&#x8981;&#x4E00;&#x4E2A;&#x8FC7;&#x7A0B;&#x7684;&#xFF0C;LiveData &#x548C; RxJava&#x2014;&#x2014;&#x5C24;&#x5176;&#x662F; RxJava&#x2014;&#x2014;&#x80AF;&#x5B9A;&#x4F1A;&#x7EE7;&#x7EED;&#x575A;&#x633A;&#x4E00;&#x6BB5;&#x65F6;&#x95F4;&#x7684;&#xFF0C;&#x53EA;&#x662F;&#x8D8B;&#x52BF;&#x4F1A;&#x662F;&#x8FD9;&#x4E48;&#x4E00;&#x4E2A;&#x8D8B;&#x52BF;&#x3002;</p>
<h2 id="%E3%80%8C%E4%B8%8D%E4%BC%9A%E5%BA%9F%E5%BC%83-livedata%E3%80%8D%E2%80%A6%E2%80%A6%E5%90%97%EF%BC%9F">&#x300C;&#x4E0D;&#x4F1A;&#x5E9F;&#x5F03; LiveData&#x300D;&#x2026;&#x2026;&#x5417;&#xFF1F;</h2>
<p>&#x89C6;&#x9891;&#xFF08;&#x6587;&#x7AE0;&#xFF09;&#x5F00;&#x5934;&#x90A3;&#x4E2A;&#x95EE;&#x9898;&#xFF0C;Yigit &#x7684;&#x56DE;&#x7B54;&#x662F;&#xFF1A;LiveData &#x4E0D;&#x4F1A;&#x88AB;&#x5E9F;&#x5F03;&#xFF0C;&#x56E0;&#x4E3A;&#x4E24;&#x4E2A;&#x539F;&#x56E0;&#xFF1A;</p>
<ol>
<li>&#x7528; Java &#x5199; Android &#x7684;&#x4EBA;&#x8FD8;&#x9700;&#x8981;&#x5B83;&#x2014;&#x2014;Flow &#x662F;&#x534F;&#x7A0B;&#x7684;&#x4E1C;&#x897F;&#xFF0C;&#x6240;&#x4EE5;&#x5982;&#x679C;&#x4F60;&#x662F;&#x7528; Java &#x7684;&#xFF0C;&#x90A3;&#x5176;&#x5B9E;&#x6CA1;&#x529E;&#x6CD5;&#x7528; Flow&#xFF1B;</li>
<li>LiveData &#x7684;&#x4F7F;&#x7528;&#x6BD4;&#x8F83;&#x7B80;&#x5355;&#xFF0C;&#x800C;&#x4E14;&#x529F;&#x80FD;&#x4E0A;&#x5BF9;&#x4E8E;&#x7B80;&#x5355;&#x573A;&#x666F;&#x4E5F;&#x662F;&#x8DB3;&#x591F;&#x7684;&#xFF0C;&#x800C; RxJava &#x548C; Flow &#x8FD9;&#x79CD;&#x4E1C;&#x897F;&#x5B66;&#x8D77;&#x6765;&#x5C31;&#x6CA1; LiveData &#x90A3;&#x4E48;&#x76F4;&#x89C2;&#x3002;</li>
</ol>
<p>&#x7B80;&#x5355;&#x8BF4;&#x5C31;&#x662F;&#xFF0C;&#x4E3A;&#x4E86; Java &#x8BED;&#x8A00;&#x7684;&#x4F7F;&#x7528;&#x8005;&#x548C;&#x4E0D;&#x60F3;&#x5B66; RxJava &#x6216;&#x8005; Flow &#x7684;&#x4EBA;&#xFF0C;LiveData &#x4F1A;&#x88AB;&#x4FDD;&#x7559;&#x3002;&#x4E0D;&#x8FC7;&#x4F60;&#x5982;&#x679C;&#x7528;&#x53D1;&#x5C55;&#x7684;&#x773C;&#x5149;&#x53BB;&#x770B;&#x4ED6;&#x8FD9;&#x756A;&#x8BDD;&#x2026;&#x2026;&#x4F60;&#x61C2;&#x6211;&#x610F;&#x601D;&#x5427;&#xFF1F;</p>
<h2 id="%E9%82%A3%E6%88%91%E8%B5%B0%EF%BC%9F">&#x90A3;&#x6211;&#x8D70;&#xFF1F;</h2>
<p>&#x90A3;&#x2026;&#x2026;&#x5BF9;&#x4E8E;&#x4E0D;&#x4F1A; LiveData &#x7684;&#x4EBA;&#xFF0C;&#x8FD8;&#x6709;&#x5FC5;&#x8981;&#x5B66; LiveData &#x5417;&#xFF1F;&#x4EE5;&#x53CA;&#x5DF2;&#x7ECF;&#x5728;&#x7528; LiveData &#x7684;&#x9879;&#x76EE;&#xFF0C;&#x9700;&#x8981;&#x5FEB;&#x70B9;&#x79FB;&#x9664; LiveData &#x5417;&#xFF1F;</p>
<p>&#x5982;&#x679C;&#x4F60;&#x4E0D;&#x4F1A; LiveData&#xFF0C;&#x5BF9;&#x4E8E;&#x5F53;&#x4E0B;&#xFF08;2021 &#x5E74;&#xFF09;&#x6765;&#x8BF4;&#xFF0C;&#x8FD8;&#x662F;&#x5F88;&#x6709;&#x5FC5;&#x8981;&#x5B66;&#x4E00;&#x4E0B;&#x7684;&#xFF0C;&#x56E0;&#x4E3A; LiveData &#x73B0;&#x5728;&#x7684;&#x5E94;&#x7528;&#x7387;&#x8FD8;&#x662F;&#x5F88;&#x9AD8;&#x7684;&#xFF0C;&#x6240;&#x4EE5;&#x4F60;&#x5C31;&#x7B97;&#x4F60;&#x73B0;&#x5728;&#x4E0D;&#x7528;&#xFF0C;&#x4F60;&#x672A;&#x6765;&#x5DE5;&#x4F5C;&#x7684;&#x56E2;&#x961F;&#x4E5F;&#x53EF;&#x80FD;&#x4F1A;&#x7528;&#xFF0C;&#x53CD;&#x6B63;&#x8FD9;&#x4E1C;&#x897F;&#x5F88;&#x7B80;&#x5355;&#xFF0C;&#x5B66;&#x4E00;&#x4E0B;&#x4E0D;&#x8D39;&#x4E8B;&#x3002;&#x53E6;&#x4E00;&#x65B9;&#x9762;&#xFF0C;&#x5728;&#x7528; LiveData &#x7684;&#x4EBA;&#xFF0C;&#x786E;&#x5B9E;&#x53EF;&#x4EE5;&#x8003;&#x8651;&#x6458;&#x9664;&#x5B83;&#x4E86;&#xFF1B;&#x4F46;&#x4E5F;&#x4E0D;&#x662F;&#x7740;&#x6025;&#x5FD9;&#x614C;&#x5730;&#x628A;&#x5B83;&#x62FF;&#x8D70;&#xFF0C;&#x5B83;&#x4E0D;&#x662F;&#x6BD2;&#x836F;&#x4E0D;&#x662F;&#x5730;&#x96F7;&#xFF0C;&#x53EA;&#x662F;&#x534F;&#x7A0B;&#x7684; Flow &#x73B0;&#x5728;&#x53EF;&#x4EE5;&#x505A;&#x8FD9;&#x4EF6;&#x4E8B;&#x4E86;&#xFF0C;&#x800C;&#x672A;&#x6765; Flow &#x4E00;&#x5B9A;&#x662F;&#x4F1A;&#x6210;&#x4E3A;&#x4E3B;&#x6D41;&#x7684;&#xFF0C;&#x5C31;&#x50CF;&#x73B0;&#x5728;&#x7684; Kotlin &#x4E00;&#x6837;&#xFF1B;&#x5728;&#x9879;&#x76EE;&#x91CC;&#x7528;&#x4E24;&#x6837;&#x4E1C;&#x897F;&#x6765;&#x505A;&#x540C;&#x4E00;&#x4EF6;&#x4E8B;&#xFF08;&#x4E8B;&#x4EF6;&#x8BA2;&#x9605;&#xFF09;&#x4E0D;&#x5982;&#x53EA;&#x7528;&#x4E00;&#x6837;&#xFF0C;&#x56E0;&#x6B64;&#x4F60;&#x53EF;&#x4EE5;&#x8003;&#x8651;&#x6458;&#x9664; LiveData&#xFF0C;&#x662F;&#x8FD9;&#x4E48;&#x4E2A;&#x903B;&#x8F91;&#x3002;&#x6240;&#x4EE5;&#x4F60;&#x5C31;&#x7B97;&#x662F;&#x7740;&#x6025;&#xFF0C;&#x4E5F;&#x5E94;&#x8BE5;&#x53BB;&#x7740;&#x6025;&#x5B66; Flow&#xFF0C;&#x800C;&#x4E0D;&#x662F;&#x7740;&#x6025;&#x5730;&#x628A; LiveData &#x62C6;&#x6389;&#xFF0C;&#x5B83;&#x6CA1;&#x6709;&#x6BD2;&#xFF0C;&#x7B49;&#x4EE5;&#x540E;&#x4F60;&#x89C9;&#x5F97;&#x5B83;&#x7ED9;&#x4F60;&#x5E26;&#x6765;&#x4E0D;&#x65B9;&#x4FBF;&#x4E86;&#xFF0C;&#x4F60;&#x81EA;&#x7136;&#x4F1A;&#x628A;&#x5B83;&#x62C6;&#x6389;&#x3002;</p>
<p>&#x597D;&#xFF0C;&#x4ECA;&#x5929;&#x5C31;&#x662F;&#x8FD9;&#x6837;&#xFF0C;&#x5982;&#x679C;&#x4F60;&#x559C;&#x6B22;&#x6211;&#x7684;&#x5185;&#x5BB9;&#xFF0C;&#x522B;&#x5FD8;&#x4E86;&#x70B9;&#x8D5E;&#x8BA2;&#x9605;&#x5173;&#x6CE8;&#x3002;&#x6211;&#x662F;&#x6254;&#x7269;&#x7EBF;&#xFF0C;&#x6211;&#x4E0D;&#x548C;&#x4F60;&#x6BD4;&#x9AD8;&#x4F4E;&#xFF0C;&#x6211;&#x53EA;&#x52A9;&#x4F60;&#x6210;&#x957F;&#xFF0C;&#x6211;&#x4EEC;&#x4E0B;&#x671F;&#x89C1;&#x3002;</p>
<p><img src="https://i.loli.net/2021/08/10/WhLxE92ov1IPamt.png" alt="LiveData&#xFF1A;&#x8FD8;&#x6CA1;&#x666E;&#x53CA;&#x5C31;&#x8BA9;&#x6211;&#x53BB;&#x4E16;&#xFF1F;&#x6211;&#x53BB;&#x4F60;&#x7684; Kotlin &#x534F;&#x7A0B;" loading="lazy"></p>
<h2 id="%E6%B6%A8%E4%BB%B7%E9%A2%84%E8%AD%A6">&#x6DA8;&#x4EF7;&#x9884;&#x8B66;</h2>
<p>&#x5BF9;&#x4E86;&#xFF0C;&#x63D2;&#x64AD;&#x4E00;&#x53E5;&#xFF0C;Jetpack Compose &#x7684;&#x6B63;&#x5F0F;&#x7248;&#x5DF2;&#x7ECF;&#x53D1;&#x5E03;&#x4E86;&#xFF0C;&#x6211;&#x7684; Compose &#x8BFE;&#x7A0B;&#x7684;&#x57FA;&#x4E8E;&#x6B63;&#x5F0F;&#x7248;&#x7684;&#x91CD;&#x5236;&#x7248;&#x672C;&#x4E5F;&#x5728;&#x5236;&#x4F5C;&#x4E2D;&#x4E86;&#xFF0C;&#x5DF2;&#x7ECF;&#x62A5;&#x4E86;&#x540D;&#x7684;&#x4EBA;&#x4E0D;&#x7528;&#x62C5;&#x5FC3;&#xFF0C;&#x6211;&#x4EEC;&#x4F1A;&#x50CF;&#x5F53;&#x521D;&#x627F;&#x8BFA;&#x7684;&#x90A3;&#x6837;&#xFF0C;&#x628A;&#x91CD;&#x5236;&#x7248;&#x8BFE;&#x7A0B;&#x76F4;&#x63A5;&#x66F4;&#x65B0;&#x7ED9;&#x4F60;&#x4EEC;&#xFF0C;&#x4F46;&#x662F;&#x6211;&#x4E5F;&#x8981;&#x8DDF;&#x5927;&#x5BB6;&#x8BF4;&#x4E00;&#x4E0B;&#xFF0C;&#x8FD9;&#x6B21;&#x66F4;&#x65B0;&#x4E4B;&#x540E;&#xFF0C;&#x8BFE;&#x7A0B;&#x4F1A;&#x6DA8;&#x56DE;&#x6211;&#x4EEC;&#x9884;&#x671F;&#x7684;&#x4EF7;&#x683C;&#xFF0C;&#x4E0D;&#x4F1A;&#x662F;&#x73B0;&#x5728;&#x8FD9;&#x4E2A;&#x4EF7;&#x3002;&#x6240;&#x4EE5;&#xFF0C;&#x6709;&#x5174;&#x8DA3;&#x5728;&#x89C2;&#x671B;&#x7684;&#x53EF;&#x4EE5;&#x6765;&#x626B;&#x8D27;&#x4E86;&#xFF08;&#x5173;&#x6CE8;&#x516C;&#x4F17;&#x53F7;&#x540E;&#x53EF;&#x4EE5;&#x5728;&#x5BF9;&#x8BDD;&#x754C;&#x9762;&#x5E95;&#x90E8;&#x770B;&#x5230;&#x8BFE;&#x7A0B;&#x8BD5;&#x542C;&#x6309;&#x94AE;&#xFF09;&#x3002;</p>
<p><img src="https://i.loli.net/2021/08/10/WaQ9hGJq143pEVC.png" alt="LiveData&#xFF1A;&#x8FD8;&#x6CA1;&#x666E;&#x53CA;&#x5C31;&#x8BA9;&#x6211;&#x53BB;&#x4E16;&#xFF1F;&#x6211;&#x53BB;&#x4F60;&#x7684; Kotlin &#x534F;&#x7A0B;" loading="lazy"></p>
<p><img src="https://i.loli.net/2021/08/10/KrxoHzA9C5sTuBh.png" alt="LiveData&#xFF1A;&#x8FD8;&#x6CA1;&#x666E;&#x53CA;&#x5C31;&#x8BA9;&#x6211;&#x53BB;&#x4E16;&#xFF1F;&#x6211;&#x53BB;&#x4F60;&#x7684; Kotlin &#x534F;&#x7A0B;" loading="lazy"></p>
<!--kg-card-end: markdown-->]]></content:encoded></item><item><title><![CDATA[View 嵌套太深会卡？来用 Jetpack Compose，随便套——Intrinsic Measurement]]></title><description><![CDATA[Jetpack Compose 正式版就要发布了，给大家介绍一个 Compose 的杀手级性能优势。]]></description><link>https://rengwuxian.com/compose-intrinsic-measurement/</link><guid isPermaLink="false">609273dfb343744f4d866c55</guid><category><![CDATA[Compose]]></category><dc:creator><![CDATA[扔物线]]></dc:creator><pubDate>Thu, 06 May 2021 00:30:00 GMT</pubDate><media:content url="https://rengwuxian.com/content/images/2021/05/Compose-2---.png" medium="image"/><content:encoded><![CDATA[<!--kg-card-begin: markdown--><h2 id="%E8%A7%86%E9%A2%91%E5%85%88%E8%A1%8C">&#x89C6;&#x9891;&#x5148;&#x884C;</h2>
<iframe width="100%" height="480" src="//player.bilibili.com/player.html?bvid=BV1ZA41137gr&amp;page=1" scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>
<blockquote>
<img src="https://rengwuxian.com/content/images/2021/05/Compose-2---.png" alt="View &#x5D4C;&#x5957;&#x592A;&#x6DF1;&#x4F1A;&#x5361;&#xFF1F;&#x6765;&#x7528; Jetpack Compose&#xFF0C;&#x968F;&#x4FBF;&#x5957;&#x2014;&#x2014;Intrinsic Measurement"><p>&#x4E0B;&#x9762;&#x662F;&#x89C6;&#x9891;&#x5185;&#x5BB9;&#x7684;&#x811A;&#x672C;&#x6574;&#x7406;&#x7A3F;&#x3002;&#x5982;&#x679C;&#x4F60;&#x770B;&#x4E86;&#x89C6;&#x9891;&#xFF0C;&#x90A3;&#x4E0B;&#x9762;&#x7684;&#x6587;&#x7A3F;&#x5C31;&#x4E0D;&#x7528;&#x770B;&#x4E86;&#xFF0C;&#x76F4;&#x63A5;&#x7FFB;&#x5230;&#x5E95;&#x90E8;&#x5C31;&#x884C;&#x3002;</p>
</blockquote>
<h2 id="%E5%BC%80%E5%9C%BA">&#x5F00;&#x573A;</h2>
<p>&#x505A; Android &#x5F00;&#x53D1;&#x7684;&#x90FD;&#x77E5;&#x9053;&#x4E00;&#x4E2A;&#x89C4;&#x77E9;&#xFF1A;&#x5E03;&#x5C40;&#x6587;&#x4EF6;&#x7684;&#x754C;&#x9762;&#x5C42;&#x7EA7;&#x8981;&#x5C3D;&#x91CF;&#x5730;&#x5C11;&#xFF0C;&#x8D8A;&#x5C11;&#x8D8A;&#x597D;&#xFF0C;&#x56E0;&#x4E3A;&#x5C42;&#x7EA7;&#x7684;&#x589E;&#x52A0;&#x4F1A;&#x5927;&#x5E45;&#x62D6;&#x6162;&#x754C;&#x9762;&#x7684;&#x52A0;&#x8F7D;&#x3002;&#x8FD9;&#x79CD;&#x62D6;&#x6162;&#x7684;&#x4E3B;&#x8981;&#x539F;&#x56E0;&#x5C31;&#x5728;&#x4E8E;&#x5404;&#x79CD; Layout &#x7684;&#x91CD;&#x590D;&#x6D4B;&#x91CF;&#x3002;&#x867D;&#x7136;&#x91CD;&#x590D;&#x6D4B;&#x91CF;&#x5BF9;&#x4E8E;&#x5E03;&#x5C40;&#x8FC7;&#x7A0B;&#x662F;&#x5FC5;&#x4E0D;&#x53EF;&#x5C11;&#x7684;&#xFF0C;&#x4F46;&#x8FD9;&#x4E5F;&#x786E;&#x5B9E;&#x8BA9;&#x754C;&#x9762;&#x5C42;&#x7EA7;&#x7684;&#x6570;&#x91CF;&#x5BF9;&#x52A0;&#x8F7D;&#x65F6;&#x95F4;&#x7684;&#x5F71;&#x54CD;&#x53D8;&#x6210;&#x4E86;&#x6307;&#x6570;&#x7EA7;&#x3002;&#x800C; Jetpack Compose &#x662F;&#x4E0D;&#x6015;&#x5C42;&#x7EA7;&#x5D4C;&#x5957;&#x7684;&#xFF0C;&#x56E0;&#x4E3A;&#x5B83;&#x4ECE;&#x6839;&#x6E90;&#x4E0A;&#x89E3;&#x51B3;&#x4E86;&#x8FD9;&#x79CD;&#x95EE;&#x9898;&#x3002;&#x5B83;&#x89E3;&#x51B3;&#x7684;&#x65B9;&#x5F0F;&#x4E5F;&#x975E;&#x5E38;&#x5DE7;&#x5999;&#x800C;&#x7B80;&#x5355;&#x2014;&#x2014;&#x5B83;&#x4E0D;&#x8BB8;&#x91CD;&#x590D;&#x6D4B;&#x91CF;&#x3002;</p>
<p>&#x2026;&#x2026;&#x55EF;&#xFF1F;</p>
<p><img src="http://image.rengwuxian.com/2021/05/05/1ce066d10aece.jpg" alt="View &#x5D4C;&#x5957;&#x592A;&#x6DF1;&#x4F1A;&#x5361;&#xFF1F;&#x6765;&#x7528; Jetpack Compose&#xFF0C;&#x968F;&#x4FBF;&#x5957;&#x2014;&#x2014;Intrinsic Measurement" loading="lazy"></p>
<h2 id="view-%E5%B1%82%E6%95%B0%E5%92%8C%E7%95%8C%E9%9D%A2%E5%8A%A0%E8%BD%BD%E6%80%A7%E8%83%BD%E7%9A%84%E5%85%B3%E7%B3%BB">View &#x5C42;&#x6570;&#x548C;&#x754C;&#x9762;&#x52A0;&#x8F7D;&#x6027;&#x80FD;&#x7684;&#x5173;&#x7CFB;</h2>
<p>&#x5927;&#x5BB6;&#x597D;&#xFF0C;&#x6211;&#x662F;&#x6254;&#x7269;&#x7EBF;&#x6731;&#x51EF;&#x3002;</p>
<p>&#x5728;&#x5B9A;&#x5236; <code>ViewGroup</code> &#x7684;&#x5E03;&#x5C40;&#x8FC7;&#x7A0B;&#x7684;&#x65F6;&#x5019;&#xFF0C;&#x6211;&#x4EEC;&#x9700;&#x8981;&#x91CD;&#x5199;&#x4E24;&#x4E2A;&#x65B9;&#x6CD5;&#xFF1A; <code>onMeasure()</code>&#xA0;&#x7528;&#x6765;&#x6D4B;&#x91CF;&#x5B50; View&#xFF0C;<code>onLayout()</code>&#xA0;&#x7528;&#x6765;&#x6446;&#x653E;&#x6D4B;&#x91CF;&#x597D;&#x7684;&#x5B50; View&#x3002;&#x6D4B;&#x91CF;&#x548C;&#x6446;&#x653E;&#x660E;&#x660E;&#x662F;&#x8FDE;&#x7EED;&#x7684;&#x8FC7;&#x7A0B;&#xFF0C;&#x4E3A;&#x4EC0;&#x4E48;&#x8981;&#x62C6;&#x6210;&#x4E24;&#x6B65;&#x5462;&#xFF1F;&#x56E0;&#x4E3A;&#x6211;&#x4EEC;&#x5728; <code>ViewGroup</code> &#x91CC;&#x53EF;&#x80FD;&#x4F1A;&#x5BF9;&#x5B50; View &#x8FDB;&#x884C;&#x591A;&#x6B21;&#x6D4B;&#x91CF;&#x3002;</p>
<p>&#x6BD4;&#x5982;&#x4E00;&#x4E2A;&#x7EB5;&#x5411;&#x7684; <code>LinearLayout</code>&#xFF0C;&#x5F53;&#x5B83;&#x7684;&#x5BBD;&#x5EA6;&#x88AB;&#x8BBE;&#x7F6E;&#x6210;&#x4E86; <code>wrap_content</code>&#xA0;&#x7684;&#x65F6;&#x5019;&#xFF1A;</p>
<pre><code class="language-xml">&lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    android:layout_width=&quot;wrap_content&quot;
    android:layout_height=&quot;wrap_content&quot;
    android:orientation=&quot;vertical&quot;&gt;
  ...
&lt;/LinearLayout&gt;
</code></pre>
<p>&#x5B83;&#x4F1A;&#x4F9D;&#x6B21;&#x6D4B;&#x91CF;&#x81EA;&#x5DF1;&#x6240;&#x6709;&#x7684;&#x5B50; View&#xFF0C;&#x7136;&#x540E;&#x628A;&#x5B83;&#x4EEC;&#x6700;&#x5BBD;&#x7684;&#x90A3;&#x4E2A;&#x7684;&#x5BBD;&#x5EA6;&#x4F5C;&#x4E3A;&#x81EA;&#x5DF1;&#x6700;&#x7EC8;&#x7684;&#x5BBD;&#x5EA6;&#x3002;</p>
<p>&#x4F46;&#x2026;&#x2026;&#x5982;&#x679C;&#x5B83;&#x5185;&#x90E8;&#x6709;&#x4E00;&#x4E2A;&#x5B50; View &#x7684;&#x5BBD;&#x5EA6;&#x662F; <code>match_parent</code>&#xFF1A;</p>
<pre><code class="language-xml">&lt;LinearLayout xmlns:android=&quot;http://schemas.android.com/apk/res/android&quot;
    android:layout_width=&quot;wrap_content&quot;
    android:layout_height=&quot;wrap_content&quot;
    android:orientation=&quot;vertical&quot;&gt;

    &lt;View
        android:layout_width=&quot;match_parent&quot;
        android:layout_height=&quot;48dp&quot; /&gt;

    &lt;View
        android:layout_width=&quot;120dp&quot;
        android:layout_height=&quot;48dp&quot; /&gt;

    &lt;View
        android:layout_width=&quot;160dp&quot;
        android:layout_height=&quot;48dp&quot; /&gt;
&lt;/LinearLayout&gt;
</code></pre>
<p><img src="http://image.rengwuxian.com/2021/05/05/02d0135e8cd3d.png" alt="View &#x5D4C;&#x5957;&#x592A;&#x6DF1;&#x4F1A;&#x5361;&#xFF1F;&#x6765;&#x7528; Jetpack Compose&#xFF0C;&#x968F;&#x4FBF;&#x5957;&#x2014;&#x2014;Intrinsic Measurement" loading="lazy"></p>
<p><img src="http://image.rengwuxian.com/2021/05/05/346c49a5077c1.jpg" alt="View &#x5D4C;&#x5957;&#x592A;&#x6DF1;&#x4F1A;&#x5361;&#xFF1F;&#x6765;&#x7528; Jetpack Compose&#xFF0C;&#x968F;&#x4FBF;&#x5957;&#x2014;&#x2014;Intrinsic Measurement" loading="lazy"><br>
<img src="http://image.rengwuxian.com/2021/05/05/0626f448ed572.jpg" alt="View &#x5D4C;&#x5957;&#x592A;&#x6DF1;&#x4F1A;&#x5361;&#xFF1F;&#x6765;&#x7528; Jetpack Compose&#xFF0C;&#x968F;&#x4FBF;&#x5957;&#x2014;&#x2014;Intrinsic Measurement" loading="lazy"><br>
<img src="http://image.rengwuxian.com/2021/05/05/87cbd8eab753e.jpg" alt="View &#x5D4C;&#x5957;&#x592A;&#x6DF1;&#x4F1A;&#x5361;&#xFF1F;&#x6765;&#x7528; Jetpack Compose&#xFF0C;&#x968F;&#x4FBF;&#x5957;&#x2014;&#x2014;Intrinsic Measurement" loading="lazy"><br>
<img src="http://image.rengwuxian.com/2021/05/05/5de37915dec19.jpg" alt="View &#x5D4C;&#x5957;&#x592A;&#x6DF1;&#x4F1A;&#x5361;&#xFF1F;&#x6765;&#x7528; Jetpack Compose&#xFF0C;&#x968F;&#x4FBF;&#x5957;&#x2014;&#x2014;Intrinsic Measurement" loading="lazy"><br>
<img src="http://image.rengwuxian.com/2021/05/05/d504332b54f61.jpg" alt="View &#x5D4C;&#x5957;&#x592A;&#x6DF1;&#x4F1A;&#x5361;&#xFF1F;&#x6765;&#x7528; Jetpack Compose&#xFF0C;&#x968F;&#x4FBF;&#x5957;&#x2014;&#x2014;Intrinsic Measurement" loading="lazy"></p>
<p>&#x8FD9;&#x65F6;&#x5019;&#xFF0C; <code>LinearLayout</code>&#xA0;&#x5C31;&#x4F1A;&#x5148;&#x4EE5; 0 &#x4E3A;&#x5F3A;&#x5236;&#x5BBD;&#x5EA6;&#x6D4B;&#x91CF;&#x4E00;&#x4E0B;&#x8FD9;&#x4E2A;&#x5B50; View&#xFF0C;&#x5E76;&#x6B63;&#x5E38;&#x5730;&#x6D4B;&#x91CF;&#x5269;&#x4E0B;&#x7684;&#x5176;&#x4ED6;&#x5B50; View&#xFF0C;&#x7136;&#x540E;&#x518D;&#x7528;&#x5176;&#x4ED6;&#x5B50; View &#x91CC;&#x6700;&#x5BBD;&#x7684;&#x90A3;&#x4E2A;&#x7684;&#x5BBD;&#x5EA6;&#xFF0C;&#x4E8C;&#x6B21;&#x6D4B;&#x91CF;&#x8FD9;&#x4E2A; <code>match_parent</code>&#xA0;&#x7684;&#x5B50; View&#xFF0C;&#x6700;&#x7EC8;&#x5F97;&#x51FA;&#x5B83;&#x7684;&#x5C3A;&#x5BF8;&#xFF0C;&#x5E76;&#x628A;&#x8FD9;&#x4E2A;&#x5BBD;&#x5EA6;&#x4F5C;&#x4E3A;&#x81EA;&#x5DF1;&#x6700;&#x7EC8;&#x7684;&#x5BBD;&#x5EA6;&#x3002;</p>
<p><img src="http://image.rengwuxian.com/2021/05/05/b26f6bce213ea.jpg" alt="View &#x5D4C;&#x5957;&#x592A;&#x6DF1;&#x4F1A;&#x5361;&#xFF1F;&#x6765;&#x7528; Jetpack Compose&#xFF0C;&#x968F;&#x4FBF;&#x5957;&#x2014;&#x2014;Intrinsic Measurement" loading="lazy"></p>
<p><img src="http://image.rengwuxian.com/2021/05/05/4591b34412bc9.jpg" alt="View &#x5D4C;&#x5957;&#x592A;&#x6DF1;&#x4F1A;&#x5361;&#xFF1F;&#x6765;&#x7528; Jetpack Compose&#xFF0C;&#x968F;&#x4FBF;&#x5957;&#x2014;&#x2014;Intrinsic Measurement" loading="lazy"></p>
<p>&#x8FD9;&#x662F;&#x5BF9;&#x5355;&#x4E2A;&#x5B50; View &#x7684;&#x4E8C;&#x6B21;&#x6D4B;&#x91CF;&#xFF0C;&#x5982;&#x679C;&#x6709;&#x591A;&#x4E2A;&#x5B50; View &#x5199;&#x4E86; <code>match_parent</code>&#xA0;&#xFF0C;&#x90A3;&#x5C31;&#x9700;&#x8981;&#x5BF9;&#x5B83;&#x4EEC;&#x6BCF;&#x4E00;&#x4E2A;&#x90FD;&#x8FDB;&#x884C;&#x4E8C;&#x6B21;&#x6D4B;&#x91CF;&#x3002;</p>
<p><img src="http://image.rengwuxian.com/2021/05/05/9c7d59b249164.png" alt="View &#x5D4C;&#x5957;&#x592A;&#x6DF1;&#x4F1A;&#x5361;&#xFF1F;&#x6765;&#x7528; Jetpack Compose&#xFF0C;&#x968F;&#x4FBF;&#x5957;&#x2014;&#x2014;Intrinsic Measurement" loading="lazy"></p>
<p><img src="http://image.rengwuxian.com/2021/05/05/fbe2aabe26c2f.png" alt="View &#x5D4C;&#x5957;&#x592A;&#x6DF1;&#x4F1A;&#x5361;&#xFF1F;&#x6765;&#x7528; Jetpack Compose&#xFF0C;&#x968F;&#x4FBF;&#x5957;&#x2014;&#x2014;Intrinsic Measurement" loading="lazy"></p>
<p>&#x800C;&#x5982;&#x679C;&#x6240;&#x6709;&#x7684;&#x5B50; View &#x5168;&#x90FD;&#x662F; <code>match_parent</code>&#x2014;&#x2014;&#x54CE;&#x5440;&#x8DD1;&#x9898;&#x4E86;&#x3002;&#x603B;&#x4E4B;&#xFF0C;&#x5728; Android &#x91CC;&#xFF0C;&#x4E00;&#x4E2A; <code>ViewGroup</code> &#x662F;&#x53EF;&#x80FD;&#x5BF9;&#x5B50; View &#x8FDB;&#x884C;&#x4E8C;&#x6B21;&#x6D4B;&#x91CF;&#x7684;&#x3002;&#x4E0D;&#x53EA;&#x662F;&#x4E8C;&#x6B21;&#xFF0C;&#x6709;&#x65F6;&#x5019;&#x8FD8;&#x4F1A;&#x51FA;&#x73B0;&#x4E09;&#x6B21;&#x751A;&#x81F3;&#x66F4;&#x591A;&#x6B21;&#x7684;&#x6D4B;&#x91CF;&#x3002;&#x800C;&#x4E14;&#x8FD9;&#x4E0D;&#x662F;&#x7279;&#x6B8A;&#x573A;&#x666F;&#xFF0C;&#x91CD;&#x590D;&#x6D4B;&#x91CF;&#x5728; Android &#x91CC;&#x662F;&#x5F88;&#x5E38;&#x89C1;&#x7684;&#x3002;</p>
<p>&#x91CD;&#x590D;&#x6D4B;&#x91CF;&#x662F; <code>ViewGroup</code> &#x5B9E;&#x73B0;&#x6B63;&#x786E;&#x6D4B;&#x91CF;&#x6240;&#x5FC5;&#x9700;&#x7684;&#x624B;&#x6BB5;&#xFF0C;&#x4F46;&#x540C;&#x65F6;&#x4E5F;&#x8BA9;&#x6211;&#x4EEC;&#x9700;&#x8981;&#x975E;&#x5E38;&#x6CE8;&#x610F;&#x5C3D;&#x91CF;&#x51CF;&#x5C11;&#x5E03;&#x5C40;&#x7684;&#x5C42;&#x7EA7;&#x3002;</p>
<p>&#x4E3A;&#x4EC0;&#x4E48;&#x5462;&#xFF1F;&#x6765;&#x770B;&#x4E00;&#x4E2A;&#x6700;&#x7B80;&#x5355;&#x7684;&#x4F8B;&#x5B50;&#xFF0C;&#x5982;&#x679C;&#x6211;&#x4EEC;&#x7684;&#x5E03;&#x5C40;&#x6709;&#x4E24;&#x5C42;&#xFF0C;&#x5176;&#x4E2D;&#x7236; View &#x4F1A;&#x5BF9;&#x6BCF;&#x4E2A;&#x5B50; View &#x505A;&#x4E8C;&#x6B21;&#x6D4B;&#x91CF;&#xFF0C;&#x90A3;&#x5B83;&#x7684;&#x6BCF;&#x4E2A;&#x5B50; View &#x4E00;&#x5171;&#x9700;&#x8981;&#x88AB;&#x6D4B;&#x91CF; 2 &#x6B21;&#xFF1A;</p>
<p><img src="http://image.rengwuxian.com/2021/05/05/93126becdff8d.png" alt="View &#x5D4C;&#x5957;&#x592A;&#x6DF1;&#x4F1A;&#x5361;&#xFF1F;&#x6765;&#x7528; Jetpack Compose&#xFF0C;&#x968F;&#x4FBF;&#x5957;&#x2014;&#x2014;Intrinsic Measurement" loading="lazy"></p>
<p>&#x5982;&#x679C;&#x589E;&#x52A0;&#x5230;&#x4E09;&#x5C42;&#xFF0C;&#x5E76;&#x4E14;&#x6BCF;&#x4E2A;&#x7236; View &#x4F9D;&#x7136;&#x90FD;&#x505A;&#x4E8C;&#x6B21;&#x6D4B;&#x91CF;&#xFF0C;&#x8FD9;&#x65F6;&#x5019;&#x6700;&#x4E0B;&#x9762;&#x7684;&#x5B50; View &#x88AB;&#x6D4B;&#x91CF;&#x7684;&#x6B21;&#x6570;&#x5C31;&#x76F4;&#x63A5;&#x7FFB;&#x500D;&#x4E86;&#xFF0C;&#x53D8;&#x6210; 4 &#x6B21;&#xFF1A;</p>
<p><img src="http://image.rengwuxian.com/2021/05/05/431c5dabe2b7f.png" alt="View &#x5D4C;&#x5957;&#x592A;&#x6DF1;&#x4F1A;&#x5361;&#xFF1F;&#x6765;&#x7528; Jetpack Compose&#xFF0C;&#x968F;&#x4FBF;&#x5957;&#x2014;&#x2014;Intrinsic Measurement" loading="lazy"></p>
<p>&#x540C;&#x7406;&#xFF0C;&#x589E;&#x52A0;&#x5230; 4 &#x5C42;&#x7684;&#x8BDD;&#x4F1A;&#x518D;&#x6B21;&#x7FFB;&#x500D;&#xFF0C;&#x5B50; View &#x9700;&#x8981;&#x88AB;&#x6D4B;&#x91CF; 8 &#x6B21;&#xFF1A;</p>
<p><img src="http://image.rengwuxian.com/2021/05/05/8220fbcb38a10.png" alt="View &#x5D4C;&#x5957;&#x592A;&#x6DF1;&#x4F1A;&#x5361;&#xFF1F;&#x6765;&#x7528; Jetpack Compose&#xFF0C;&#x968F;&#x4FBF;&#x5957;&#x2014;&#x2014;Intrinsic Measurement" loading="lazy"></p>
<p>&#x4E5F;&#x5C31;&#x662F;&#x8BF4;&#xFF0C;&#x5BF9;&#x4E8E;&#x4F1A;&#x505A;&#x4E8C;&#x6B21;&#x6D4B;&#x91CF;&#x7684;&#x7CFB;&#x7EDF;&#xFF0C;&#x6BCF;&#x4E2A; View &#x7684;&#x6D4B;&#x91CF;&#x7B97;&#x6CD5;&#x7684;&#x65F6;&#x95F4;&#x590D;&#x6742;&#x5EA6;&#x662F; O(2&#x207F;) &#xFF0C;&#x5176;&#x4E2D;&#x8FD9;&#x4E2A; n &#x662F; View &#x7684;&#x5C42;&#x7EA7;&#x6DF1;&#x5EA6;&#x3002;</p>
<p>&#x5F53;&#x7136;&#x4E86;&#xFF0C;&#x73B0;&#x5B9E;&#x4E2D;&#x5E76;&#x4E0D;&#x662F;&#x6BCF;&#x4E2A;&#x7236; View &#x90FD;&#x4F1A;&#x8FDB;&#x884C;&#x4E8C;&#x6B21;&#x6D4B;&#x91CF;&#xFF0C;&#x4EE5;&#x53CA;&#x6709;&#x4E9B;&#x7236; View &#x4F1A;&#x5BF9;&#x5B50; View &#x505A;&#x4E09;&#x6B21;&#x6216;&#x8005;&#x66F4;&#x591A;&#x6B21;&#x7684;&#x6D4B;&#x91CF;&#xFF0C;&#x6240;&#x4EE5;&#x8FD9;&#x53EA;&#x662F;&#x4E00;&#x4E2A;&#x7C97;&#x7565;&#x4F30;&#x8BA1;&#xFF0C;&#x4E0D;&#x8FC7;&#x2014;&#x2014;&#x5927;&#x81F4;&#x5C31;&#x662F;&#x8FD9;&#x4E2A;&#x6570;&#x91CF;&#x7EA7;&#x4E86;&#x3002;</p>
<p>&#x800C; O(2&#x207F;) &#x8FD9;&#x79CD;&#x6307;&#x6570;&#x578B;&#x7684;&#x65F6;&#x95F4;&#x590D;&#x6742;&#x5EA6;&#xFF0C;&#x8BF4;&#x767D;&#x4E86;&#x5C31;&#x662F;&#xFF0C;View &#x7684;&#x5C42;&#x7EA7;&#x6BCF;&#x589E;&#x52A0; 1&#xFF0C;&#x52A0;&#x8F7D;&#x65F6;&#x95F4;&#x5C31;&#x4F1A;&#x7FFB;&#x4E00;&#x500D;&#x3002;</p>
<p>&#x6240;&#x4EE5;&#x4E3A;&#x4EC0;&#x4E48; Android &#x5B98;&#x65B9;&#x6587;&#x6863;&#x4F1A;&#x5EFA;&#x8BAE;&#x6211;&#x4EEC;&#x7684;&#x5E03;&#x5C40;&#x6587;&#x4EF6;&#x5C11;&#x4E00;&#x4E9B;&#x5C42;&#x7EA7;&#xFF1F;&#x56E0;&#x4E3A;&#x5B83;&#x5BF9;&#x6027;&#x80FD;&#x7684;&#x5F71;&#x54CD;&#x592A;&#x5927;&#x4E86;&#xFF01;</p>
<h2 id="compose-%E7%9A%84-intrinsic-measurement">Compose &#x7684; Intrinsic Measurement</h2>
<p>&#x800C; Compose &#x662F;&#x7981;&#x6B62;&#x4E8C;&#x6B21;&#x6D4B;&#x91CF;&#x7684;&#x3002;</p>
<p>&#x5982;&#x679C;&#x6BCF;&#x4E2A;&#x7236;&#x7EC4;&#x4EF6;&#x5BF9;&#x6BCF;&#x4E2A;&#x5B50;&#x7EC4;&#x4EF6;&#x53EA;&#x6D4B;&#x91CF;&#x4E00;&#x6B21;&#xFF0C;&#x90A3;&#x5C31;&#x76F4;&#x63A5;&#x610F;&#x5473;&#x7740;&#x754C;&#x9762;&#x4E2D;&#x7684;&#x6BCF;&#x4E2A;&#x7EC4;&#x4EF6;&#x53EA;&#x4F1A;&#x88AB;&#x6D4B;&#x91CF;&#x4E00;&#x6B21;&#xFF1A;</p>
<p><img src="http://image.rengwuxian.com/2021/05/05/5585808964f8c.png" alt="View &#x5D4C;&#x5957;&#x592A;&#x6DF1;&#x4F1A;&#x5361;&#xFF1F;&#x6765;&#x7528; Jetpack Compose&#xFF0C;&#x968F;&#x4FBF;&#x5957;&#x2014;&#x2014;Intrinsic Measurement" loading="lazy"></p>
<p>&#x8FD9;&#x6837;&#x7684;&#x8BDD;&#xFF0C;&#x5C31;&#x628A;&#x7EC4;&#x4EF6;&#x52A0;&#x8F7D;&#x7684;&#x65F6;&#x95F4;&#x590D;&#x6742;&#x5EA6;&#x4ECE; O(2&#x207F;) &#x964D;&#x5230;&#x4E86; O(n)&#x3002;</p>
<p>&#x4E0D;&#x8FC7;&#x2026;&#x2026;&#x5982;&#x679C;&#x7981;&#x7528;&#x4E8C;&#x6B21;&#x6D4B;&#x91CF;&#x8FD9;&#x4E48;&#x597D;&#x7528;&#x7684;&#x8BDD;&#xFF0C;Android &#x5E72;&#x561B;&#x4E0D;&#x5728;&#x4F20;&#x7EDF;&#x7684; View &#x7CFB;&#x7EDF;&#x76F4;&#x63A5;&#x7981;&#x6389;&#xFF1F;&#x2014;&#x2014;&#x56E0;&#x4E3A;&#x5B83;&#x6709;&#x7528;&#x554A;&#xFF01;</p>
<p>&#x90A3; Compose &#x7981;&#x7528;&#x4E86;&#x4E8C;&#x6B21;&#x6D4B;&#x91CF;&#xFF0C;&#x5B83;&#x5C31;&#x4E0D;&#x7528;&#x4E86;&#x5417;&#xFF1F;</p>
<p>&#x8FD9;&#x5C31;&#x662F; Compose &#x5DE7;&#x5999;&#x7684;&#x5730;&#x65B9;&#x4E86;&#xFF1A;Compose &#x7981;&#x7528;&#x4E86;&#x4E8C;&#x6B21;&#x6D4B;&#x91CF;&#xFF0C;&#x4F46;&#x52A0;&#x5165;&#x4E86;&#x4E00;&#x4E2A;&#x65B0;&#x4E1C;&#x897F;&#xFF1A;Intrinsic Measurement&#xFF0C;&#x5B98;&#x65B9;&#x628A;&#x5B83;&#x7FFB;&#x8BD1;&#x505A;&#x300C;&#x56FA;&#x6709;&#x7279;&#x6027;&#x6D4B;&#x91CF;&#x300D;&#x3002;</p>
<p>&#x8FD9;&#x4E2A;&#x300C;&#x56FA;&#x6709;&#x7279;&#x6027;&#x6D4B;&#x91CF;&#x300D;&#xFF0C;&#x4F60;&#x8981;&#x8BF4;&#x7FFB;&#x8BD1;&#x5F97;&#x4E0D;&#x5BF9;&#x5427;&#xFF0C;&#x5176;&#x5B9E;&#x5B57;&#x9762;&#x4E0A;&#x5DF2;&#x7ECF;&#x975E;&#x5E38;&#x7CBE;&#x786E;&#x4E86;&#xFF0C;&#x4F46;&#x8FD9;&#x4E48;&#x7FFB;&#x5374;&#x53C8;&#x5B8C;&#x5168;&#x6CA1;&#x6293;&#x4F4F;&#x8FD9;&#x4E2A;&#x529F;&#x80FD;&#x7684;&#x7075;&#x9B42;&#x3002;</p>
<p>&#x6240;&#x8C13;&#x7684; Intrinsic Measurement&#xFF0C;&#x6307;&#x7684;&#x662F; Compose &#x5141;&#x8BB8;&#x7236;&#x7EC4;&#x4EF6;&#x5728;&#x5BF9;&#x5B50;&#x7EC4;&#x4EF6;&#x8FDB;&#x884C;&#x6D4B;&#x91CF;&#x4E4B;&#x524D;&#xFF0C;&#x5148;&#x6D4B;&#x91CF;&#x4E00;&#x4E0B;&#x5B50;&#x7EC4;&#x4EF6;&#x7684;&#x300C;&#x56FA;&#x6709;&#x5C3A;&#x5BF8;&#x300D;&#xFF0C;&#x76F4;&#x767D;&#x5730;&#x8BF4;&#x5C31;&#x662F;&#x300C;&#x4F60;&#x5185;&#x90E8;&#x5185;&#x5BB9;&#x7684;&#x6700;&#x5927;&#x6216;&#x8005;&#x6700;&#x5C0F;&#x5C3A;&#x5BF8;&#x662F;&#x591A;&#x5C11;&#x300D;&#x3002;&#x8FD9;&#x662F;&#x4E00;&#x79CD;&#x7C97;&#x7565;&#x7684;&#x6D4B;&#x91CF;&#xFF0C;&#x867D;&#x8BF4;&#x6CA1;&#x6709;&#x771F;&#x6B63;&#x7684;&#x300C;&#x4E8C;&#x6B21;&#x6D4B;&#x91CF;&#x300D;&#x6A21;&#x5F0F;&#x90A3;&#x4E48;&#x81EA;&#x7531;&#xFF0C;&#x4F46;&#x529F;&#x80FD;&#x5E76;&#x4E0D;&#x5F31;&#xFF0C;&#x56E0;&#x4E3A;&#x5404;&#x79CD; Layout &#x91CC;&#x7684;&#x91CD;&#x590D;&#x6D4B;&#x91CF;&#xFF0C;&#x5176;&#x5B9E;&#x672C;&#x6765;&#x5C31;&#x662F;&#x5148;&#x8FDB;&#x884C;&#x8FD9;&#x79CD;&#x300C;&#x7C97;&#x7565;&#x6D4B;&#x91CF;&#x300D;&#x518D;&#x8FDB;&#x884C;&#x6700;&#x7EC8;&#x7684;&#x300C;&#x6B63;&#x5F0F;&#x6D4B;&#x91CF;&#x300D;&#x7684;&#x2014;&#x2014;&#x6BD4;&#x5982;&#x521A;&#x624D;&#x8BF4;&#x7684;&#x90A3;&#x79CD;&#x300C;&#x5916;&#x9762; <code>wrap_content</code>&#xA0;&#x91CC;&#x9762; <code>match_parent</code>&#x300D;&#x7684;&#xFF0C;&#x5BF9;&#x5427;&#xFF1F;&#x60F3;&#x60F3;&#x662F;&#x4E0D;&#x662F;&#xFF1F;&#x8FD9;&#x79CD;&#x300C;&#x7C97;&#x7565;&#x300D;&#x7684;&#x6D4B;&#x91CF;&#x662F;&#x5F88;&#x8F7B;&#x7684;&#xFF0C;&#x5E76;&#x4E0D;&#x662F;&#x56E0;&#x4E3A;&#x5B83;&#x91CF;&#x5F97;&#x5FEB;&#xFF0C;&#x800C;&#x662F;&#x56E0;&#x4E3A;&#x5B83;&#x5728;&#x673A;&#x5236;&#x4E0A;&#x4E0D;&#x4F1A;&#x50CF;&#x4F20;&#x7EDF;&#x7684;&#x4E8C;&#x6B21;&#x6D4B;&#x91CF;&#x90A3;&#x6837;&#xFF0C;&#x8BA9;&#x7EC4;&#x4EF6;&#x7684;&#x6D4B;&#x91CF;&#x65F6;&#x95F4;&#x968F;&#x7740;&#x5C42;&#x7EA7;&#x7684;&#x52A0;&#x6DF1;&#x800C;&#x4E0D;&#x65AD;&#x52A0;&#x500D;&#x3002;</p>
<p>&#x5F53;&#x754C;&#x9762;&#x9700;&#x8981;&#x8FD9;&#x79CD; Intrinsic Measurement&#x2014;&#x2014;&#x4E5F;&#x5C31;&#x662F;&#x8BF4;&#x90A3;&#x4E2A;&#x6240;&#x8C13;&#x7684;&#x300C;&#x56FA;&#x6709;&#x7279;&#x6027;&#x6D4B;&#x91CF;&#x300D;&#x2014;&#x2014;&#x7684;&#x65F6;&#x5019;&#xFF0C;Compose &#x4F1A;&#x5148;&#x5BF9;&#x6574;&#x4E2A;&#x7EC4;&#x4EF6;&#x6811;&#x8FDB;&#x884C;&#x4E00;&#x6B21; Intrinsic &#x6D4B;&#x91CF;&#xFF0C;&#x7136;&#x540E;&#x518D;&#x5BF9;&#x6574;&#x4F53;&#x8FDB;&#x884C;&#x6B63;&#x5F0F;&#x7684;&#x6D4B;&#x91CF;&#x3002;&#x8FD9;&#x6837;&#x5F00;&#x8F9F;&#x4E24;&#x4E2A;&#x5E73;&#x884C;&#x7684;&#x6D4B;&#x91CF;&#x8FC7;&#x7A0B;&#xFF0C;&#x5C31;&#x53EF;&#x4EE5;&#x907F;&#x514D;&#x56E0;&#x4E3A;&#x5C42;&#x7EA7;&#x589E;&#x52A0;&#x800C;&#x5BF9;&#x540C;&#x4E00;&#x4E2A;&#x5B50;&#x7EC4;&#x4EF6;&#x53CD;&#x590D;&#x6D4B;&#x91CF;&#x6240;&#x5BFC;&#x81F4;&#x7684;&#x6D4B;&#x91CF;&#x65F6;&#x95F4;&#x7684;&#x4E0D;&#x65AD;&#x52A0;&#x500D;&#x4E86;&#x3002;</p>
<p><img src="http://image.rengwuxian.com/2021/05/05/58596a6ec9dc5.png" alt="View &#x5D4C;&#x5957;&#x592A;&#x6DF1;&#x4F1A;&#x5361;&#xFF1F;&#x6765;&#x7528; Jetpack Compose&#xFF0C;&#x968F;&#x4FBF;&#x5957;&#x2014;&#x2014;Intrinsic Measurement" loading="lazy"></p>
<p>&#x603B;&#x7ED3;&#x6210;&#x4E00;&#x53E5;&#x8BDD;&#x5C31;&#x662F;&#xFF0C;&#x5728; Compose &#x91CC;&#x75AF;&#x72C2;&#x5D4C;&#x5957;&#x5730;&#x5199;&#x754C;&#x9762;&#xFF0C;&#x548C;&#x628A;&#x6240;&#x6709;&#x7EC4;&#x4EF6;&#x5168;&#x90FD;&#x5199;&#x8FDB;&#x540C;&#x4E00;&#x5C42;&#x91CC;&#x9762;&#xFF0C;&#x6027;&#x80FD;&#x662F;&#x4E00;&#x6837;&#x7684;&#xFF01;</p>
<p>&#x8FD9;&#x2026;&#x2026;&#x8FD8;&#x6015;&#x5D4C;&#x5957;&#xFF1F;</p>
<p>&#x521A;&#x624D;&#x90A3;&#x4E2A;&#x300C;&#x56FA;&#x6709;&#x7279;&#x6027;&#x6D4B;&#x91CF;&#x300D;&#x7684;&#x7FFB;&#x8BD1;&#xFF0C;&#x6211;&#x4E3A;&#x4EC0;&#x4E48;&#x89C9;&#x5F97;&#x6CA1;&#x6709;&#x7075;&#x9B42;&#x5462;&#xFF0C;&#x4E3B;&#x8981;&#x662F;&#x90A3;&#x4E2A;&#x300C;&#x56FA;&#x6709;&#x7279;&#x6027;&#x300D;&#x6307;&#x7684;&#x5176;&#x5B9E;&#x5C31;&#x662F;&#x300C;&#x56FA;&#x6709;&#x5C3A;&#x5BF8;&#x300D;&#xFF0C;&#x4E5F;&#x5C31;&#x662F;&#x8FD9;&#x4E2A;&#x7EC4;&#x4EF6;&#x5B83;&#x81EA;&#x8EAB;&#x7684;&#x5BBD;&#x5EA6;&#x548C;&#x9AD8;&#x5EA6;&#x3002;&#x800C;&#x7FFB;&#x8BD1;&#x6210;&#x300C;&#x56FA;&#x6709;&#x7279;&#x6027;&#x6D4B;&#x91CF;&#x300D;&#x5C31;&#x6709;&#x70B9;&#x592A;&#x76F4;&#x4E86;&#xFF0C;&#x76F4;&#x5230;&#x53CD;&#x800C;&#x8BA9;&#x542B;&#x4E49;&#x6709;&#x70B9;&#x626D;&#x66F2;&#x4E86;&#x3002;&#x4E0D;&#x8FC7;&#x65E0;&#x4F24;&#x5927;&#x96C5;&#x554A;&#xFF0C;&#x4E0D;&#x7BA1;&#x662F;&#x300C;&#x56FA;&#x6709;&#x5C3A;&#x5BF8;&#x6D4B;&#x91CF;&#x300D;&#x8FD8;&#x662F;&#x300C;&#x56FA;&#x6709;&#x7279;&#x6027;&#x6D4B;&#x91CF;&#x300D;&#xFF0C;&#x8FD9;&#x4E2A;&#x8BBE;&#x8BA1;&#x771F;&#x7684;&#x5F88;&#x597D;&#xFF0C;&#x5B83;&#x8BA9; Compose &#x9003;&#x8FC7;&#x4E86; Android &#x539F;&#x751F; View &#x7CFB;&#x7EDF;&#x91CC;&#x7684;&#x4E00;&#x4E2A;&#x6027;&#x80FD;&#x9677;&#x9631;&#x3002;</p>
<p>&#x4E8B;&#x5B9E;&#x4E0A;&#xFF0C;&#x4F60;&#x7528;&#x4E00;&#x7528; Compose &#x4E5F;&#x4F1A;&#x53D1;&#x73B0;&#xFF0C;&#x5B83;&#x7684;&#x6027;&#x80FD;&#x5DF2;&#x7ECF;&#x5728;&#x4E00;&#x4E9B;&#x65B9;&#x9762;&#x8D85;&#x8D8A;&#x539F;&#x751F;&#x4E86;&#x2014;&#x2014;&#x5C24;&#x5176;&#x662F;&#x5BF9;&#x4E8E;&#x590D;&#x6742;&#x573A;&#x666F;&#xFF0C;&#x6BD4;&#x5982;&#x591A;&#x7EC4;&#x4EF6;&#x5171;&#x540C;&#x53C2;&#x4E0E;&#x7684;&#x52A8;&#x753B;&#x3002;&#x4E0D;&#x8FC7;&#x76EE;&#x524D;&#x4E3A;&#x6B62;&#xFF0C;&#x8FD8;&#x53EA;&#x662F;&#x4E00;&#x4E9B;&#x65B9;&#x9762;&#x800C;&#x5DF2;&#xFF0C;&#x5E76;&#x6CA1;&#x6709;&#x5168;&#x65B9;&#x4F4D;&#x8D85;&#x8D8A;&#x3002;&#x6BD4;&#x5982;&#x6ED1;&#x52A8;&#x5217;&#x8868;&#x7684;&#x6027;&#x80FD;&#xFF0C;Compose &#x76EE;&#x524D;&#x662F;&#x4E0D;&#x5982;&#x539F;&#x751F;&#x7684; <code>RecyclerView</code> &#x7684;&#x3002;&#x73B0;&#x5728; Compose &#x7684;&#x6B63;&#x5F0F;&#x7248;&#x53D1;&#x5E03;&#x5DF2;&#x7ECF;&#x8D8A;&#x6765;&#x8D8A;&#x8FD1;&#x4E86;&#xFF0C;&#x800C;&#x4E14;&#x4ECE;&#x53D1;&#x5E03;&#x65E5;&#x5FD7;&#x6765;&#x770B;&#xFF0C;&#x76EE;&#x524D; Compose &#x7684;&#x5F00;&#x53D1;&#x91CD;&#x5FC3;&#x8FD8;&#x5728; API &#x5B8C;&#x6574;&#x6027;&#x7684;&#x586B;&#x8865;&#x548C; Bug &#x4FEE;&#x590D;&#x4E0A;&#xFF0C;&#x6240;&#x4EE5;&#x5230;&#x4E86;&#x6B63;&#x5F0F;&#x53D1;&#x5E03;&#x90A3;&#x5929;&#x80FD;&#x4E0D;&#x80FD;&#x770B;&#x5230; Compose &#x5168;&#x65B9;&#x4F4D;&#x8D85;&#x8D8A;&#x539F;&#x751F;&#x7684;&#x6027;&#x80FD;&#xFF0C;&#x6211;&#x662F;&#x6709;&#x70B9;&#x6000;&#x7591;&#x7684;&#x3002;&#x4E0D;&#x8FC7;&#x4ECE;&#x539F;&#x7406;&#x4E0A;&#x770B;&#xFF0C;&#x5C31;&#x7B97;&#x53D1;&#x5E03;&#x7684;&#x65F6;&#x5019;&#x4E0D;&#x884C;&#xFF0C;&#x672A;&#x6765;&#x5E94;&#x8BE5;&#x662F;&#x6709;&#x53EF;&#x80FD;&#x7684;&#x3002;</p>
<h2 id="%E6%80%BB%E7%BB%93">&#x603B;&#x7ED3;</h2>
<p>&#x5982;&#x679C;&#x4F60;&#x505A; Android &#x5F00;&#x53D1;&#xFF0C;Compose &#x771F;&#x7684;&#x662F;&#x65F6;&#x5019;&#x4E86;&#x89E3;&#x4E00;&#x4E0B;&#x4E86;&#x3002;&#x6211;&#x4EE5;&#x540E;&#x8FD8;&#x4F1A;&#x53D1;&#x5E03;&#x66F4;&#x591A;&#x5173;&#x4E8E; Compose &#x4EE5;&#x53CA; Android &#x5F00;&#x53D1;&#x76F8;&#x5173;&#x7684;&#x5185;&#x5BB9;&#xFF0C;&#x6240;&#x4EE5;&#x5173;&#x6CE8;&#x6211;&#x5427;&#xFF0C;&#x6CA1;&#x9519;&#x7684;&#xFF01;&#x5982;&#x679C;&#x4F60;&#x60F3;&#x5FEB;&#x901F;&#x6210;&#x4E3A; Compose &#x9AD8;&#x624B;&#xFF0C;&#x4E5F;&#x53EF;&#x4EE5;&#x4E86;&#x89E3;&#x4E00;&#x4E0B;&#x6211;&#x7684; Compose &#x8BFE;&#x7A0B;&#xFF0C;&#x6211;&#x7684;&#x540C;&#x540D;&#x516C;&#x4F17;&#x53F7;&#x300C;&#x6254;&#x7269;&#x7EBF;&#x300D;&#x91CC;&#x9762;&#x6709;&#x514D;&#x8D39;&#x8BD5;&#x542C;&#x8BFE;&#x3002;</p>
<p><img src="http://image.rengwuxian.com/2021/05/05/c4ca4721c18c2.jpg" alt="View &#x5D4C;&#x5957;&#x592A;&#x6DF1;&#x4F1A;&#x5361;&#xFF1F;&#x6765;&#x7528; Jetpack Compose&#xFF0C;&#x968F;&#x4FBF;&#x5957;&#x2014;&#x2014;Intrinsic Measurement" loading="lazy"></p>
<p><img src="http://image.rengwuxian.com/2021/05/05/b5af97375e821.jpg" alt="View &#x5D4C;&#x5957;&#x592A;&#x6DF1;&#x4F1A;&#x5361;&#xFF1F;&#x6765;&#x7528; Jetpack Compose&#xFF0C;&#x968F;&#x4FBF;&#x5957;&#x2014;&#x2014;Intrinsic Measurement" loading="lazy"></p>
<p>&#x597D;&#x4E86;&#x4ECA;&#x5929;&#x7684;&#x5185;&#x5BB9;&#x5C31;&#x5230;&#x8FD9;&#x91CC;&#xFF0C;&#x6211;&#x662F;&#x6254;&#x7269;&#x7EBF;&#xFF0C;&#x6211;&#x4E0D;&#x548C;&#x4F60;&#x6BD4;&#x9AD8;&#x4F4E;&#xFF0C;&#x6211;&#x53EA;&#x52A9;&#x4F60;&#x6210;&#x957F;&#xFF0C;&#x6211;&#x4EEC;&#x4E0B;&#x671F;&#x89C1;&#x3002;</p>
<!--kg-card-end: markdown-->]]></content:encoded></item></channel></rss>