Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
Google¡¶AndroidÐÔÄÜÓÅ»¯¡·Ñ§Ï°±Ê¼Ç£¨ÉÏ£©
 
×÷Õߣººú¿­ À´Ô´£ºCSDN ·¢²¼ÓÚ£º 2015-05-07
  2095  次浏览      27
 

äÖȾƪ

Google½üÆÚÔÚUdacityÉÏ·¢²¼ÁËAndroidÐÔÄÜÓÅ»¯µÄÔÚÏ߿γ̣¬·Ö±ð´ÓäÖȾ£¬ÔËËãÓëÄڴ棬µçÁ¿¼¸¸ö·½Ãæ½éÉÜÁËÈçºÎÈ¥ÓÅ»¯ÐÔÄÜ£¬ÕâЩ¿Î³ÌÊÇGoogle֮ǰÔÚYoutubeÉÏ·¢²¼µÄAndroidÐÔÄÜÓÅ»¯µä·¶×¨Ìâ¿Î³ÌµÄϸ»¯Óë²¹³ä¡£

1) Why Rendering Performance Matters

ÏÖÔÚÓв»ÉÙAppΪÁË´ïµ½ºÜ»ªÀöµÄÊÓ¾õЧ¹û£¬»áÐèÒªÔÚ½çÃæÉϲãµþºÜ¶àµÄÊÓͼ×é¼þ£¬µ«ÊÇÕâ»áºÜÈÝÒ×ÒýÆðÐÔÄÜÎÊÌâ¡£ÈçºÎƽºâDesignÓëPerformance¾ÍºÜÐèÒªÖÇ»ÛÁË¡£

2) Defining ¡®Jank¡¯

´ó¶àÊýÊÖ»úµÄÆÁĻˢÐÂÆµÂÊÊÇ60hz£¬Èç¹ûÔÚ1000/60=16.67msÄÚûÓа취°ÑÕâÒ»Ö¡µÄÈÎÎñÖ´ÐÐÍê±Ï£¬¾Í»á·¢Éú¶ªÖ¡µÄÏÖÏó¡£¶ªÖ¡Ô½¶à£¬Óû§¸ÐÊܵ½µÄ¿¨¶ÙÇé¿ö¾ÍÔ½ÑÏÖØ¡£

3) Rendering Pipeline: Common Problems

äÖȾ²Ù×÷ͨ³£ÒÀÀµÓÚÁ½¸öºËÐÄ×é¼þ£ºCPUÓëGPU¡£CPU¸ºÔð°üÀ¨Measure£¬Layout£¬Record£¬ExecuteµÄ¼ÆËã²Ù×÷£¬GPU¸ºÔðRasterization(Õ¤¸ñ»¯)²Ù×÷¡£CPUͨ³£´æÔÚµÄÎÊÌâµÄÔ­ÒòÊÇ´æÔڷDZØÐèµÄÊÓͼ×é¼þ£¬Ëü²»½ö½ö»á´øÀ´Öظ´µÄ¼ÆËã²Ù×÷£¬¶øÇÒ»¹»áÕ¼ÓöîÍâµÄGPU×ÊÔ´¡£

4) Android UI and the GPU

Á˽âAndroidÊÇÈçºÎÀûÓÃGPU½øÐл­ÃæäÖȾÓÐÖúÓÚÎÒÃǸüºÃµÄÀí½âÐÔÄÜÎÊÌâ¡£Ò»¸öºÜÖ±½ÓµÄÎÊÌâÊÇ£ºactivityµÄ»­ÃæÊÇÈçºÎ»æÖƵ½ÆÁÄ»Éϵģ¿ÄÇЩ¸´ÔÓµÄXML²¼¾ÖÎļþÓÖÊÇÈçºÎÄܹ»±»Ê¶±ð²¢»æÖƳöÀ´µÄ£¿

ResterizationÕ¤¸ñ»¯ÊÇ»æÖÆÄÇЩButton£¬Shape£¬Path£¬String£¬BitmapµÈ×é¼þ×î»ù´¡µÄ²Ù×÷¡£Ëü°ÑÄÇЩ×é¼þ²ð·Öµ½²»Í¬µÄÏñËØÉϽøÐÐÏÔʾ¡£ÕâÊÇÒ»¸öºÜ·ÑʱµÄ²Ù×÷£¬GPUµÄÒýÈë¾ÍÊÇΪÁ˼ӿìÕ¤¸ñ»¯µÄ²Ù×÷¡£

CPU¸ºÔð°ÑUI×é¼þ¼ÆËã³ÉPolygons£¬TextureÎÆÀí£¬È»ºó½»¸øGPU½øÐÐÕ¤¸ñ»¯äÖȾ¡£

È»¶øÃ¿´Î´ÓCPU×ªÒÆµ½GPUÊÇÒ»¼þºÜÂé·³µÄÊÂÇ飬ËùÐÒµÄÊÇOpenGL ES¿ÉÒÔ°ÑÄÇЩÐèÒªäÖȾµÄÎÆÀíHoldÔÚGPU MemoryÀïÃæ£¬ÔÚÏ´ÎÐèÒªäÖȾµÄʱºòÖ±½Ó½øÐвÙ×÷¡£ËùÒÔÈç¹ûÄã¸üÐÂÁËGPUËùholdסµÄÎÆÀíÄÚÈÝ£¬ÄÇô֮ǰ±£´æµÄ״̬¾Í¶ªÊ§ÁË¡£

ÔÚAndroidÀïÃæÄÇЩÓÉÖ÷ÌâËùÌṩµÄ×ÊÔ´£¬ÀýÈçBitmaps£¬Drawables¶¼ÊÇÒ»Æð´ò°üµ½Í³Ò»µÄTextureÎÆÀíµ±ÖУ¬È»ºóÔÙ´«µÝµ½GPUÀïÃæ£¬ÕâÒâζ×Åÿ´ÎÄãÐèҪʹÓÃÕâЩ×ÊÔ´µÄʱºò£¬¶¼ÊÇÖ±½Ó´ÓÎÆÀíÀïÃæ½øÐлñÈ¡äÖȾµÄ¡£µ±È»Ëæ×ÅUI×é¼þµÄÔ½À´Ô½·á¸»£¬ÓÐÁ˸ü¶àÑݱäµÄÐÎ̬¡£ÀýÈçÏÔʾͼƬµÄʱºò£¬ÐèÒªÏȾ­¹ýCPUµÄ¼ÆËã¼ÓÔØµ½ÄÚ´æÖУ¬È»ºó´«µÝ¸øGPU½øÐÐäÖȾ¡£ÎÄ×ÖµÄÏÔʾ±È½Ï¸´ÔÓ£¬ÐèÒªÏȾ­¹ýCPU»»Ëã³ÉÎÆÀí£¬È»ºó½»¸øGPU½øÐÐäÖȾ£¬·µ»Øµ½CPU»æÖƵ¥¸ö×Ö·ûµÄʱºò£¬ÔÙÖØÐÂÒýÓþ­¹ýGPUäÖȾµÄÄÚÈÝ¡£¶¯»­Ôò´æÔÚÒ»¸ö¸ü¼Ó¸´ÔӵIJÙ×÷Á÷³Ì¡£

ΪÁËÄܹ»Ê¹µÃAppÁ÷³©£¬ÎÒÃÇÐèÒªÔÚÿ֡16msÒÔÄÚ´¦ÀíÍêËùÓеÄCPUÓëGPUµÄ¼ÆË㣬»æÖÆ£¬äÖȾµÈµÈ²Ù×÷¡£

5) GPU Problem: Overdraw

Overdraw(¹ý¶È»æÖÆ)ÃèÊöµÄÊÇÆÁÄ»ÉϵÄij¸öÏñËØÔÚͬһ֡µÄʱ¼äÄÚ±»»æÖÆÁ˶à´Î¡£ÔÚ¶à²ã´ÎÖØµþµÄUI½á¹¹ÀïÃæ£¬Èç¹û²»¿É¼ûµÄUIÒ²ÔÚ×ö»æÖƵIJÙ×÷£¬»áµ¼ÖÂijЩÏñËØÇøÓò±»»æÖÆÁ˶à´Î¡£ÕâÑù¾Í»áÀË·Ñ´óÁ¿µÄCPUÒÔ¼°GPU×ÊÔ´¡£

µ±Éè¼ÆÉÏ×·Çó¸ü»ªÀöµÄÊÓ¾õЧ¹ûµÄʱºò£¬ÎÒÃǾÍÈÝÒ×ÏÝÈë²ÉÓø´ÔӵĶà²ã´ÎÖØµþÊÓͼÀ´ÊµÏÖÕâÖÖÊÓ¾õЧ¹ûµÄ¹ÖȦ¡£ÕâºÜÈÝÒ×µ¼Ö´óÁ¿µÄÐÔÄÜÎÊÌ⣬ΪÁË»ñµÃ×î¼ÑµÄÐÔÄÜ£¬ÎÒÃDZØÐ뾡Á¿¼õÉÙOverdrawµÄÇé¿ö·¢Éú¡£

ÐÒÔ˵ÄÊÇ£¬ÎÒÃÇ¿ÉÒÔͨ¹ýÊÖ»úÉèÖÃÀïÃæµÄ¿ª·¢ÕßÑ¡Ï´ò¿ªShow GPU OverdrawµÄÑ¡Ï¹Û²ìUIÉϵÄOverdrawÇé¿ö¡£

À¶É«¡¢µ­ÂÌ¡¢µ­ºì¡¢Éîºì´ú±íÁË4ÖÖ²»Í¬³Ì¶ÈµÄOverdrawÇé¿ö£¬ÎÒÃǵÄÄ¿±ê¾ÍÊǾ¡Á¿¼õÉÙºìÉ«Overdraw£¬¿´µ½¸ü¶àµÄÀ¶É«ÇøÓò¡£

6) Visualize and Fix Overdraw - Quiz & Solution

ÕâÀï¾ÙÁËÒ»¸öÀý×Ó£¬Í¨¹ýXMLÎļþ¿ÉÒÔ¿´µ½Óкü¸´¦·Ç±ØÐèµÄbackground¡£Í¨¹ý°ÑXMLÖзDZØÐèµÄbackgroundÒÆ³ýÖ®ºó£¬¿ÉÒÔÏÔÖø¼õÉÙ²¼¾ÖµÄ¹ý¶È»æÖÆ¡£ÆäÖÐÒ»¸ö±È½ÏÓÐÒâ˼µÄµØ·½ÊÇ£ºÕë¶ÔListViewÖеÄAvatar ImageViewµÄÉèÖã¬ÔÚgetViewµÄ´úÂëÀïÃæ£¬ÅжÏÊÇ·ñ»ñÈ¡µ½¶ÔÓ¦µÄBitmap£¬ÔÚ»ñÈ¡µ½AvatarµÄͼÏñÖ®ºó£¬°ÑImageViewµÄBackgroundÉèÖÃΪTransparent£¬Ö»Óе±Í¼ÏñûÓлñÈ¡µ½µÄʱºò²ÅÉèÖöÔÓ¦µÄBackgroundռλͼƬ£¬ÕâÑù¿ÉÒÔ±ÜÃâÒòΪ¸øAvatarÉèÖñ³¾°Í¼¶øµ¼ÖµĹý¶ÈäÖȾ¡£

×ܽáһϣ¬ÓÅ»¯²½ÖèÈçÏ£º

1.ÒÆ³ýWindowĬÈϵÄBackground

2.ÒÆ³ýXML²¼¾ÖÎļþÖзDZØÐèµÄBackground

3.°´ÐèÏÔʾռλ±³¾°Í¼Æ¬

7) ClipRect & QuickReject

Ç°ÃæÓÐÌáµ½¹ý£¬¶Ô²»¿É¼ûµÄUI×é¼þ½øÐлæÖƸüлᵼÖÂOverdraw¡£ÀýÈçNav Drawer´ÓǰÖÿɼûµÄActivity»¬³öÖ®ºó£¬Èç¹û»¹¼ÌÐø»æÖÆÄÇЩÔÚNav DrawerÀïÃæ²»¿É¼ûµÄUI×é¼þ£¬Õâ¾Íµ¼ÖÂÁËOverdraw¡£ÎªÁ˽â¾öÕâ¸öÎÊÌ⣬Androidϵͳ»áͨ¹ý±ÜÃâ»æÖÆÄÇЩÍêÈ«²»¿É¼ûµÄ×é¼þÀ´¾¡Á¿¼õÉÙOverdraw¡£ÄÇЩNav DrawerÀïÃæ²»¿É¼ûµÄView¾Í²»»á±»Ö´ÐÐÀË·Ñ×ÊÔ´¡£

µ«ÊDz»ÐÒµÄÊÇ£¬¶ÔÓÚÄÇЩ¹ýÓÚ¸´ÔÓµÄ×Ô¶¨ÒåµÄView(ͨ³£ÖØÐ´ÁËonDraw·½·¨)£¬AndroidϵͳÎÞ·¨¼ì²âÔÚonDrawÀïÃæ¾ßÌå»áÖ´ÐÐʲô²Ù×÷£¬ÏµÍ³ÎÞ·¨¼à¿Ø²¢×Ô¶¯ÓÅ»¯£¬Ò²¾ÍÎÞ·¨±ÜÃâOverdrawÁË¡£µ«ÊÇÎÒÃÇ¿ÉÒÔͨ¹ýcanvas.clipRect()À´°ïÖúϵͳʶ±ðÄÇЩ¿É¼ûµÄÇøÓò¡£Õâ¸ö·½·¨¿ÉÒÔÖ¸¶¨Ò»¿é¾ØÐÎÇøÓò£¬Ö»ÓÐÔÚÕâ¸öÇøÓòÄڲŻᱻ»æÖÆ£¬ÆäËûµÄÇøÓò»á±»ºöÊÓ¡£Õâ¸öAPI¿ÉÒԺܺõİïÖúÄÇЩÓжà×éÖØµþ×é¼þµÄ×Ô¶¨ÒåViewÀ´¿ØÖÆÏÔʾµÄÇøÓò¡£Í¬Ê±clipRect·½·¨»¹¿ÉÒÔ°ïÖú½ÚÔ¼CPUÓëGPU×ÊÔ´£¬ÔÚclipRectÇøÓòÖ®ÍâµÄ»æÖÆÖ¸Áî¶¼²»»á±»Ö´ÐУ¬ÄÇЩ²¿·ÖÄÚÈÝÔÚ¾ØÐÎÇøÓòÄÚµÄ×é¼þ£¬ÈÔÈ»»áµÃµ½»æÖÆ¡£

³ýÁËclipRect·½·¨Ö®Í⣬ÎÒÃÇ»¹¿ÉÒÔʹÓÃcanvas.quickreject()À´ÅжÏÊÇ·ñûºÍij¸ö¾ØÐÎÏཻ£¬´Ó¶øÌø¹ýÄÇЩ·Ç¾ØÐÎÇøÓòÄڵĻæÖƲÙ×÷¡£

8) Apply clipRect and quickReject - Quiz & Solution

ÉÏÃæµÄʾÀýͼÖÐÏÔʾÁËÒ»¸ö×Ô¶¨ÒåµÄView£¬Ö÷ҪЧ¹ûÊdzÊÏÖ¶àÕÅÖØµþµÄ¿¨Æ¬¡£Õâ¸öViewµÄonDraw·½·¨ÈçÏÂͼËùʾ£º

´ò¿ª¿ª·¢ÕßÑ¡ÏîÖеÄÏÔʾ¹ý¶ÈäÖȾ£¬¿ÉÒÔ¿´µ½ÎÒÃÇÕâ¸ö×Ô¶¨ÒåµÄView²¿·ÖÇøÓò´æÔÚ׏ý¶È»æÖÆ¡£ÄÇôÊÇʲôԭÒòµ¼Ö¹ý¶È»æÖƵÄÄØ£¿

9) Fixing Overdraw with Canvas API

ÏÂÃæµÄ´úÂëÏÔʾÁËÈçºÎͨ¹ýclipRectÀ´½â¾ö×Ô¶¨ÒåViewµÄ¹ý¶È»æÖÆ£¬Ìá¸ß×Ô¶¨ÒåViewµÄ»æÖÆÐÔÄÜ£º

ÏÂÃæÊÇÓÅ»¯¹ýºóµÄЧ¹û£º

10) Layouts, Invalidations and Perf

AndroidÐèÒª°ÑXML²¼¾ÖÎļþת»»³ÉGPUÄܹ»Ê¶±ð²¢»æÖƵĶÔÏó¡£Õâ¸ö²Ù×÷ÊÇÔÚDisplayListµÄ°ïÖúÏÂÍê³ÉµÄ¡£DisplayList³ÖÓÐËùÓн«Òª½»¸øGPU»æÖƵ½ÆÁÄ»ÉϵÄÊý¾ÝÐÅÏ¢¡£

ÔÚij¸öViewµÚÒ»´ÎÐèÒª±»äÖȾʱ£¬Display List»áÒò´Ë±»´´½¨£¬µ±Õâ¸öViewÒªÏÔʾµ½ÆÁÄ»ÉÏʱ£¬ÎÒÃÇ»áÖ´ÐÐGPUµÄ»æÖÆÖ¸ÁîÀ´½øÐÐäÖȾ¡£

Èç¹ûViewµÄPropertyÊôÐÔ·¢ÉúÁ˸ı䣨ÀýÈçÒÆ¶¯Î»Öã©£¬ÎÒÃǾͽö½öÐèÒªExecute Display List¾Í¹»ÁË¡£

È»¶øÈç¹ûÄãÐÞ¸ÄÁËViewÖеÄijЩ¿É¼û×é¼þµÄÄÚÈÝ£¬ÄÇô֮ǰµÄDisplayList¾ÍÎÞ·¨¼ÌÐøÊ¹ÓÃÁË£¬ÎÒÃÇÐèÒªÖØÐ´´½¨Ò»¸öDisplayList²¢ÖØÐÂÖ´ÐÐäÖȾָÁî¸üе½ÆÁÄ»ÉÏ¡£

Çë×¢Ò⣺ÈκÎʱºòViewÖеĻæÖÆÄÚÈÝ·¢Éú±ä»¯Ê±£¬¶¼»áÐèÒªÖØÐ´´½¨DisplayList£¬äÖȾDisplayList£¬¸üе½ÆÁÄ»ÉϵÈһϵÁвÙ×÷¡£Õâ¸öÁ÷³ÌµÄ±íÏÖÐÔÄÜÈ¡¾öÓÚÄãµÄViewµÄ¸´Ôӳ̶ȣ¬ViewµÄ״̬±ä»¯ÒÔ¼°äÖȾ¹ÜµÀµÄÖ´ÐÐÐÔÄÜ¡£¾Ù¸öÀý×Ó£¬¼ÙÉèij¸öButtonµÄ´óСÐèÒªÔö´óµ½Ä¿Ç°µÄÁ½±¶£¬ÔÚÔö´óButton´óС֮ǰ£¬ÐèҪͨ¹ý¸¸ViewÖØÐ¼ÆËã²¢°Ú·ÅÆäËû×ÓViewµÄλÖá£ÐÞ¸ÄViewµÄ´óС»á´¥·¢Õû¸öHierarcyViewµÄÖØÐ¼ÆËã´óСµÄ²Ù×÷¡£Èç¹ûÊÇÐÞ¸ÄViewµÄλÖÃÔò»á´¥·¢HierarchViewÖØÐ¼ÆËãÆäËûViewµÄλÖá£Èç¹û²¼¾ÖºÜ¸´ÔÓ£¬Õâ¾Í»áºÜÈÝÒ×µ¼ÖÂÑÏÖØµÄÐÔÄÜÎÊÌâ¡£

11) Hierarchy Viewer: Walkthrough

Hierarchy Viewer¿ÉÒÔºÜÖ±½ÓµÄ³ÊÏÖ²¼¾ÖµÄ²ã´Î¹ØÏµ£¬ÊÓͼ×é¼þµÄ¸÷ÖÖÊôÐÔ¡£ ÎÒÃÇ¿ÉÒÔͨ¹ýºì£¬»Æ£¬ÂÌÈýÖÖ²»Í¬µÄÑÕÉ«À´Çø·Ö²¼¾ÖµÄMeasure£¬Layout£¬ExecutiveµÄÏà¶ÔÐÔÄܱíÏÖÈçºÎ¡£

12) Nested Hierarchies and Performance

ÌáÉý²¼¾ÖÐÔÄܵĹؼüµãÊǾ¡Á¿±£³Ö²¼¾Ö²ã¼¶µÄ±âƽ»¯£¬±ÜÃâ³öÏÖÖØ¸´µÄǶÌײ¼¾Ö¡£ÀýÈçÏÂÃæµÄÀý×Ó£¬ÓÐ2ÐÐÏÔʾÏàͬÄÚÈݵÄÊÓͼ£¬·Ö±ðÓÃÁ½ÖÖ²»Í¬µÄд·¨À´ÊµÏÖ£¬ËûÃÇÓÐ×Ų»Í¬µÄ²ã¼¶¡£

ÏÂͼÏÔʾÁËʹÓÃ2ÖÖ²»Í¬µÄд·¨£¬ÔÚHierarchy ViewerÉϳÊÏÖ³öÀ´µÄÐÔÄܲâÊÔ²îÒ죺

13) Optimizing Your Layout

ÏÂͼ¾ÙÀýÑÝʾÁËÈçºÎÓÅ»¯ListItemµÄ²¼¾Ö£¬Í¨¹ýRelativeLayoutÌæ´ú¾É·½°¸ÖеÄǶÌ×LinearLayoutÀ´ÓÅ»¯²¼¾Ö¡£

ÔËËãÆª

1) Intro to Compute and Memory Problems

AndroidÖеÄJava´úÂë»áÐèÒª¾­¹ý±àÒëÓÅ»¯ÔÙÖ´ÐеĹý³Ì¡£´úÂëµÄ²»Í¬Ð´·¨»áÓ°Ïìµ½Java±àÒëÆ÷µÄÓÅ»¯Ð§ÂÊ¡£ÀýÈçforÑ­»·µÄ²»Í¬Ð´·¨¾Í»á¶Ô±àÒëÆ÷ÓÅ»¯Õâ¶Î´úÂë²úÉú²»Í¬µÄЧÂÊ£¬µ±³ÌÐòÖаüº¬´óÁ¿ÕâÖÖ¿ÉÓÅ»¯µÄ´úÂëµÄʱºò£¬ÔËËãÐÔÄܾͻá³öÏÖÎÊÌâ¡£ÏëÒªÖªµÀÈçºÎÓÅ»¯´úÂëµÄÔËËãÐÔÄܾÍÐèÒªÖªµÀ´úÂëÔÚÓ²¼þ²ãµÄÖ´ÐвîÒì¡£

2) Slow Function Performance

Èç¹ûÄãдÁËÒ»¶Î´úÂ룬ËüµÄÖ´ÐÐЧÂʱÈÏëÏóÖеÄÒª²îºÜ¶à¡£ÎÒÃÇÐèÒªÖªµÀÓÐÄÄЩÒòËØÓпÉÄÜÓ°Ïìµ½Õâ¶Î´úÂëµÄÖ´ÐÐЧÂÊ¡£ÀýÈ磺±È½ÏÁ½¸öfloatÊýÖµ´óСµÄÖ´ÐÐʱ¼äÊÇintÊýÖµµÄ4±¶×óÓÒ¡£ÕâÊÇÒòΪCPUµÄÔËËã¼Ü¹¹µ¼Öµģ¬ÈçÏÂͼËùʾ£º

ËäÈ»ÏÖ´úµÄCPU¼Ü¹¹µÃµ½Á˺ܴóµÄÌáÉý£¬Ò²Ðí²¢²»´æÔÚÉÏÃæËùʾµÄÄÇô´óµÄ²îÒ죬µ«ÊÇÕâ¸öÀý×Ó˵Ã÷ÁË´úÂëд·¨ÉϵIJîÒì»á¶ÔÔËËãÐÔÄܲúÉúºÜ´óµÄÓ°Ïì¡£

ͨ³£À´ËµÓÐÁ½ÀàÔËÐÐЧÂʲîµÄÇé¿ö£ºµÚ1ÖÖÊÇÏà¶ÔÖ´ÐÐʱ¼ä³¤µÄ·½·¨£¬ÎÒÃÇ¿ÉÒÔºÜÇáËɵÄÕÒµ½ÕâЩ·½·¨²¢×öÒ»¶¨µÄÓÅ»¯¡£µÚ2ÖÖÊÇÖ´ÐÐʱ¼ä¶Ì£¬µ«ÊÇÖ´ÐÐÆµ´ÎºÜ¸ßµÄ·½·¨£¬ÒòΪִÐдÎÊý¶à£¬ÀÛ»ýЧӦϾͻá¶ÔÐÔÄܲúÉúºÜ´óµÄÓ°Ïì¡£

ÐÞ¸´ÕâЩϸ½ÚЧÂÊÎÊÌ⣬ÐèҪʹÓÃAndroid SDKÌṩµÄ¹¤¾ß£¬½øÐÐ×ÐϸµÄ²âÁ¿£¬È»ºóÔÙ½øÐÐ΢µ÷ÐÞ¸´¡£

3) Traceview Walkthrough

ͨ¹ýAndroid Studio´ò¿ªÀïÃæµÄAndroid Device Monitor£¬Çл»µ½DDMS´°¿Ú£¬µã»÷×ó±ßÀ¸ÉÏÃæÏëÒª¸ú×ٵĽø³Ì£¬ÔÙµã»÷ÉÏÃæµÄStart Method TracingµÄ°´Å¥£¬ÈçÏÂͼËùʾ£º

Æô¶¯¸ú×ÙÖ®ºó£¬ÔٲٿØapp£¬×öһЩÄãÏëÒª¸ú×ÙµÄʼþ£¬ÀýÈ绬¶¯listview£¬µã»÷ijЩÊÓͼ½øÈëÁíÍâÒ»¸öÒ³ÃæµÈµÈ¡£²Ù×÷ÍêÖ®ºó£¬»Øµ½Android Device Monitor£¬Ôٴεã»÷Method TracingµÄ°´Å¥Í£Ö¹¸ú×Ù¡£´Ëʱ¹¤¾ß»áΪ¸Õ²ÅµÄ²Ù×÷Éú³ÉTraceViewµÄÏêϸÊÓͼ¡£

¹ØÓÚTraceViewÖÐÏêϸÊý¾ÝÈçºÎ²é¿´£¬ÕâÀï²»Õ¹¿ªÁË£¬ÓкܶàÎÄÕ½éÉܹý¡£

4) Batching and Caching

ΪÁËÌáÉýÔËËãÐÔÄÜ£¬ÕâÀï½éÉÜ2¸ö·Ç³£ÖØÒªµÄ¼¼Êõ£¬BatchingÓëCaching¡£

BatchingÊÇÔÚÕæÕýÖ´ÐÐÔËËã²Ù×÷֮ǰ¶ÔÊý¾Ý½øÐÐÅúÁ¿Ô¤´¦Àí£¬ÀýÈçÄãÐèÒªÓÐÕâÑùÒ»¸ö·½·¨£¬ËüµÄ×÷ÓÃÊDzéÕÒij¸öÖµÊÇ·ñ´æÔÚÓëÓÚÒ»¶ÑÊý¾ÝÖС£¼ÙÉèÒ»¸öǰÌᣬÎÒÃÇ»áÏȶÔÊý¾Ý×öÅÅÐò£¬È»ºóʹÓöþ·Ö²éÕÒ·¨À´ÅжÏÖµÊÇ·ñ´æÔÚ¡£ÎÒÃÇÏÈ¿´µÚÒ»ÖÖÇé¿ö£¬ÏÂͼÖдæÔÚ×Ŷà´ÎÖØ¸´µÄÅÅÐò²Ù×÷¡£

ÔÚÉÏÃæµÄÄÇÖÖд·¨Ï£¬Èç¹ûÊý¾ÝµÄÁ¿¼¶²¢²»´óµÄ»°£¬Ó¦¸Ã»¹¿ÉÒÔ½ÓÊÜ£¬¿ÉÊÇÈç¹ûÊý¾Ý¼¯·Ç³£´ó£¬¾Í»áÓÐÑÏÖØµÄЧÂÊÎÊÌâ¡£ÄÇôÎÒÃÇ¿´Ï¸ĽøµÄд·¨£¬°ÑÅÅÐòµÄ²Ù×÷´ò°ü°ó¶¨Ö»Ö´ÐÐÒ»´Î£º

ÉÏÃæ¾ÍÊÇBatchingµÄÒ»ÖÖʾÀý£º°ÑÖØ¸´µÄ²Ù×÷Áà³öÀ´£¬´ò°üÖ»Ö´ÐÐÒ»´Î¡£

CachingµÄÀíÄîºÜÈÝÒ×Àí½â£¬ÔÚºÜ¶à·½Ãæ¶¼ÓÐÌåÏÖ£¬ÏÂÃæ¾ÙÒ»¸öforÑ­»·µÄÀý×Ó£º

ÉÏÃæÕâ2ÖÖ»ù´¡¼¼Çɷdz£ÊµÓ㬻ý¼«Ç¡µ±µÄʹÓÃÄܹ»ÏÔÖøÌáÉýÔËËãÐÔÄÜ¡£

5) Blocking the UI Thread

ÌáÉý´úÂëµÄÔËËãЧÂÊÊǸÄÉÆÐÔÄܵÄÒ»·½Ã棬ÈôúÂëÖ´ÐÐÔÚÄĸöÏß³ÌҲͬÑùºÜÖØÒª¡£ÎÒÃǶ¼ÖªµÀAndroidµÄMain ThreadÒ²ÊÇUI Thread£¬ËüÐèÒª³Ðµ£Óû§µÄ´¥ÃþʼþµÄ·´À¡£¬½çÃæÊÓͼµÄäÖȾµÈ²Ù×÷¡£Õâ¾ÍÒâζ×Å£¬ÎÒÃDz»ÄÜÔÚMain ThreadÀïÃæ×öÈκηÇÇáÁ¿¼¶µÄ²Ù×÷£¬ÀàËÆI/O²Ù×÷»á»¨·Ñ´óÁ¿Ê±¼ä£¬ÕâºÜÓпÉÄܻᵼÖ½çÃæäÖȾ·¢Éú¶ªÖ¡µÄÏÖÏó£¬ÉõÖÁÓпÉÄܵ¼ÖÂANR¡£·ÀÖ¹ÕâЩÎÊÌâµÄ½â¾ö°ì·¨¾ÍÊǰÑÄÇЩ¿ÉÄÜÓÐÐÔÄÜÎÊÌâµÄ´úÂëÒÆµ½·ÇUIÏ߳̽øÐвÙ×÷¡£

6) Container Performance

ÁíÍâÒ»¸öÎÒÃÇÐèҪעÒâµÄÔËËãÐÔÄÜÎÊÌâÊÇ»ù´¡Ëã·¨µÄºÏÀíÑ¡Ôñ£¬ÀýÈçðÅÝÅÅÐòÓë¿ìËÙÅÅÐòµÄÐÔÄܲîÒ죺

±ÜÃâÎÒÃÇÖØ¸´ÔìÂÖ×Ó£¬JavaÌṩÁ˺ܶàÏֳɵÄÈÝÆ÷£¬ÀýÈçVector£¬ArrayList£¬LinkedList£¬HashMapµÈµÈ£¬ÔÚAndroidÀïÃæ»¹ÓÐÐÂÔö¼ÓµÄSparseArrayµÈ£¬ÎÒÃÇÐèÒªÁ˽âÕâЩ»ù´¡ÈÝÆ÷µÄÐÔÄܲîÒìÒÔ¼°ÊÊÓó¡¾°¡£ÕâÑù²ÅÄܹ»Ñ¡ÔñºÏÊʵÄÈÝÆ÷£¬´ïµ½×î¼ÑµÄÐÔÄÜ¡£

   
2095 ´Îä¯ÀÀ       27
 
Ïà¹ØÎÄÕÂ

ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖÓë̽ÌÖ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
 
Ïà¹ØÎĵµ

Android_UI¹Ù·½Éè¼Æ½Ì³Ì
ÊÖ»ú¿ª·¢Æ½Ì¨½éÉÜ
androidÅÄÕÕ¼°ÉÏ´«¹¦ÄÜ
Android½²ÒåÖÇÄÜÊÖ»ú¿ª·¢
Ïà¹Ø¿Î³Ì

Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
Androidϵͳ¿ª·¢
AndroidÓ¦Óÿª·¢
ÊÖ»úÈí¼þ²âÊÔ
×îл¼Æ»®
DeepSeekÔÚÈí¼þ²âÊÔÓ¦ÓÃʵ¼ù 4-12[ÔÚÏß]
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢Êµ¼ù 4-19[ÔÚÏß]
UAF¼Ü¹¹ÌåϵÓëʵ¼ù 4-11[±±¾©]
AIÖÇÄÜ»¯Èí¼þ²âÊÔ·½·¨Óëʵ¼ù 5-23[ÉϺ£]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 4-26[±±¾©]
ÒµÎñ¼Ü¹¹Éè¼ÆÓ뽨ģ 4-18[±±¾©]

androidÈË»ú½çÃæÖ¸ÄÏ
AndroidÊÖ»ú¿ª·¢£¨Ò»£©
AndroidÊÖ»ú¿ª·¢£¨¶þ£©
AndroidÊÖ»ú¿ª·¢£¨Èý£©
AndroidÊÖ»ú¿ª·¢£¨ËÄ£©
iPhoneÏûÏ¢ÍÆËÍ»úÖÆÊµÏÖ̽ÌÖ
ÊÖ»úÈí¼þ²âÊÔÓÃÀýÉè¼ÆÊµ¼ù
ÊÖ»ú¿Í»§¶ËUI²âÊÔ·ÖÎö
ÊÖ»úÈí¼þ×Ô¶¯»¯²âÊÔÑо¿±¨¸æ

Android¸ß¼¶Òƶ¯Ó¦ÓóÌÐò
AndroidÓ¦Óÿª·¢
Androidϵͳ¿ª·¢
ÊÖ»úÈí¼þ²âÊÔ
ǶÈëʽÈí¼þ²âÊÔ
AndroidÈí¡¢Ó²¡¢ÔÆÕûºÏ

ÁìÏÈIT¹«Ë¾ android¿ª·¢Æ½Ì¨×î¼Ñʵ¼ù
±±¾© Android¿ª·¢¼¼Êõ½ø½×
ijÐÂÄÜÔ´ÁìÓòÆóÒµ Android¿ª·¢¼¼Êõ
ijº½Ì칫˾ Android¡¢IOSÓ¦ÓÃÈí¼þ¿ª·¢
°¢¶û¿¨ÌØ LinuxÄÚºËÇý¶¯
°¬Ä¬Éú ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ
Î÷ÃÅ×Ó Ç¶Èëʽ¼Ü¹¹Éè¼Æ