AndroidÖн«²¼¾ÖÎļþViewÌí¼ÓÖÁ´°¿Ú¹ý³Ì·Ö - ´ÓsetContentView()̸Æð

ViewManager wm = getWindowManager(); // »ñÈ¡WindowManager¶ÔÏó

wm.addView(mDecor, getWindow().getAttributes()); mWindowAdded = true; }

mDecor.setVisibility(View.VISIBLE); //ʹÆä´¦ÓÚÏÔʾ״¿ö

½ÓÏÂÀ´¾ÍÊÇ£¬ÈçºÎ°ÑÎÒÃÇÒѾ­´´½¨ºÃµÄ´°¿Ú֪ͨ¸øWindowManagerService £¬ÒÔ±ãËüÄܹ»°ÑÕâ¸ö´°¿ÚÏÔʾÔÚÆÁÄ»ÉÏ¡£

¹ØÓÚÕâ·½ÃæÄÚÈÝ´ó¼Ò¿ÉÒÔÈ¥¿´µË·²Æ½ÀÏʦµÄÕâÆª²©¿Í¡¶AndroidÉîÈëdz³öÖ®Surface[1] ¡·

×ܽáÈçÏÂ

×÷ΪAndroidµÄËÄ´óÓ¦ÓÃ×é¼þ£¬ActivityÊÇÓû§ÓëÓ¦ÓóÌÐò½»»¥µÄ´°¿Ú£¬µ«ÊÇËü½ö½ö¸ºÔð½øÐÐÂß¼­´¦Àí£¬ÎÞ·¨ÏÔʾView¡£ActivityÐèÒª½èÖúWindowÏÔʾView£¬µ±ÆäÏÔʾ²¼¾ÖÎļþʱ£¬ÆäÊÓͼ´ØÈçÏÂËùʾ£º

ActivityÏÔʾµÄËùÓв¼¾ÖÓë¿Ø¼þ£¬Æäʵ¶¼ÊÇÔÚWindow£¨WindowµÄ×ÓÀàPhoneWindow£©ÉÏÏÔʾµÄ£¬PhoneWindowÀàÓÐÒ»¸öÄÚ²¿ÀàDecorView£¬ËüÊÇÒ»¸öFrameLayoutµÄ×ÓÀ࣬ËüÊÇActivityÖÐËùÓÐÏÔʾµÄ²¼¾ÖºÍ¿Ø¼þµÄ¸ùView£¬Æä×ÓÊÓͼViewGroupÓÃÓÚÏÔʾActivityÖÐËùÓÐÏÔʾµÄ²¼¾ÖºÍ¿Ø¼þµÄ¸ùView¡£Òò´Ë£¬ActivityµÄËùÓÐÏÔʾ¶¼ÊÇͨ¹ýPhoneWindowʵÏֵģ¬PhoneWindow¾ÍÊǽ«¸ùÊÓ

ͼDecorView½øÐаü×°£¬ÏÔʾ¸÷ÖÖ×ÓÊÓͼ¡£µ÷ÓÃActivityµÄsetTitle·½·¨Æäʵ¾ÍÊǶÔPhoneWindow½øÐвÙ×÷¡£

£¨1£©Activity.setContentVewÆäʵ¾ÍÊÇ»ñÈ¡ActivityµÄPhoneWindow£¬È»ºóµ÷ÓÃPhoneWindowµÄsetContentView¡£

£¨2£©µ÷ÓÃPhoneWindowµÄsetContentView·½·¨£¬Ê×ÏÈÅжÏÊÇ·ñÊǵÚÒ»´Î±»µ÷Óã¬Èç¹ûÊǵϰ£¬Ôò½«mContentParentµÄËùÓÐ×ÓÊÓÍ¼ÒÆ³ö£¬½«²¼¾ÖÎļþ×÷ΪmContentParentµÄ×ÓÊÓͼ½øÐÐʵÀý»¯¡£·ñÔò¾Íµ÷ÓÃinstallDecor´´½¨DecorViewºÍmContentParent£¬´Ë¹ý³Ì¾ÍÊÇʵÀý»¯Ò»¸öDecorView¶ÔÏó£¬È»ºó¸ù¾ÝÏàÓ¦ÅäÖÃÌôѡϵͳµÄÒ»¸ö´°¿Ú²¼¾ÖÎļþ£¬Ìí¼Óµ½Õâ¸ö¸ùÊÓͼÖУ¬Ñ¡ÔñIDΪCONTENT²¼¾ÖÎļþ×÷ΪmContentParent£¬Ê¹ÓÃËüÏÔʾActivityµÄËùÓв¼¾ÖºÍ¿Ø¼þ¡£

£¨3£©µ±AMS×¼±¸ResumeÒ»¸öActivity£¬µ÷ÓÃActivityµÄhandleResumeActivity£¬Ëüµ÷ÓÃActivityThread.makeVisible()£¬½«DecorViewÉèΪVisible¡£

ÁªÏµ¿Í·þ£º779662525#qq.com(#Ìæ»»Îª@) ËÕICP±¸20003344ºÅ-4