Android(安卓)澶嶄範_Processes and Threads
<!-- [if gte mso 9]><xml> <w:WordDocument> <w:View>Normal</w:View> <w:Zoom>0</w:Zoom> <w:TrackMoves/> <w:TrackFormatting/> <w:PunctuationKerning/> <w:ValidateAgainstSchemas/> <w:SaveIfXMLInvalid>false</w:SaveIfXMLInvalid> <w:IgnoreMixedContent>false</w:IgnoreMixedContent> <w:AlwaysShowPlaceholderText>false</w:AlwaysShowPlaceholderText> <w:DoNotPromoteQF/> <w:LidThemeOther>EN-US</w:LidThemeOther> <w:LidThemeAsian>ZH-CN</w:LidThemeAsian> <w:LidThemeComplexScript>X-NONE</w:LidThemeComplexScript> <w:Compatibility> <w:BreakWrappedTables/> <w:SnapToGridInCell/> <w:WrapTextWithPunct/> <w:UseAsianBreakRules/> <w:DontGrowAutofit/> <w:SplitPgBreakAndParaMark/> <w:DontVertAlignCellWithSp/> <w:DontBreakConstrainedForcedTables/> <w:DontVertAlignInTxbx/> <w:Word11KerningPairs/> <w:CachedColBalance/> <w:UseFELayout/> </w:Compatibility> <m:mathPr> <m:mathFont m:val="Cambria Math"/> <m:brkBin m:val="before"/> <m:brkBinSub m:val="--"/> <m:smallFrac m:val="off"/> <m:dispDef/> <m:lMargin m:val="0"/> <m:rMargin m:val="0"/> <m:defJc m:val="centerGroup"/> <m:wrapIndent m:val="1440"/> <m:intLim m:val="subSup"/> <m:naryLim m:val="undOvr"/> </m:mathPr></w:WordDocument> </xml><![endif]--><!-- [if gte mso 9]><xml> <w:LatentStyles DefLockedState="false" DefUnhideWhenUsed="true" DefSemiHidden="true" DefQFormat="false" DefPriority="99" LatentStyleCount="267"> <w:LsdException Locked="false" Priority="0" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Normal"/> <w:LsdException Locked="false" Priority="9" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="heading 1"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 2"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 3"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 4"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 5"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 6"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 7"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 8"/> <w:LsdException Locked="false" Priority="9" QFormat="true" Name="heading 9"/> <w:LsdException Locked="false" Priority="39" Name="toc 1"/> <w:LsdException Locked="false" Priority="39" Name="toc 2"/> <w:LsdException Locked="false" Priority="39" Name="toc 3"/> <w:LsdException Locked="false" Priority="39" Name="toc 4"/> <w:LsdException Locked="false" Priority="39" Name="toc 5"/> <w:LsdException Locked="false" Priority="39" Name="toc 6"/> <w:LsdException Locked="false" Priority="39" Name="toc 7"/> <w:LsdException Locked="false" Priority="39" Name="toc 8"/> <w:LsdException Locked="false" Priority="39" Name="toc 9"/> <w:LsdException Locked="false" Priority="35" QFormat="true" Name="caption"/> <w:LsdException Locked="false" Priority="10" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Title"/> <w:LsdException Locked="false" Priority="1" Name="Default Paragraph Font"/> <w:LsdException Locked="false" Priority="11" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtitle"/> <w:LsdException Locked="false" Priority="22" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Strong"/> <w:LsdException Locked="false" Priority="20" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Emphasis"/> <w:LsdException Locked="false" Priority="59" SemiHidden="false" UnhideWhenUsed="false" Name="Table Grid"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Placeholder Text"/> <w:LsdException Locked="false" Priority="1" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="No Spacing"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 1"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 1"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 1"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 1"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 1"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 1"/> <w:LsdException Locked="false" UnhideWhenUsed="false" Name="Revision"/> <w:LsdException Locked="false" Priority="34" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="List Paragraph"/> <w:LsdException Locked="false" Priority="29" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Quote"/> <w:LsdException Locked="false" Priority="30" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Quote"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 1"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 1"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 1"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 1"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 1"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 1"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 1"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 1"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 2"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 2"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 2"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 2"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 2"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 2"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 2"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 2"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 2"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 2"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 2"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 2"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 2"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 2"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 3"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 3"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 3"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 3"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 3"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 3"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 3"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 3"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 3"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 3"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 3"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 3"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 3"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 3"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 4"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 4"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 4"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 4"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 4"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 4"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 4"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 4"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 4"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 4"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 4"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 4"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 4"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 4"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 5"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 5"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 5"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 5"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 5"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 5"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 5"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 5"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 5"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 5"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 5"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 5"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 5"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 5"/> <w:LsdException Locked="false" Priority="60" SemiHidden="false" UnhideWhenUsed="false" Name="Light Shading Accent 6"/> <w:LsdException Locked="false" Priority="61" SemiHidden="false" UnhideWhenUsed="false" Name="Light List Accent 6"/> <w:LsdException Locked="false" Priority="62" SemiHidden="false" UnhideWhenUsed="false" Name="Light Grid Accent 6"/> <w:LsdException Locked="false" Priority="63" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 1 Accent 6"/> <w:LsdException Locked="false" Priority="64" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Shading 2 Accent 6"/> <w:LsdException Locked="false" Priority="65" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 1 Accent 6"/> <w:LsdException Locked="false" Priority="66" SemiHidden="false" UnhideWhenUsed="false" Name="Medium List 2 Accent 6"/> <w:LsdException Locked="false" Priority="67" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 1 Accent 6"/> <w:LsdException Locked="false" Priority="68" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 2 Accent 6"/> <w:LsdException Locked="false" Priority="69" SemiHidden="false" UnhideWhenUsed="false" Name="Medium Grid 3 Accent 6"/> <w:LsdException Locked="false" Priority="70" SemiHidden="false" UnhideWhenUsed="false" Name="Dark List Accent 6"/> <w:LsdException Locked="false" Priority="71" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Shading Accent 6"/> <w:LsdException Locked="false" Priority="72" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful List Accent 6"/> <w:LsdException Locked="false" Priority="73" SemiHidden="false" UnhideWhenUsed="false" Name="Colorful Grid Accent 6"/> <w:LsdException Locked="false" Priority="19" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Emphasis"/> <w:LsdException Locked="false" Priority="21" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Emphasis"/> <w:LsdException Locked="false" Priority="31" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Subtle Reference"/> <w:LsdException Locked="false" Priority="32" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Intense Reference"/> <w:LsdException Locked="false" Priority="33" SemiHidden="false" UnhideWhenUsed="false" QFormat="true" Name="Book Title"/> <w:LsdException Locked="false" Priority="37" Name="Bibliography"/> <w:LsdException Locked="false" Priority="39" QFormat="true" Name="TOC Heading"/> </w:LatentStyles> </xml><![endif]--><!-- [if gte mso 10]> <style> /* Style Definitions */ table.MsoNormalTable {mso-style-name:鏅€氳〃鏍? mso-tstyle-rowband-size:0; mso-tstyle-colband-size:0; mso-style-noshow:yes; mso-style-priority:99; mso-style-qformat:yes; mso-style-parent:""; mso-padding-alt:0cm 5.4pt 0cm 5.4pt; mso-para-margin-top:0cm; mso-para-margin-right:0cm; mso-para-margin-bottom:10.0pt; mso-para-margin-left:0cm; line-height:115%; mso-pagination:widow-orphan; font-size:11.0pt; font-family:"Calibri","sans-serif"; mso-ascii-font-family:Calibri; mso-ascii-theme-font:minor-latin; mso-hansi-font-family:Calibri; mso-hansi-theme-font:minor-latin;} </style> <![endif]-->
Processes and Threads
褰撲竴涓簲鐢ㄧ粍浠跺惎鍔ㄤ簡锛屽苟涓旇搴旂敤娌℃湁鍒殑姝e湪杩愯鐨勭粍浠讹紝 Android绯荤粺浼氫负杩欎釜搴旂敤鍚姩涓€涓?/span> Linux杩涚▼锛屽皢鍏舵斁鍏ヤ竴涓嚎绋嬩腑杩愯銆傞粯璁ょ殑锛屽悓涓€涓簲鐢ㄧ殑鎵€鏈夌粍浠惰繍琛屽湪鍚屼竴涓繘绋嬩笌绾跨▼涓?/span> (涓荤嚎绋?/span> main thread)銆傚綋涓€涓簲鐢ㄧ粍浠跺惎鍔ㄦ椂锛屽凡缁忔湁涓€涓搴旂敤鐨勮繘绋嬪瓨鍦ㄤ簡 (瀛樺湪璇ュ簲鐢ㄧ殑鍒殑缁勪欢 )锛岄偅涔堣繖涓粍浠跺氨鍦ㄨ繖涓繘绋嬩腑鍚姩锛屽苟涓斾娇鐢ㄧ浉褰撶殑绾跨▼鍘绘墽琛屻€傜劧鑰岋紝浣犲彲浠ヨ浣犵殑搴旂敤鐨勪笉鍚岀粍浠惰繍琛屼簬涓嶅悓鐨勮繘绋嬩腑锛屽苟涓斾綘鍙互涓轰换浣曡繘绋嬪垱寤洪檮鍔犺繘绋嬨€?/span>
杩涚▼ (Processes)
榛樿鐨勶紝鍚屼竴涓簲鐢ㄧ殑鎵€鏈夌粍浠惰繍琛屼簬鍚屼竴涓繘绋嬩腑锛屽苟涓旂粷澶у鏁板簲鐢ㄤ笉搴旇鏀瑰彉杩欎釜銆傜劧鑰岋紝濡傛灉浣犳兂瑕佹帶鍒朵綘鐨勪竴涓‘瀹氱殑搴旂敤缁勪欢灞炰簬鏌愪竴涓繘绋嬶紝浣犲彲浠ュ湪 manifest 鏂囦欢涓仛鍒拌繖浠朵簨鎯呫€?/span>
Manifest鏂囦欢涓烘瘡涓€涓粍浠?/span> (<activity>,<service>,<recevier>,<provider>)鐨勫叆鍙f彁渚涗簡涓€涓?/span> android:process鐨勫睘鎬х敤浠ユ寚瀹氳繖涓粍浠跺簲璇ュ湪鍝竴涓繘绋嬩腑杩愯銆備綘鍙互璁剧疆杩欎釜灞炴€т娇鐢ㄦ瘡涓粍浠跺湪浠栬嚜宸辩殑杩涚▼涓繍琛岋紝鎴栬€呬娇涓€浜涚粍浠朵韩鐢ㄤ竴涓繘绋嬶紝鑰屽埆鐨勭粍浠朵笉鍙互銆備綘涔熷彲浠ヨ缃?/span> android:process灞炴€э紝浣挎潵鑷笉鍚岀殑搴旂敤鐨勭粍浠跺湪鍚屼竴涓繘绋嬩腑杩愯锛屽簲鐢ㄧ▼搴忓叡浜悓涓€涓?/span> Linux鐨?/span> user ID,鐩稿悓鐨勭鍚嶈璇併€?/span>
<application>鍏冪礌涔熸敮鎸?/span> android:process灞炴€э紝鐢ㄤ互璁剧疆鎵€鏈夌粍浠剁殑榛樿鍊笺€?/span>
Android绯荤粺鍙兘鍦ㄦ煇浜涙椂鍊欏喅瀹氬叧闂帀涓€涓繘绋嬶紝褰撳唴瀛樹綆鏃讹紝涓旇骞剁殑搴旂敤璇锋眰绔嬪嵆闇€瑕佹洿澶氱殑鍐呭瓨涓虹敤鎴锋湇鍔°€傚湪閭d釜杩涚▼涓繍琛岀殑缁勪欢鍥犳鑰岃閿€姣佹帀銆傚綋杩欎簺缁勪欢鍐嶆涓虹敤鎴疯€屽伐浣滄椂锛岃繖涓繘绋嬪皢鍐嶆鍚姩銆?/span>
褰撳喅瀹氬摢涓繘绋嬪簲璇ヨ鏉€鎺夋椂锛?/span> Android绯荤粺浼氭潈琛¤繖浜涜繘绋嬪浜庣敤鎴疯€岃█鐨勭浉瀵归噸瑕佹€с€備緥濡傦細鐩稿浜庢嫢鏈変竴缁勫彲瑙?/span> Activty鐨勮繘绋嬭€岃█锛屼竴涓寔鏈変竴缁勪笉鍐嶅鐢ㄦ埛鍙鐨?/span> Activity鐨勮繘绋嬫洿搴旇琚叧闂€?/span>
杩涚▼鐢熷懡鍛ㄦ湡 (Process lifecycle)
Android绯荤粺璇曞浘璁╀竴涓簲鐢ㄨ繘绋嬪湪绯荤粺涓敖鍙兘鐨勯暱鐨勮缁存寔锛屼絾鏄渶缁堜负浜嗘柊鐨勬垨鑰呮洿涓洪噸瑕佺殑杩涚▼杩樻槸闇€瑕佺Щ闄ゆ帀鏃х殑杩涚▼浠ュ洖鏀跺唴瀛樸€備负浜嗗喅瀹氬摢涓粍浠跺簲璇ヤ繚鐣欙紝鍝釜缁勪欢搴旇鏉€鎺夛紝绯荤粺浼氭牴鎹繍琛屽湪杩涚▼涓殑缁勪欢浠ュ強杩欎簺缁勪欢杩愯鐨勭姸鎬佹潵灏嗘瘡涓€涓繘绋嬫斁鍏ヤ竴涓€滈噸瑕佺瓑绾ф爲鈥濅腑銆傛渶浣庨噸瑕佸害鐨勮繘绋嬮鍏堣鏉€鎺夛紝鐒跺悗鏄浣庣骇鍒噸瑕佸害鐨勮繘绋嬶紝濡傛涓嬪幓锛屾牴鎹仮澶嶇郴缁熻祫婧愮殑蹇呰鎬с€?/span>
杩欓噷鏈変簲涓噸瑕佸害绛夌骇銆備笅鍒楁竻鍗曞垪鍑洪噸瑕佹€ч『搴忕殑涓嶅悓绫诲瀷鐨勮繘绋?/span> (绗竴涓繘绋嬫槸鏈€閲嶈鐨勪笖搴旇鏈€鍚庤鏉€ ):
1. 鍓嶅彴杩涚▼ (Foreground process)
鐢ㄦ埛姝e湪璇锋眰鐨勮繘绋嬨€傚綋浠ヤ笅浠讳綍涓€涓潯浠舵垚绔嬫椂锛岃杩涚▼琚涓烘槸鍓嶅彴杩涚▼ (Foreground process)銆?/span>
l 浠栨寔鏈変竴涓敤鎴锋鍦ㄤ笌涔嬩氦浜掔殑 Activity(杩欎釜 Activity鐨?/span> onResume()琚皟鐢ㄤ簡 )銆?/span>
l 浠栨寔鏈変竴涓湇鍔★紝涓旇鏈嶅姟琚粦瀹氬埌涓€涓鍦ㄤ笌鐢ㄦ埛浜や簰鐨?/span> Activity浜嗐€?/span>
l 浠栨寔鏈変竴涓湇鍔★紝涓旇鏈嶅姟鍦ㄥ墠鍙拌繍琛岋紝鍗宠鏈嶅姟 startForground()璋冪敤銆?/span>
l 浠栨寔鏈変竴涓湇鍔★紝涓旇鏈嶅姟姝e湪鎵ц鍏剁敓鍛藉懆鏈熺殑鍥炶皟鏂规硶 (onCreate(),onStart(),onDestroy())銆?/span>
l 浠栨寔鏈変竴涓?/span> BroadcastReceiver锛屼笖鍏舵鍦ㄦ墽琛?/span> onRecevie()鏂规硶銆?/span>
閫氬父锛屽湪涓€涓粰瀹氱殑鏃堕棿鍙湁寰堝皯涓€浜涘墠鍙拌繘绋?/span> (foreground process)瀛樺湪銆傚綋绯荤粺鍐呭瓨濡傛婧冩硾浠ヨ嚦浜庝粬浠笉鑳藉叏閮ㄧ户缁繍琛屾椂锛屼粬浠細渚濆簭鏈€鍚庤鏉€銆傞€氬父锛屽湪閭f椂锛岃澶囧凡杈惧埌鍐呭瓨鍒嗛〉鐨勭姸鎬侊紝鎵€浠ヨ姹傛潃鎺変竴浜涘墠鍙拌繘绋嬩互纭繚鐢ㄦ埛鍝嶅簲銆?/span>
2. 鍙杩涚▼ (Visible process)
涓€涓彲瑙嗚繘绋?/span> (visible process)娌℃湁浠讳綍鍓嶅彴缁勪欢锛屼絾鍏朵粛鐒跺湪灞忓箷涓婂鐢ㄦ埛鍙銆傚綋浠ヤ笅浠讳綍涓€涓潯浠舵垚绔嬫椂锛岃杩涚▼琚涓烘槸鍙杩涚▼ (visible process)銆?/span>
l 浠栨寔鏈変竴涓?/span> Activity锛屼笖璇?/span> Activity娌℃湁澶勪簬鍓嶅彴锛屼絾鏄浜庣敤鎴疯€岃█浠栦粛鐒跺彲瑙?/span> (浠栫殑 onPause()鏂规硶琚皟鐢?/span> )銆傝繖鏄彲鑳藉彂鐢熺殑锛屼緥濡傦紝涓€涓墠鍙?/span> activity鍚姩浜嗕竴涓璇濇锛屼粬鍏佽浠栧墠闈㈢殑 activity鍙銆?/span>
l 浠栨寔鏈変竴涓湇鍔★紝涓旇鏈嶅姟琚粦瀹氬埌涓€涓彲瑙?/span> (鎴栦竴涓墠鍙?/span> )activity銆?/span>
涓€涓彲瑙嗚繘绋?/span> (visible process)琚涓烘槸鏋佸叾閲嶈鐨勶紝鍙湁涓轰簡璁╂墍鏈夌殑鍓嶅彴杩涚▼淇濇寔杩愯鎵嶆湁鍙兘浼氭潃鎺変粬銆?/span>
3. 鏈嶅姟杩涚▼ (Service process)
涓€涓繘绋嬩粬姝h繍琛屼竴涓敱 startService()鏂规硶鍚姩鐨勬湇鍔★紝骞朵笖娌℃湁琚帀鍏ュ埌涓や釜鏇撮珮绾у埆鐨勭被鍒腑銆傚敖绠℃湇鍔¤繘绋嬫病鏈夌洿鎺ヨ鐢ㄦ埛鐪嬭锛屼絾浠栭€氬父鍋氫竴浜涚敤鎴峰叧蹇冪殑浜嬫儏锛堟瘮濡傚湪鍚庡彴鎾斁闊充箰锛屾垨鑰呭湪缃戠粓涓嬭浇鏂囦欢锛夛紝鎵€浠ョ郴缁熶細璁╀粬淇濇寔杩愯鐩村埌杩欓噷娌℃湁瓒冲鐨勫唴瀛樹负鍓嶅彴杩涚▼鍜屽彲瑙佽繘绋嬩繚鐣欍€?/span>
4. 鍚庡彴杩涚▼ (Background process)
涓€涓悗鍙拌繘绋嬫寔鏈変竴涓鐢ㄦ埛涓嶅彲瑙佺殑 Activity(浠栫殑 onStop()鏂规硶宸茬粡璋冪敤浜?/span> )銆傝繖浜涜繘绋嬩笉鍐嶇洿鎺ュ奖鍝嶅埌鐢ㄦ埛浣撻獙锛岀郴缁熼殢鏃跺彲浠ユ潃姝讳粬浠负鍓嶅彴锛屽彲绀猴紝鏈嶅姟杩涚▼鍥炴敹鍐呭瓨銆傞€氬父浼氭湁璁稿鍚庡彴杩涚▼杩愯锛屾墍浠ヤ粬浠繚瀛樺湪涓€涓?/span> LRU(least recently used)鍒楄〃涓互纭繚鏈€鍚庤鏉€鐨勮繖涓繘绋嬫槸鎷ユ湁鏈€鍚庝竴涓渶杩戣鐢ㄦ埛鐪嬪埌鐨?/span> activity銆傚鏋滀竴涓?/span> Activity鐨勭敓鍛藉懆鏈熸柟娉曡 姝g‘鐨勫疄鐜颁簡锛屼繚瀛樹粬鐨勫綋鍓嶇姸鎬侊紝鏉€鎺変粬鐨勮繘绋嬪浜庣敤鎴蜂綋楠屼笉浼氭湁鏄捐憲鐨勫奖鍝嶏紝鍥犱负褰撶敤鎴峰洖鍒拌繖涓?/span> Activity锛岃繖涓?/span> Activity浼氭仮澶嶄粬鐨勬墍鏈夌殑鍙鐨勭姸鎬併€?/span>
5. 绌鸿繘绋?/span> (Empty process)
涓€涓繘绋嬩笉鍐嶆寔鏈変换浣曟椿鍔ㄧ殑搴旂敤缁勪欢銆備繚鎸佽繖绉嶇被鍨嬬殑杩涚▼娲诲姩鐨勫敮涓€鐞嗙敱鏄紦瀛樼洰鐨勶紝涓轰簡鏀瑰杽涓嬫杩愯璇ヨ繘绋嬩腑鐨勪竴涓粍浠剁殑鍚姩鏃堕棿銆傜郴缁熺粡甯告潃姝昏繖浜涜繘绋嬪湪杩涚▼缂撳瓨涓庡唴鏍哥紦瀛樹箣闂翠繚鎸佹暣涓郴缁熻祫婧愮殑骞宠 銆?/span>
Android浼氬皢涓€涓繘绋嬬殑绛夌骇鏍规嵁杩欎釜杩涚▼涓殑婵€娲荤殑缁勪欢鐨勯噸瑕佸害瀹氫箟涓轰粬鍙互琚畾涔夌殑鏈€楂樼骇銆備緥濡傦紝涓€涓繘绋嬫嫢鏈変竴涓湇鍔″拰涓€涓彲绀虹殑 activity锛岃杩涚▼浼氳瀹氫箟涓哄彲绀鸿繘绋嬶紝鑰屼笉鏄湇鍔¤繘绋嬨€?/span>
鍙﹀锛屼竴涓繘绋嬬殑绛夌骇鍙互鐢变簬鍒殑杩涚▼鐨勪緷璧栬€屽鍔犮€備竴涓湇鍔′簬鍙︿竴涓繘绋嬬殑杩涚▼姘歌繙涓嶈兘姣斿彟涓€涓繘绋嬬殑绛夌骇浣庛€備緥濡傦紝涓€涓潵鑷簬杩涚▼ A涓殑 Content Provider鏈嶅姟浜庤繘绋?/span> B涓殑涓€涓鎴风 锛屾垨鑰呰繘绋?/span> A涓殑涓€涓湇鍔¤缁戝畾鍒?/span> B涓殑涓€涓粍浠讹紝杩涚▼ A琚涓哄叾閲嶈搴︿笉浣庝簬杩涚▼ B銆?/span>
鍥犱负杩愯涓€涓湇鍔$殑杩涚▼鐨勭瓑绾ч珮浜庤繍琛屼竴涓悗鍙?/span> Activity鐨勮繘绋嬬殑绛夌骇锛屼竴涓椿鍔ㄥ噯澶囨墽琛屼竴涓暱鏃堕棿鐨勬搷浣滃彲鑳芥渶濂芥槸涓鸿繖涓搷浣滃惎鍔?/span> 涓€涓湇鍔★紝鑰屼笉鏄畝鍗曠殑鍒涘缓涓€涓伐浣滆€呯嚎绋嬶紝鐗瑰埆鏄綋杩欎釜鎿嶄綔鍙兘浼氳秴杩?/span> Activity鐨勭敓鍛芥湡銆備緥濡傦紝涓€涓?/span> Activity涓婁紶涓€涓浘鐗囧埌涓€涓?/span> Web绔欑偣锛屽簲璇ュ惎鍔ㄤ竴涓湇鍔℃潵鎵ц涓婁紶锛岃繖鏍峰綋鐢ㄦ埛绂诲紑杩欎釜 Activity鍚庯紝涓婁紶鐨勬搷浣滀粛鐒跺彲浠ュ湪鍚庡彴缁х画銆備娇鐢ㄤ竴涓湇鍔℃潵瀹堟姢杩欎釜鎿嶄綔锛屼笉璁?/span> Activity鍙戠敓浜嗕粈涔堬紝浣垮叾鑷冲皯鎷ユ湁鏈嶅姟杩涚▼ (service process)鐨勪紭鍏堢骇銆傝繖鏄悓涓€涓悊鐢卞浜庡箍鎾帴鏀惰€?/span> (Broadcast receiver)搴旇浣跨敤鏈嶅姟鑰屼笉鏄畝鍗曠殑鍚敤涓€涓伐浣滆€呯嚎绋嬨€?/span>
绾跨▼ (Threads)
褰撲竴涓簲鐢ㄥ惎鍔ㄤ簡锛岀郴缁熶細鍒涘缓涓€涓嚎绋嬫潵鎵ц杩欎釜搴旂敤锛岃繖涓嚎绋嬪彨涓?/span> (main)绾跨▼銆傝繖涓嚎绋嬮潪甯搁噸瑕侊紝鍥犱负浠栬礋璐e垎閰嶄簨浠跺埌鍚堥€傜殑鐢ㄦ埛鎺ュ彛锛屽寘鎷粯鍥句簨浠躲€備粬涔熸槸浣犵殑搴旂敤涓庢潵鑷?/span> Android鐨?/span> toolkit鐨勭粍浠?/span> (鏉ヨ嚜 android.widget涓?/span> android.view鍖呯殑缁勪欢 )浜や簰鐨勭嚎绋嬨€傝繖鏍凤紝涓荤嚎绋嬫湁鏃朵篃鍙?/span> UI绾跨▼銆?/span>
绯荤粺涓嶄細涓哄簲鐢ㄦ瘡涓粍浠跺疄渚嬪崟鐙垱寤虹嫭绔嬬殑绾跨▼銆傛墍鏈夌殑缁勪欢杩愯鍦ㄥ悓涓€涓嚎绋嬩腑锛屽苟涓旈兘鍦?/span> UI绾跨▼涓疄渚嬪寲锛岀郴缁熻皟鐢ㄥ彂閫佸埌浠庣嚎绋嬭皟搴︾殑姣忎竴涓粍浠躲€傛墍浠ワ紝鍝嶅簲绯荤粺璋冪敤鐨勬柟娉?/span> (姣斿 onKeyDown()鎶ュ憡鐢ㄦ埛鐨勮涓猴紝鎴栬€呬竴涓敓鍛藉懆鏈熺殑鍥炶皟 )鎬绘槸鍦ㄨ杩涚▼鐨?/span> UI绾跨▼涓繍琛屻€?/span>
渚嬪锛屽綋鐢ㄦ埛瑙︽懜灞忓箷涓婄殑涓€涓寜閽椂锛屼綘鐨勫簲鐢ㄧ殑 UI绾跨▼鍒嗗彂浣犵殑瑙︽懜浜嬩欢鍒伴偅涓?/span> widget, widget渚濇璁剧疆浠栫殑 pressed鐘舵€侊紝骞朵笖鍙戦€佷竴涓?/span> invalidate璇锋眰鍒颁簨浠堕槦鍒椼€傜劧鍚?/span> UI绾跨▼鍑洪槦骞堕€氱煡 widget浠栦滑搴旇閲嶇粯浠栬嚜宸便€?/span>
褰撲綘鐨勫簲鐢ㄧ▼搴忔墽琛屽瘑闆嗙殑宸ヤ綔鏉ュ搷搴旂敤鎴蜂氦浜掞紝杩欎釜鍗曚竴鐨勭嚎绋嬫ā鍨嬪彲浠ヤ骇鐢熻緝宸殑鎬ц兘锛岄櫎闈炰綘閫傚悎鐨勫疄鐜颁簡浣犵殑搴旂敤绋嬪簭 銆傜壒鍒湴锛屽鏋滄墍鏈夌殑浜嬫儏閮藉湪 UI绾跨▼涓彂鐢燂紝鎵ц闀胯€楁椂鐨勬搷浣滃缃戠粶璁块棶鎴栬€呮暟鎹煡璇㈠彲鑳戒細闃诲鏁翠釜 UI绾跨▼銆傚綋绾跨▼闃诲浜嗭紝娌℃湁浜嬩欢鍙互琚淳鍙戯紝鍖呮嫭缁樺浘浜嬩欢銆備粠鐢ㄦ埛瑙掑害鏉ョ湅锛屽簲鐢ㄤ技涔庤鎸傝捣浜嗐€傛洿绯熺硶鐨勬槸锛屽鏋?/span> UI绾跨▼闃诲鐨勬椂闂磋秴杩囦簡涓€瀹氱殑鏃堕棿 (鐜板湪澶х害璁剧疆涓?/span> 5绉?/span> )锛岀敤鎴峰皢浼氱湅鍒颁竴涓嚟鍚嶆槶钁楃殑鈥?/span> application not response鈥?ANR)瀵硅瘽妗嗐€傜敤鎴峰彲鑳戒細鍐冲畾閫€鍑轰綘鐨勫簲鐢ㄥ苟涓斿垹闄や粬銆?/span>
鍙﹀锛?/span> Android鐨?/span> UI toolkit涓嶆槸鐨勭嚎绋嬪畨鍏ㄧ殑銆傛墍浠ワ紝浣犲喅涓嶅厑璁镐粠浣犵殑宸ヤ綔绾跨▼鏉ユ搷浣滀綘鐨?/span> UI锛屽浣犵殑鐢ㄦ埛鎺ュ彛鍋氭墍鏈夌殑鎿嶄綔蹇呴』鍦?/span> UI绾跨▼涓畬鎴愩€傚洜姝わ紝瀵逛簬鍗曠嚎绋嬫ā鍨嬭繖閲屾湁涓ゆ潯瑙勫垯锛?/span>
1. 涓嶅厑璁搁樆濉?/span> UI绾跨▼
2. 涓嶅厑璁镐粠 UI绾跨▼涔嬪鏉ヨ闂?/span> Android鐨?/span> toolkit銆?/span>
宸ヤ綔鑰呯嚎绋?/span> (Worker threads)
鐢变簬浠ヤ笂鎻忚堪鐨勫崟绾跨▼妯″瀷锛屼綘鐨勫簲鐢ㄧ殑 UI鐨勫搷搴旀€ф槸鑷冲叧閲嶈鐨勶紝浣犲喅涓嶈兘闃诲鎺変綘鐨?/span> UI绾跨▼銆傚鏋滀綘鏈夎鎵ц涓€涓潪鐬棿鎬х殑鎿嶄綔锛屼綘搴旇纭繚灏嗕粬鏀惧埌鍗曠嫭鐨勭嚎绋嬩腑鍘绘墽琛?/span> (鍚庡彴 (background)鎴栬€呭伐浣滆€呯嚎绋?/span> (worker thread))銆?/span>
渚嬪锛屼互涓嬩唬鐮佹槸涓€涓偣鍑荤殑鐩戝惉鑰咃紝浠栦粠涓€涓崟鐙殑绾跨▼涓笅杞藉浘鐗囧苟灏嗕粬鏄剧ず鍒?/span> ImageView涓€?/span>
棣栧厛锛岀湅璧蜂粬浠緢濂界殑宸ヤ綔锛屽洜涓轰粬鍒涘缓浜嗕竴涓柊鐨勭嚎绋嬫潵澶勭悊缃戠粶鎿嶄綔銆傜劧鑰岋紝浠栬繚鑳屼簡鍗曠嚎绋嬫ā鍨嬬殑绗簩鏉″師鍒?/span> : 涓嶅厑璁镐粠 UI绾跨▼涔嬪鏉ヨ闂?/span> Android鐨?/span> toolkit銆傝繖涓緥瀛愪慨鏀?/span> ImageView鏄湪宸ヤ綔鑰呯嚎绋嬩腑鑰屼笉鏄?/span> UI绾跨▼涓€傝繖浼氬鑷存病鏈夊畾涔夌殑涓庡紓甯哥殑琛屼负锛屽幓杩借釜浠栧皢浼氬洶闅句笖鑰楁椂銆?/span>
瑙e喅杩欎釜闂锛?/span> Android鎻愪緵浜嗗嚑绉嶅姙娉曚粠鍒殑绾跨▼鏉ヨ闂?/span> UI绾跨▼銆傝繖閲屽垪鍑轰竴缁勫彲渚涘府鍔╃殑鏂规硶锛?/span>
Activity.runOnUiThread(Runnable)
View.post(Runnable)
View.postDelayed(Runnable,long)
渚嬪锛屼綘鍙互閫氳繃 view.post(Runnable)鏂规硶鏉ヤ慨澶嶄互涓婁唬鐮侊細
鐜板湪杩欎釜瀹炵幇鏄嚎绋嬪畨鍏ㄧ殑浜嗐€傜綉缁滄搷浣滄槸浠庝竴涓嫭绔嬬殑绾跨▼涓畬鎴愮殑锛?/span> ImageView涔熸槸鍦?/span> UI绾跨▼涓搷浣滅殑銆?/span>
鐒惰€岋紝闅忕潃鎿嶄綔鐨勫鏉傛€х殑澧炲姞锛岃繖绉嶄唬鐮佷細鍙樼殑澶嶆潅鍜岄毦浠ョ淮鎶ゃ€傚幓澶勭悊涓庡伐浣滆€呯嚎绋嬪鏉傜殑浜や簰锛屼綘鍙兘瑕佽€冭檻鍦ㄤ綘鐨勫伐浣滆€呯嚎绋嬩腑浣跨敤 Handler鏉ュ鐞嗕粠 UI绾跨▼涓彂閫佽繃鏉ョ殑娑堟伅銆備篃璁告渶濂界殑瑙e喅鏂规锛屾垨鑰呮槸鎵╁睍 AsyncTask绫伙紝浠栫畝鍖栦簡宸ヤ綔鑰呯嚎绋嬩笌 UI绾跨▼浜や簰鐨勬搷浣溿€?/span>
浣跨敤 AsyncTask(Using AsyncTask)
AsyncTask鍏佽浣犲湪浣犵殑鐢ㄦ埛鎺ュ彛涓婃墽琛屽紓姝ュ伐浣溿€備粬鍦ㄥ伐浣滆€呯嚎绋嬩腑鎵ц闃诲鎿嶄綔锛岀劧鍚庡皢缁撴灉鍙戝竷缁?/span> UI绾跨▼锛屼笉闇€瑕佷綘鑷繁澶勭悊绾跨▼鎴栬€?/span> handler銆?/span>
涓轰簡浣跨敤浠栵紝浣犻渶瑕佺户鎵?/span> AsyncTask骞朵笖瀹炵幇浠栫殑 doInBackground()鍥炶皟鏂规硶锛屼粬鍦ㄤ竴涓悗鍙扮嚎绋嬫睜涓繍琛屻€備负浜嗘洿鏂颁綘鐨?/span> UI锛屼綘闇€瑕佸疄鐜?/span> onPostExecute()鏂规硶锛屼粬浼犻€掓潵鑷?/span> doInBackgroud()鐨勭粨鏋滀笖鍦?/span> UI绾跨▼涓繍琛屻€傛墍浠ヤ綘鍙互瀹夊叏鐨勬洿鏂颁綘鐨?/span> UI銆備綘鍙互鍦?/span> UI绾跨▼閫氳繃 execute()鏉ヨ繍琛屼綘鐨勪换鍔°€?/span>
渚嬪锛屼綘鍙互浣跨敤 AsyncTask鐨勬柟娉曟潵瀹炵幇浠ヤ笂鐨勪唬鐮侊紝
鐜板湪鐨?/span>UI鏄畨鍏ㄧ殑锛屽苟涓斾唬鐮佷篃鏇寸畝鍗曚簡锛屽洜涓轰粬灏嗗摢閮ㄥ垎搴旇浜ょ敱宸ヤ綔绾跨嚎绋嬪仛鍝儴鍒嗕氦鐢?/span>UI绾跨▼鍋氱殑宸ヤ綔鍒嗗紑浜嗐€?/span>
AsyncTask濡備綍宸ヤ綔鐨勬杩板涓嬶細
浣犲彲浠?span class="shorttext">浣跨敤娉?/span> 鍨?/span> 鎸囧畾鍙傛暟鐨勭被鍨嬶紝杩涘害鍊肩殑绫诲瀷锛屽拰浠诲姟鐨勬渶缁堝€?/span>
doInBackgroud() 鏂规硶鑷姩鍦ㄥ伐浣滆€呯嚎绋嬩腑鎵ц銆?/span>
onPreExecute() 锛?/span> onPostExecute() 锛?/span> onProgressUpdate() 鍦?/span> UI 绾跨▼涓婵€娲汇€?/span>
doInBackground() 鐨勫€艰鍙戝埌 onPostExecuted() 涓€?/span>
浠讳綍鏃跺€欎綘閮藉彲浠ュ湪 doInBackground() 涓皟鐢?/span> publishProgress() 鍘绘墽琛?/span> UI 绾跨▼鐨?/span> onProgressUpdate() 鏂规硶銆?/span>
浠讳綍鏃跺€欎綘鍙互浠庝换浣曠嚎绋嬪彇娑堜换鍔°€?/span>
绾跨▼瀹夊叏鐨勬柟娉?/span> (Thread-safe methods)
鍦ㄤ竴浜涙儏鍐典笅锛屼綘瀹炵幇鐨勬柟娉曞彲鑳戒細琚涓嚎绋嬭皟鐢紝鍥犳浠栧簲璇ヨ璁′负绾跨▼瀹夊叏鐨勩€?/span>
杩欐槸鐪熷疄鐨勶紝涓€浜涙柟娉曞彲鑳戒細琚繙绋嬭皟鐢紝姣斿缁戝畾鏈嶅姟 (bound service)鐨勪竴浜涙柟娉曘€傚綋涓€涓柟娉?/span> (鍦ㄤ竴涓?/span> IBinder涓疄鐜扮殑 )鐨勮皟鐢ㄥ彂璧蜂簬鍚屼竴涓繘绋?/span> (IBinder姝h繍琛岀殑 )锛岃繖涓柟娉曞湪璋冪敤鑰呯嚎绋嬩腑鎵ц銆傜劧鑰岋紝褰撹繖涓皟鐢ㄥ彂璧峰彟涓€涓繘绋嬶紝杩欎釜鏂规硶鎵ц鐨勭嚎绋嬫槸锛岀郴缁熷湪鍚屼竴杩涚▼涓綔涓?/span> IBinder缁存姢鐨勭嚎绋嬫睜涓€夊嚭鐨勶紝 (浠栦笉鍦ㄨ繖涓繘绋嬬殑 UI绾跨▼涓墽琛?/span> )銆備緥濡傦紝閴翠簬涓€涓湇鍔$殑 onBind()鏂规硶鍙兘浠庢湇鍔℃墍鍦ㄧ殑杩涚▼璋冪敤锛屽湪 onBind()杩斿洖鐨勫璞$殑鏂规硶 (渚嬪锛屼竴涓瓙绫诲疄鐜颁簡 RPC鐨勬柟娉?/span> )搴旇浠庣嚎绋嬫睜涓皟鐢ㄣ€傚洜涓轰竴涓湇鍔″彲浠ユ湁澶氫釜瀹㈡埛绔紝澶氫釜绾跨▼姹犵殑绾跨▼鍙兘鍚屾椂璁块棶鍚屼竴涓?/span> IBinder鏂规硶銆傚洜姝わ紝 IBinder鏂规硶蹇呴』瀹炵幇涓虹嚎绋嬪畨鍏ㄧ殑銆?/span>
绫讳技鐨勶紝 content provider鍙兘鎺ュ彈浠庡埆鐨勮繘绋嬪彂鍚暟鎹姹傘€傚敖绠?/span> ContentResolver涓?/span> ContentProvider绫婚殣钘忎簡杩涚▼闂撮€氫俊濡備綍绠$悊鐨勭粏鑺傦紝 ContentProvider鏂规硶鍝嶅簲杩欎簺璇锋眰锛屽畠鐨勬柟娉曟湁锛?/span> query()锛?/span> insert()锛?/span> delete()锛?/span> udpate()锛屽拰 getType()锛岃繖浜涢兘浼氬湪 ContentProvider杩涚▼鐨勭嚎绋嬫睜涓璋冪敤锛岃€屼笉鏄繘绋嬬殑 UI绾跨▼銆傜敱浜庤繖浜涙柟娉曞彲鑳借澶氫釜绾跨▼鍚屾椂璋冪敤锛屼粬浠篃闇€瑕佸疄鐜颁负绾跨▼瀹夊叏鐨勩€?/span>
杩涚▼闂撮€氫俊 (Interprocess Communication)
Android 浣跨敤杩滅▼绋嬪紡璋冪敤 (RPC)鎻愪緵浜嗕竴涓繘绋嬮棿閫氫俊 (IPC)锛岄€氳繃杩欑鏂瑰紡鍙互璋冪敤鍒殑 activity鎴栬€呭埆鐨勫簲鐢ㄧ粍浠讹紝浣嗘槸杩滅▼鐨?/span> (鍦ㄥ埆鐨勮繘绋嬩腑鐨?/span> ) 鎵ц锛屾墍鏈夌殑缁撴灉灏嗚繑鍥炵粰璋冪敤鑰呫€傝繖闇€瑕佸垎瑙d竴涓柟娉曡皟鐢ㄥ拰浠栫殑鏁版嵁鍒颁竴涓搷浣滅郴缁熷彲浠ョ悊瑙g殑绾у埆锛屽皢浠栦粠鏈繘绋嬪拰鍦板潃绌洪棿杞€掔粰杩滅▼鐨勮繘绋嬪拰鍦板潃绌洪棿锛岀劧鍚庡湪閭i噷閲嶆柊缁勮鍜屾墽琛岃繖涓皟鐢ㄣ€傜劧鍚庤繑鍥炲€兼寜鐩稿弽鐨勬柟鍚戜紶閫掋€?/span> Android鎻愪緵浜嗘墍鏈夌殑鏉ュ畬鎴愯繖浜?/span> IPC浼犺緭鐨勪唬鐮侊紝鎵€浠ヤ綘鍙渶鍏虫敞浜庡畾涔夊拰瀹炵幇 RPC鐨勬帴鍙c€?/span>
更多相关文章
- 代码中设置drawableleft
- android 3.0 隐藏 系统标题栏
- Android开发中activity切换动画的实现
- Android(安卓)学习 笔记_05. 文件下载
- Android中直播视频技术探究之—摄像头Camera视频源数据采集解析
- 技术博客汇总
- android 2.3 wifi (一)
- AndRoid Notification的清空和修改
- Android中的Chronometer