当前位置: 首页 > >

AndroidÃæÊÔÌâ½ø³Ìƪ

发布时间:

AndroidÃæÊÔÌâ½ø³Ìƪ£¬Óɱ¾ÈËÕûÀí»ã×Ü£¬ºóÐø½«ÍƳöϵÁÐƪ£¬Èç¹ûϲ»¶Çë³ÖÐø¹Ø×¢ºÍÍƼö¡£


²Ù×÷ϵͳ½ø³ÌºÍÏ̵߳ÄÇø±ð?


1.¼ò¶øÑÔÖ®,Ò»¸ö³ÌÐòÖÁÉÙÓÐÒ»¸ö½ø³Ì,Ò»¸ö½ø³ÌÖÁÉÙÓÐÒ»¸öÏß³Ì.

2.Ï̵߳Ļ®·Ö³ß¶ÈСÓÚ½ø³Ì£¬Ê¹µÃ¶àÏ̳߳ÌÐòµÄ²¢·¢ÐԸߡ£

3.ÁíÍ⣬½ø³ÌÔÚÖ´Ðйý³ÌÖÐÓµÓжÀÁ¢µÄÄÚ´æµ¥Ôª£¬¶ø¶à¸öÏ̹߳²ÏíÄڴ棬´Ó¶ø¼«´óµØÌá¸ßÁ˳ÌÐòµÄÔËÐÐЧÂÊ¡£

4.¶àÏ̵߳ÄÒâÒåÔÚÓÚÒ»¸öÓ¦ÓóÌÐòÖУ¬Óжà¸öÖ´Ðв¿·Ö¿ÉÒÔͬʱִÐС£Óн«¶à¸öÏ߳̿´×ö¶à¸ö¶ÀÁ¢µÄÓ¦Óã¬À´ÊµÏÖ½ø³ÌµÄµ÷¶ÈºÍ¹ÜÀíÒÔ¼°×ÊÔ´·ÖÅä


Handler¡¢LooperÏûÏ¢¶ÓÁÐÄ£ÐÍ£¬¸÷²¿·ÖµÄ×÷ÓÃ?


1.MessageQueue£º¶ÁÈ¡»á×Ô¶¯É¾³ýÏûÏ¢£¬µ¥Á´±íά»¤£¬ÔÚ²åÈëºÍɾ³ýÉÏÓÐÓÅÊÆ¡£ÔÚÆänext()ÖлáÎÞÏÞÑ­»·£¬²»¶ÏÅжÏÊÇ·ñÓÐÏûÏ¢£¬Óоͷµ»ØÕâÌõÏûÏ¢²¢ÒƳý¡£

2.Looper£ºLooper´´½¨µÄʱºò»á´´½¨Ò»¸öMessageQueue£¬µ÷ÓÃloop()·½·¨µÄʱºòÏûϢѭ»·¿ªÊ¼£¬loop()Ò²ÊÇÒ»¸öËÀÑ­»·£¬»á²»¶Ïµ÷ÓÃmessageQueueµÄnext()£¬µ±ÓÐÏûÏ¢¾Í´¦Àí£¬·ñÔò×èÈûÔÚmessageQueueµÄnext()ÖС£µ±LooperµÄquit()±»µ÷ÓõÄʱºò»áµ÷ÓÃmessageQueueµÄquit(),´Ëʱnext()»á·µ»Ønull£¬È»ºóloop()·½·¨Ò²¸ú×ÅÍ˳ö¡£

3.Handler£ºÔÚÖ÷Ï̹߳¹ÔìÒ»¸öHandler£¬È»ºóÔÚÆäËûÏ̵߳÷ÓÃsendMessage(),´ËʱÖ÷Ï̵߳ÄMessageQueueÖлá²åÈëÒ»Ìõmessage£¬È»ºó±»LooperʹÓá£

4.ϵͳµÄÖ÷Ïß³ÌÔÚActivityThreadµÄmain()ΪÈë¿Ú¿ªÆôÖ÷Ị̈߳¬ÆäÖж¨ÒåÁËÄÚ²¿ÀàActivity.H¶¨ÒåÁËһϵÁÐÏûÏ¢ÀàÐÍ£¬°üº¬ËÄ´ó×é¼þµÄÆô¶¯Í£Ö¹¡£

5.MessageQueueºÍLooperÊÇÒ»¶ÔÒ»¹Øϵ£¬HandlerºÍLooperÊǶà¶ÔÒ»


̸̸Äã¶Ôbinder»úÖƵÄÀí½â??


binderÊÇÒ»ÖÖIPC»úÖÆ,½ø³Ì¼äͨѶµÄÒ»ÖÖ¹¤¾ß. Java²ã¿ÉÒÔÀûÓÃaidl¹¤¾ßÀ´ÊµÏÖÏàÓ¦µÄ½Ó¿Ú.


AndroidÖнø³Ì¼äͨÐÅÓÐÄÄЩʵÏÖ·½Ê½£¿?


????ÓÉÓÚÓ¦ÓóÌÐòÖ®¼ä²»Äܹ²ÏíÄÚ´æ¡£ÔÚ²»Í¬Ó¦ÓóÌÐòÖ®¼ä½»»¥Êý¾Ý£¨¿ç½ø³ÌͨѶ£©£¬ÔÚAndroid SDKÖÐÌṩÁË4ÖÖÓÃÓÚ¿ç½ø³ÌͨѶµÄ·½Ê½¡£Õâ4ÖÖ·½Ê½ÕýºÃ¶ÔÓ¦ÓÚandroidϵͳÖÐ4ÖÖÓ¦ÓóÌÐò×é¼þ£ºActivity¡¢Content Provider¡¢BroadcastºÍService:


    Activity¿ÉÒÔ¿ç½ø³Ìµ÷ÓÃÆäËûÓ¦ÓóÌÐòµÄActivity£»

    ContentProvider¿ÉÒÔ¿ç½ø³Ì·ÃÎÊÆäËûÓ¦ÓóÌÐòÖеÄÊý¾Ý£¨ÒÔCursor¶ÔÏóÐÎʽ·µ»Ø£©£¬ µ±È»£¬Ò²¿ÉÒÔ¶ÔÆäËûÓ¦ÓóÌÐòµÄÊý¾Ý½øÐÐÔö¡¢É¾¡¢¸Ä²Ù×÷£»

    Broadcast¿ÉÒÔÏòandroidϵͳÖÐËùÓÐÓ¦ÓóÌÐò·¢Ë͹㲥£¬ ¶øÐèÒª¿ç½ø³ÌͨѶµÄÓ¦ÓóÌÐò¿ÉÒÔ¼àÌýÕâЩ¹ã²¥£»

    ServiceºÍContent ProviderÀàËÆ£¬Ò²¿ÉÒÔ·ÃÎÊÆäËûÓ¦ÓóÌÐòÖеÄÊý¾Ý£¬ µ«²»Í¬µÄÊÇ£¬ContentProvider·µ»ØµÄÊÇCursor¶ÔÏó£¬ ¶øService·µ»ØµÄÊÇJava¶ÔÏó£¬ÕâÖÖ¿ÉÒÔ¿ç½ø³ÌͨѶµÄ·þÎñ½ÐAIDL·þÎñ¡£


androidµÄIPCͨÐÅ·½Ê½£¬Ị̈߳¨½ø³Ì¼ä£©Í¨ÐÅ»úÖÆÓÐÄÄЩ?


1.ipcͨÐÅ·½Ê½£ºbinder¡¢contentprovider¡¢socket

2.²Ù×÷ϵͳ½ø³ÌͨѶ·½Ê½£º¹²ÏíÄÚ´æ¡¢socket¡¢¹ÜµÀ


ÃèÊöÒ»´Î¿ç½ø³ÌͨѶ


1.client¡¢proxy¡¢serviceManager¡¢BinderDriver¡¢impl¡¢service

2.client·¢ÆðÒ»¸öÇëÇóserviceÐÅÏ¢µÄBinderÇëÇóµ½BinderDriverÖУ¬serviceManager·¢ÏÖBinderDiriverÖÐÓÐ×Ô¼ºµÄÇëÇó È»ºó½«clinetÇëÇóµÄserviceµÄÊý¾Ý·µ»Ø¸øclientÕâÑùÍê³ÉÁËÒ»´ÎBinderͨѶ

3.clinet»ñÈ¡µÄserviceÐÅÏ¢¾ÍÊǸÃserviceµÄproxy£¬´Ëʱµ÷ÓÃproxyµÄ·½·¨£¬proxy½«ÇëÇó·¢Ë͵½BinderDriverÖУ¬´ËʱserviceµÄ BinderÏ̳߳ØÑ­»··¢ÏÖÓÐ×Ô¼ºµÄÇëÇó£¬È»ºóÓÃimpl¾Í´¦ÀíÕâ¸öÇëÇó×îºó·µ»Ø£¬ÕâÑùÍê³ÉÁ˵ڶþ´ÎBinderͨѶ

4.Öмäclient¿É¹ÒÆð£¬Ò²¿ÉÒÔ²»¹ÒÆð£¬ÓÐÒ»¸ö¹Ø¼ü×Öoneway¿ÉÒÔ½â¾öÕâ¸ö


Android¿ª·¢ÖкÎʱʹÓöà½ø³Ì£¿Ê¹Óöà½ø³ÌµÄºÃ´¦ÊÇʲô£¿?


????ÒªÏëÖªµÀÈçºÎʹÓöà½ø³Ì£¬ÏÈÒªÖªµÀAndroidÀïµÄ¶à½ø³Ì¸ÅÄî¡£Ò»°ãÇé¿öÏ£¬Ò»¸öÓ¦ÓóÌÐò¾ÍÊÇÒ»¸ö½ø³Ì£¬Õâ¸ö½ø³ÌÃû³Æ¾ÍÊÇÓ¦ÓóÌÐò°üÃû¡£ÎÒÃÇÖªµÀ½ø³ÌÊÇϵͳ·ÖÅä×ÊÔ´ºÍµ÷¶ÈµÄ»ù±¾µ¥Î»£¬ËùÒÔÿ¸ö½ø³Ì¶¼ÓÐ×Ô¼º¶ÀÁ¢µÄ×ÊÔ´ºÍÄÚ´æ¿Õ¼ä£¬±ðµÄ½ø³ÌÊDz»ÄÜÈÎÒâ·ÃÎÊÆäËû½ø³ÌµÄÄÚ´æºÍ×ÊÔ´µÄ¡£


ÈçºÎÈÃ×Ô¼ºµÄÓ¦ÓÃÓµÓжà¸ö½ø³Ì£¿


????ºÜ¼òµ¥£¬ÎÒÃǵÄËÄ´ó×é¼þÔÚAndroidManifestÎļþÖÐ×¢²áµÄʱºò£¬ÓиöÊôÐÔÊÇandroid:process£¬1.ÕâÀï¿ÉÒÔÖ¸¶¨×é¼þµÄËù´¦µÄ½ø³Ì¡£Ä¬ÈϾÍÊÇÓ¦ÓõÄÖ÷½ø³Ì¡£Ö¸¶¨Îª±ðµÄ½ø³ÌÖ®ºó£¬ÏµÍ³ÔÚÆô¶¯Õâ¸ö×é¼þµÄʱºò£¬¾ÍÏÈ´´½¨£¨Èç¹û»¹Ã»´´½¨µÄ»°£©Õâ¸ö½ø³Ì£¬È»ºóÔÙ´´½¨¸Ã×é¼þ¡£Äã¿ÉÒÔÖØÔØApplicationÀàµÄonCreate·½·¨£¬´òÓ¡³öËüµÄ½ø³ÌÃû³Æ£¬¾Í¿ÉÒÔÇå³þµÄ¿´¼ûÁË¡£ÔÙÉèÖÃandroid:processÊôÐÔʱºò£¬ÓиöµØ·½ÐèҪעÒ⣺Èç¹ûÊÇandroid:process=¡±:deamon¡±£¬ÒÔ:¿ªÍ·µÄÃû×Ö£¬Ôò±íʾÕâÊÇÒ»¸öÓ¦ÓóÌÐòµÄ˽Óнø³Ì£¬·ñÔòËüÊÇÒ»¸öÈ«¾Ö½ø³Ì¡£Ë½Óнø³ÌµÄ½ø³ÌÃû³ÆÊÇ»áÔÚðºÅÇ°×Ô¶¯¼ÓÉ*üÃû£¬¶øÈ«¾Ö½ø³ÌÔò²»»á¡£Ò»°ãÎÒÃǶ¼ÊÇÓÐ˽Óнø³Ì£¬ºÜÉÙʹÓÃÈ«¾Ö½ø³Ì¡£


ÈçºÎ±£Ö¤Service²»±»É±ËÀ£¿?


´Ó3¸ö²ãÃæÈëÊÖ£º


A.Ìṩ½ø³ÌÓÅÏȼ¶£¬½µµÍ½ø³Ì±»É±ËÀµÄ¸ÅÂÊ:


·½·¨Ò»£º¼à¿ØÊÖ»úËøÆÁ½âËøʼþ£¬ÔÚÆÁÄ»ËøÆÁʱÆô¶¯1¸öÏñËØµÄ Activity£¬ÔÚÓû§½âËøʱ½« Activity Ïú»Ùµô¡£

·½·¨¶þ£ºÆô¶¯Ç°Ì¨service¡£

·½·¨Èý£ºÌáÉýserviceÓÅÏȼ¶£º ÔÚAndroidManifest.xmlÎļþÖжÔÓÚintent-filter¿ÉÒÔͨ¹ýandroid:priority = "1000"Õâ¸öÊôÐÔÉèÖÃ×î¸ßÓÅÏȼ¶£¬1000ÊÇ×î¸ßÖµ£¬Èç¹ûÊý×ÖԽСÔòÓÅÏȼ¶Ô½µÍ£¬Í¬Ê±ÊÊÓÃÓڹ㲥¡£?

B. ÔÚ½ø³Ì±»É±ËÀºó£¬½øÐÐÀ­»î:


·½·¨Ò»£º×¢²á¸ßƵÂʹ㲥½ÓÊÕÆ÷£¬»½Æð½ø³Ì¡£ÈçÍøÂç±ä»¯£¬½âËøÆÁÄ»£¬¿ª»úµÈ

·½·¨¶þ£ºË«½ø³ÌÏ໥»½Æð¡£

·½·¨Èý£ºÒÀ¿¿ÏµÍ³»½Æð¡£

·½·¨ËÄ£ºonDestroy·½·¨ÀïÖ*ôservice£ºservice +broadcast ·½Ê½£¬¾ÍÊǵ±service×ßondestoryµÄʱºò£¬·¢ËÍÒ»¸ö×Ô¶¨ÒåµÄ¹ã²¥£¬µ±ÊÕµ½¹ã²¥µÄʱºò£¬ÖØÐÂÆô¶¯service£»

C. ÒÀ¿¿µÚÈý·½¸ù¾ÝÖն˲»Í¬:


ÔÚСÃ×ÊÖ»ú£¨°üÀ¨ MIUI£©½ÓÈëСÃ×ÍÆËÍ¡¢»ªÎªÊÖ»ú½ÓÈ뻪ΪÍÆËÍ£»ÆäËûÊÖ»ú¿ÉÒÔ¿¼ÂǽÓÈëÌÚѶПë»ò¼«¹âÍÆËÍÓëСÃ×ÍÆËÍ×ö A/B Test¡£


?


½²Ò»ÏÂandroidÖнø³ÌµÄÓÅÏȼ¶£¿?


ǰ̨½ø³Ì ¿É¼û½ø³Ì ·þÎñ½ø³Ì ºǫ́½ø³Ì ¿Õ½ø³Ì


Ó¦Óó£×¤ºǫ́£¬±ÜÃâ±»µÚÈý·½É±µôµÄ·½·¨?


    ServiceÉèÖóÉSTART_STICKY kill ºó»á±»Ö*ô£¨µÈ´ý5Ãë×óÓÒ£©£¬ÖØ´«Intent£¬±£³ÖÓëÖ*ôÇ°Ò»Ñù

    ͨ¹ý startForeground½«½ø³ÌÉèÖÃΪǰ̨½ø³Ì£¬ ×öǰ̨·þÎñ£¬ÓÅÏȼ¶ºÍǰ̨ӦÓÃÒ»¸ö¼¶±ð£¬³ý·ÇÔÚϵͳÄÚ´æ·Ç³£È±£¬·ñÔò´Ë½ø³Ì²»»á±» kill

    Ë«½ø³ÌService£º ÈÃ2¸ö½ø³Ì»¥Ïà±£»¤¶Ô·½£¬ÆäÖÐÒ»¸öService±»ÇåÀíºó£¬ÁíÍâû±»ÇåÀíµÄ½ø³Ì¿ÉÒÔÁ¢¼´Ö*ô½ø³Ì

    ÓÃC±àдÊØ»¤½ø³Ì(¼´×Ó½ø³Ì) : AndroidϵͳÖе±Ç°½ø³Ì(Process)fork³öÀ´µÄ×Ó½ø³Ì£¬±»ÏµÍ³ÈÏΪÊÇÁ½¸ö²»Í¬µÄ½ø³Ì¡£µ±¸¸½ø³Ì±»É±ËÀµÄʱºò£¬×Ó½ø³ÌÈÔÈ»¿ÉÒÔ´æ»î£¬²¢²»ÊÜÓ°Ï죨Android5.0ÒÔÉϵİ汾²»¿ÉÐУ©

    ÁªÏµ³§ÉÌ£¬¼ÓÈë°×Ãûµ¥


Èç¹ûϲ»¶±¾ÎÄÕ£¬Çë¹Ø×¢Android¸ß¼¶±à³Ì΢ÐŹ«Öںţ¬Óиü¶à¾«²ÊÄÚÈÝÌṩ£º




友情链接: