8)Memory
Churn and performance
ËäÈ»AndroidÓÐ×Ô¶¯¹ÜÀíÄÚ´æµÄ»úÖÆ£¬µ«ÊǶÔÄÚ´æµÄ²»Ç¡µ±Ê¹ÓÃÈÔÈ»ÈÝÒ×ÒýÆðÑÏÖØµÄÐÔÄÜÎÊÌâ¡£ÔÚͬһ֡ÀïÃæ´´½¨¹ý¶àµÄ¶ÔÏóÊǼþÐèÒªÌØ±ðÒýÆð×¢ÒâµÄÊÂÇé¡£
AndroidϵͳÀïÃæÓÐÒ»¸öGenerational Heap MemoryµÄÄ£ÐÍ£¬ÏµÍ³»á¸ù¾ÝÄÚ´æÖв»Í¬µÄÄÚ´æÊý¾ÝÀàÐÍ·Ö±ðÖ´Ðв»Í¬µÄGC²Ù×÷¡£ÀýÈ磬×î½ü¸Õ·ÖÅäµÄ¶ÔÏó»á·ÅÔÚYoung
GenerationÇøÓò£¬Õâ¸öÇøÓòµÄ¶ÔÏóͨ³£¶¼ÊÇ»á¿ìËÙ±»´´½¨²¢ÇҺܿ챻Ïú»Ù»ØÊյģ¬
ͬʱÕâ¸öÇøÓòµÄGC²Ù×÷ËÙ¶ÈÒ²ÊDZÈOld GenerationÇøÓòµÄGC²Ù×÷Ëٶȸü¿ìµÄ¡£

³ýÁËËٶȲîÒìÖ®Í⣬ִÐÐGC²Ù×÷µÄʱºò£¬ÈκÎÏ̵߳ÄÈκβÙ×÷¶¼»áÐèÒªÔÝÍ££¬µÈ´ýGC²Ù×÷Íê³ÉÖ®ºó£¬ÆäËû²Ù×÷²ÅÄܹ»¼ÌÐøÔËÐС£

ͨ³£À´Ëµ£¬µ¥¸öµÄGC²¢²»»áÕ¼ÓÃÌ«¶àʱ¼ä£¬µ«ÊÇ´óÁ¿²»Í£µÄGC²Ù×÷Ôò»áÏÔÖøÕ¼ÓÃÖ¡¼ä¸ôʱ¼ä(16ms)¡£Èç¹ûÔÚÖ¡¼ä¸ôʱ¼äÀïÃæ×öÁ˹ý¶àµÄGC²Ù×÷£¬ÄÇô×ÔÈ»ÆäËûÀàËÆ¼ÆË㣬äÖȾµÈ²Ù×÷µÄ¿ÉÓÃʱ¼ä¾Í±äµÃÉÙÁË¡£
µ¼ÖÂGCƵ·±Ö´ÐÐÓÐÁ½¸öÔÒò£º
1.Memory ChurnÄÚ´æ¶¶¶¯£¬ÄÚ´æ¶¶¶¯ÊÇÒòΪ´óÁ¿µÄ¶ÔÏó±»´´½¨ÓÖÔÚ¶Ìʱ¼äÄÚÂíÉϱ»ÊÍ·Å¡£
2.˲¼ä²úÉú´óÁ¿µÄ¶ÔÏó»áÑÏÖØÕ¼ÓÃYoung GenerationµÄÄÚ´æÇøÓò£¬µ±´ïµ½·§Öµ£¬Ê£Óà¿Õ¼ä²»¹»µÄʱºò£¬Ò²»á´¥·¢GC¡£¼´Ê¹Ã¿´Î·ÖÅäµÄ¶ÔÏóÕ¼ÓÃÁ˺ÜÉÙµÄÄڴ棬µ«ÊÇËûÃǵþ¼ÓÔÚÒ»Æð»áÔö¼ÓHeapµÄѹÁ¦£¬´Ó¶ø´¥·¢¸ü¶àÆäËûÀàÐ͵ÄGC¡£Õâ¸ö²Ù×÷ÓпÉÄÜ»áÓ°Ïìµ½Ö¡ÂÊ£¬²¢Ê¹µÃÓû§¸ÐÖªµ½ÐÔÄÜÎÊÌâ¡£

½â¾öÉÏÃæµÄÎÊÌâÓмò½àÖ±¹Û·½·¨£¬Èç¹ûÄãÔÚMemory MonitorÀïÃæ²é¿´µ½¶Ìʱ¼ä·¢ÉúÁ˶à´ÎÄÚ´æµÄÕǵø£¬ÕâÒâζןÜÓпÉÄÜ·¢ÉúÁËÄÚ´æ¶¶¶¯¡£

ͬʱÎÒÃÇ»¹¿ÉÒÔͨ¹ýAllocation TrackerÀ´²é¿´ÔÚ¶Ìʱ¼äÄÚ£¬Í¬Ò»¸öÕ»Öв»¶Ï½ø³öµÄÏàͬ¶ÔÏó¡£ÕâÊÇÄÚ´æ¶¶¶¯µÄµäÐÍÐźÅÖ®Ò»¡£
µ±Äã´óÖ¶¨Î»ÎÊÌâÖ®ºó£¬½ÓÏÂÈ¥µÄÎÊÌâÐÞ¸´Ò²¾ÍÏÔµÃÏà¶ÔÖ±½Ó¼òµ¥ÁË¡£ÀýÈ磬ÄãÐèÒª±ÜÃâÔÚforÑ»·ÀïÃæ·ÖÅä¶ÔÏóÕ¼ÓÃÄڴ棬ÐèÒª³¢Ê԰ѶÔÏóµÄ´´½¨ÒƵ½Ñ»·ÌåÖ®Í⣬×Ô¶¨ÒåViewÖеÄonDraw·½·¨Ò²ÐèÒªÒýÆð×¢Ò⣬ÿ´ÎÆÁÄ»·¢Éú»æÖÆÒÔ¼°¶¯»Ö´Ðйý³ÌÖУ¬onDraw·½·¨¶¼»á±»µ÷Óõ½£¬
±ÜÃâÔÚonDraw·½·¨ÀïÃæÖ´Ðи´ÔӵIJÙ×÷£¬±ÜÃâ´´½¨¶ÔÏó¡£¶ÔÓÚÄÇЩÎÞ·¨±ÜÃâÐèÒª´´½¨¶ÔÏóµÄÇé¿ö£¬ÎÒÃÇ¿ÉÒÔ¿¼ÂǶÔÏó³ØÄ£ÐÍ£¬Í¨¹ý¶ÔÏó³ØÀ´½â¾öƵ·±´´½¨ÓëÏú»ÙµÄÎÊÌ⣬µ«ÊÇÕâÀïÐèҪעÒâ½áÊøÊ¹ÓÃÖ®ºó£¬ÐèÒªÊÖ¶¯ÊͷŶÔÏó³ØÖеĶÔÏó¡£
9)Garbage Collection in Android
JVMµÄ»ØÊÕ»úÖÆ¸ø¿ª·¢ÈËÔ±´øÀ´ºÜ´óµÄºÃ´¦£¬²»ÓÃʱ¿Ì´¦Àí¶ÔÏóµÄ·ÖÅäÓë»ØÊÕ£¬¿ÉÒÔ¸ü¼ÓרעÓÚ¸ü¼Ó¸ß¼¶µÄ´úÂëʵÏÖ¡£Ïà±ÈÆðJava£¬CÓëC++µÈÓïÑԾ߱¸¸ü¸ßµÄÖ´ÐÐЧÂÊ£¬ËûÃÇÐèÒª¿ª·¢ÈËÔ±×Ô¼º¹Ø×¢¶ÔÏóµÄ·ÖÅäÓë»ØÊÕ£¬µ«ÊÇÔÚÒ»¸öÅÓ´óµÄϵͳµ±ÖУ¬
»¹ÊÇÃâ²»Á˾³£·¢Éú²¿·Ö¶ÔÏóÍü¼Ç»ØÊÕµÄÇé¿ö£¬Õâ¾ÍÊÇÄÚ´æÐ¹Â©¡£
ÔʼJVMÖеÄGC»úÖÆÔÚAndroidÖеõ½Á˺ܴó³Ì¶ÈÉϵÄÓÅ»¯¡£AndroidÀïÃæÊÇÒ»¸öÈý¼¶GenerationµÄÄÚ´æÄ£ÐÍ£¬×î½ü·ÖÅäµÄ¶ÔÏó»á´æ·ÅÔÚYoung
GenerationÇøÓò£¬µ±Õâ¸ö¶ÔÏóÔÚÕâ¸öÇøÓòÍ£ÁôµÄʱ¼ä´ïµ½Ò»¶¨³Ì¶È£¬Ëü»á±»Òƶ¯µ½Old Generation£¬×îºóµ½Permanent
GenerationÇøÓò¡£

ÿһ¸ö¼¶±ðµÄÄÚ´æÇøÓò¶¼Óй̶¨µÄ´óС£¬´Ëºó²»¶ÏÓÐеĶÔÏó±»·ÖÅäµ½´ËÇøÓò£¬µ±ÕâЩ¶ÔÏó×ܵĴóС¿ì´ïµ½ÕâÒ»¼¶±ðÄÚ´æÇøÓòµÄ·§ÖµÊ±£¬»á´¥·¢GCµÄ²Ù×÷£¬ÒÔ±ãÌÚ³ö¿Õ¼äÀ´´æ·ÅÆäËûеĶÔÏó¡£

Ç°ÃæÌáµ½¹ýÿ´ÎGC·¢ÉúµÄʱºò£¬ËùÓеÄÏ̶߳¼ÊÇÔÝͣ״̬µÄ¡£GCËùÕ¼ÓõÄʱ¼äºÍËüÊÇÄÄÒ»¸öGenerationÒ²ÓйØÏµ£¬Young
GenerationµÄÿ´ÎGC²Ù×÷ʱ¼äÊÇ×î¶ÌµÄ£¬Old GenerationÆä´Î£¬Permanent Generation×¡£Ö´ÐÐʱ¼äµÄ³¤¶ÌÒ²ºÍµ±Ç°GenerationÖеĶÔÏóÊýÁ¿Óйأ¬
±éÀú²éÕÒ20000¸ö¶ÔÏó±ÈÆð±éÀú50¸ö¶ÔÏó×ÔÈ»ÊÇÒªÂýºÜ¶àµÄ¡£
ËäÈ»GoogleµÄ¹¤³ÌʦÔÚ¾¡Á¿Ëõ¶Ìÿ´ÎGCËù»¨·ÑµÄʱ¼ä£¬µ«ÊÇÌØ±ð×¢ÒâGCÒýÆðµÄÐÔÄÜÎÊÌ⻹ÊǺÜÓбØÒª¡£Èç¹û²»Ð¡ÐÄÔÚ×îСµÄforÑ»·µ¥ÔªÀïÃæÖ´ÐÐÁË´´½¨¶ÔÏóµÄ²Ù×÷£¬Õ⽫ºÜÈÝÒ×ÒýÆðGC²¢µ¼ÖÂÐÔÄÜÎÊÌ⡣ͨ¹ýMemory
MonitorÎÒÃÇ¿ÉÒԲ鿴µ½ÄÚ´æµÄÕ¼ÓÃÇé¿ö£¬
ÿһ´Î˲¼äµÄÄÚ´æ½µµÍ¶¼ÊÇÒòΪ´Ëʱ·¢ÉúÁËGC²Ù×÷£¬Èç¹ûÔÚ¶Ìʱ¼äÄÚ·¢Éú´óÁ¿µÄÄÚ´æÉÏÕÇÓë½µµÍµÄʼþ£¬Õâ˵Ã÷ºÜÓпÉÄÜÕâÀïÓÐÐÔÄÜÎÊÌâ¡£ÎÒÃÇ»¹¿ÉÒÔͨ¹ýHeap
and Allocation Tracker¹¤¾ßÀ´²é¿´´ËʱÄÚ´æÖзÖÅäµÄµ½µ×ÓÐÄÄЩ¶ÔÏó¡£
10)Performance Cost of Memory Leaks
ËäÈ»JavaÓÐ×Ô¶¯»ØÊյĻúÖÆ£¬¿ÉÊÇÕâ²»Òâζ×ÅJavaÖв»´æÔÚÄÚ´æÐ¹Â©µÄÎÊÌ⣬¶øÄÚ´æÐ¹Â©»áºÜÈÝÒ×µ¼ÖÂÑÏÖØµÄÐÔÄÜÎÊÌâ¡£
ÄÚ´æÐ¹Â©Ö¸µÄÊÇÄÇЩ³ÌÐò²»ÔÙʹÓõĶÔÏóÎÞ·¨±»GCʶ±ð£¬ÕâÑù¾Íµ¼ÖÂÕâ¸ö¶ÔÏóÒ»Ö±ÁôÔÚÄÚ´æµ±ÖУ¬Õ¼ÓÃÁ˱¦¹óµÄÄÚ´æ¿Õ¼ä¡£ÏÔÈ»£¬Õ⻹ʹµÃÿ¼¶GenerationµÄÄÚ´æÇøÓò¿ÉÓÿռä±äС£¬GC¾Í»á¸üÈÝÒ×±»´¥·¢£¬´Ó¶øÒýÆðÐÔÄÜÎÊÌâ¡£
ѰÕÒÄÚ´æÐ¹Â©²¢ÐÞ¸´Õâ¸ö©¶´ÊǼþºÜ¼¬ÊÖµÄÊÂÇ飬ÄãÐèÒª¶ÔÖ´ÐеĴúÂëºÜÊìϤ£¬Çå³þµÄÖªµÀÔÚÌØ¶¨»·¾³ÏÂÊÇÈçºÎÔËÐеģ¬È»ºó×ÐϸÅŲ顣ÀýÈ磬ÄãÏëÖªµÀ³ÌÐòÖеÄij¸öactivityÍ˳öµÄʱºò£¬Ëü֮ǰËùÕ¼ÓõÄÄÚ´æÊÇ·ñÓÐÍêÕûµÄÊͷŸɾ»ÁË£¿
Ê×ÏÈÄãÐèÒªÔÚactivity´¦ÓÚǰ̨µÄʱºòʹÓÃHeap Tool»ñȡһ·Ýµ±Ç°×´Ì¬µÄÄÚ´æ¿ìÕÕ£¬È»ºóÄãÐèÒª´´½¨Ò»¸ö¼¸ºõ²»ÕâôռÓÃÄÚ´æµÄ¿Õ°×activityÓÃÀ´¸øÇ°Ò»¸öActivity½øÐÐÌø×ª£¬Æä´ÎÔÚÌø×ªµ½Õâ¸ö¿Õ°×µÄactivityµÄʱºòÖ÷¶¯µ÷ÓÃSystem.gc()·½·¨À´È·±£´¥·¢Ò»¸öGC²Ù×÷¡£
×îºó£¬Èç¹ûÇ°ÃæÕâ¸öactivityµÄÄÚ´æ¶¼ÓÐÈ«²¿ÕýÈ·ÊÍ·Å£¬ÄÇôÔÚ¿Õ°×activity±»Æô¶¯Ö®ºóµÄÄÚ´æ¿ìÕÕÖÐÓ¦¸Ã²»»áÓÐÇ°ÃæÄǸöactivityÖеÄÈκζÔÏóÁË¡£

Èç¹ûÄã·¢ÏÖÔÚ¿Õ°×activityµÄÄÚ´æ¿ìÕÕÖÐÓÐһЩ¿ÉÒɵÄûÓб»ÊͷŵĶÔÏó´æÔÚ£¬ÄÇô½ÓÏÂÈ¥¾ÍÓ¦¸ÃʹÓÃAlocation
Track ToolÀ´×Ðϸ²éÕÒ¾ßÌåµÄ¿ÉÒɶÔÏó¡£ÎÒÃÇ¿ÉÒÔ´Ó¿Õ°×activity¿ªÊ¼¼àÌý£¬Æô¶¯µ½¹Û²ìactivity£¬È»ºóÔٻص½¿Õ°×activity½áÊø¼àÌý¡£
ÕâÑù²Ù×÷ÒÔºó£¬ÎÒÃÇ¿ÉÒÔ×Ðϸ¹Û²ìÄÇЩ¶ÔÏó£¬ÕÒ³öÄÚ´æÐ¹Â©µÄÕæÐס£

11)Memory Performance
ͨ³£À´Ëµ£¬Android¶ÔGC×öÁË´óÁ¿µÄÓÅ»¯²Ù×÷£¬ËäȻִÐÐGC²Ù×÷µÄʱºò»áÔÝÍ£ÆäËûÈÎÎñ£¬¿ÉÊÇ´ó¶àÊýÇé¿öÏ£¬GC²Ù×÷»¹ÊÇÏà¶ÔºÜ°²¾²²¢ÇÒ¸ßЧµÄ¡£µ«ÊÇÈç¹ûÎÒÃǶÔÄÚ´æµÄʹÓò»Ç¡µ±£¬µ¼ÖÂGCƵ·±Ö´ÐУ¬ÕâÑù¾Í»áÒýÆð²»Ð¡µÄÐÔÄÜÎÊÌâ¡£
ΪÁËѰÕÒÄÚ´æµÄÐÔÄÜÎÊÌ⣬Android StudioÌṩÁ˹¤¾ßÀ´°ïÖú¿ª·¢Õß¡£
1.Memory Monitor£º²é¿´Õû¸öappËùÕ¼ÓõÄÄڴ棬ÒÔ¼°·¢ÉúGCµÄʱ¿Ì£¬¶Ìʱ¼äÄÚ·¢Éú´óÁ¿µÄGC²Ù×÷ÊÇÒ»¸öΣÏÕµÄÐźš£
2.Allocation Tracker£ºÊ¹Óô˹¤¾ßÀ´×·×ÙÄÚ´æµÄ·ÖÅä£¬Ç°ÃæÓÐÌáµ½¹ý¡£
3.Heap Tool£º²é¿´µ±Ç°ÄÚ´æ¿ìÕÕ£¬±ãÓڶԱȷÖÎöÄÄЩ¶ÔÏóÓпÉÄÜÊÇй©Á˵ģ¬Çë²Î¿¼Ç°ÃæµÄCase¡£
12)Tool - Memory Monitor
Android StudioÖеÄMemory Monitor¿ÉÒԺܺõİï×éÎÒÃDz鿴³ÌÐòµÄÄÚ´æÊ¹ÓÃÇé¿ö¡£



13)Battery Performance
µçÁ¿ÆäʵÊÇĿǰÊÖ³ÖÉ豸×¹óµÄ×ÊÔ´Ö®Ò»£¬´ó¶àÊýÉ豸¶¼ÐèÒª²»¶ÏµÄ³äµçÀ´Î¬³Ö¼ÌÐøÊ¹Óᣲ»ÐÒµÄÊÇ£¬¶ÔÓÚ¿ª·¢ÕßÀ´Ëµ£¬µçÁ¿ÓÅ»¯ÊÇËûÃÇ×îºó²Å»á¿¼ÂǵĵÄÊÂÇé¡£µ«ÊÇ¿ÉÒÔÈ·¶¨µÄÊÇ£¬Ç§Íò²»ÄÜÈÃÄãµÄÓ¦ÓóÉΪÏûºÄµçÁ¿µÄ´ó»§¡£
Purdue UniversityÑо¿ÁË×îÊÜ»¶ÓµÄһЩӦÓõĵçÁ¿ÏûºÄ£¬Æ½¾ùÖ»ÓÐ30%×óÓҵĵçÁ¿ÊDZ»³ÌÐò×îºËÐĵķ½·¨ÀýÈç»æÖÆÍ¼Æ¬£¬°Ú·Å²¼¾ÖµÈµÈËùʹÓõôµÄ£¬Ê£ÏµÄ70%×óÓҵĵçÁ¿ÊDZ»Éϱ¨Êý¾Ý£¬¼ì²éλÖÃÐÅÏ¢£¬¶¨Ê±¼ìË÷ºǫ́¹ã¸æÐÅÏ¢ËùʹÓõôµÄ¡£
ÈçºÎƽºâÕâÁ½ÕߵĵçÁ¿ÏûºÄ£¬¾ÍÏԵ÷dz£ÖØÒªÁË¡£
ÓÐÏÂÃæÒ»Ð©´ëÊ©Äܹ»ÏÔÖø¼õÉÙµçÁ¿µÄÏûºÄ£º
1.ÎÒÃÇÓ¦¸Ã¾¡Á¿¼õÉÙ»½ÐÑÆÁÄ»µÄ´ÎÊýÓë³ÖÐøµÄʱ¼ä£¬Ê¹ÓÃWakeLockÀ´´¦Àí»½ÐѵÄÎÊÌ⣬Äܹ»ÕýÈ·Ö´Ðл½ÐѲÙ×÷²¢¸ù¾ÝÉ趨¼°Ê±¹Ø±Õ²Ù×÷½øÈë˯Ãß״̬¡£
2.ijЩ·Ç±ØÐëÂíÉÏÖ´ÐеIJÙ×÷£¬ÀýÈçÉÏ´«¸èÇú£¬Í¼Æ¬´¦ÀíµÈ£¬¿ÉÒԵȵ½É豸´¦ÓÚ³äµç״̬»òÕßµçÁ¿³ä×ãµÄʱºò²Å½øÐС£
3.´¥·¢ÍøÂçÇëÇóµÄ²Ù×÷£¬Ã¿´Î¶¼»á±£³ÖÎÞÏßÐźųÖÐøÒ»¶Îʱ¼ä£¬ÎÒÃÇ¿ÉÒÔ°ÑÁãÉ¢µÄÍøÂçÇëÇó´ò°ü½øÐÐÒ»´Î²Ù×÷£¬±ÜÃâ¹ý¶àµÄÎÞÏßÐźÅÒýÆðµÄµçÁ¿ÏûºÄ¡£¹ØÓÚÍøÂçÇëÇóÒýÆðÎÞÏßÐźŵĵçÁ¿ÏûºÄ£¬»¹¿ÉÒԲο¼ÕâÀïhttp://hukai.me/android-training-course-in-chinese/connectivity/efficient-downloads/efficient-network-access.html
ÎÒÃÇ¿ÉÒÔͨ¹ýÊÖ»úÉèÖÃÑ¡ÏîÕÒµ½¶ÔÓ¦AppµÄµçÁ¿ÏûºÄͳ¼ÆÊý¾Ý¡£ÎÒÃÇ»¹¿ÉÒÔͨ¹ýBattery
Historian ToolÀ´²é¿´ÏêϸµÄµçÁ¿ÏûºÄ¡£

Èç¹û·¢ÏÖÎÒÃǵÄAppÓеçÁ¿ÏûºÄ¹ý¶àµÄÎÊÌ⣬ÎÒÃÇ¿ÉÒÔʹÓÃJobScheduler
APIÀ´¶ÔһЩÈÎÎñ½øÐж¨Ê±´¦Àí£¬ÀýÈçÎÒÃÇ¿ÉÒÔ°ÑÄÇЩÈÎÎñÖØµÄ²Ù×÷µÈµ½ÊÖ»ú´¦ÓÚ³äµç״̬£¬»òÕßÊÇÁ¬½Óµ½WiFiµÄʱºòÀ´´¦Àí¡£
¹ØÓÚJobSchedulerµÄ¸ü¶à֪ʶ¿ÉÒԲο¼http://hukai.me/android-training-course-in-chinese/background-jobs/scheduling/index.html
14)Understanding Battery Drain on Android
µçÁ¿ÏûºÄµÄ¼ÆËãÓëͳ¼ÆÊÇÒ»¼þÂé·³¶øÇÒì¶ÜµÄÊÂÇ飬¼Ç¼µçÁ¿ÏûºÄ±¾ÉíÒ²ÊÇÒ»¸ö·ÑµçÁ¿µÄÊÂÇ顣Ψһ¿ÉÐеķ½°¸ÊÇʹÓõÚÈý·½¼à²âµçÁ¿µÄÉ豸£¬ÕâÑù²ÅÄܹ»»ñÈ¡µ½ÕæÊµµÄµçÁ¿ÏûºÄ¡£
µ±É豸´¦ÓÚ´ý»ú״̬ʱÏûºÄµÄµçÁ¿ÊǼ«Éٵģ¬ÒÔN5ΪÀý£¬´ò¿ª·ÉÐÐģʽ£¬¿ÉÒÔ´ý»ú½Ó½ü1¸öÔ¡£¿ÉÊǵãÁÁÆÁÄ»£¬Ó²¼þ¸÷¸öÄ£¿é¾ÍÐèÒª¿ªÊ¼¹¤×÷£¬Õâ»áÐèÒªÏûºÄºÜ¶àµçÁ¿¡£
ʹÓÃWakeLock»òÕßJobScheduler»½ÐÑÉ豸´¦Àí¶¨Ê±µÄÈÎÎñÖ®ºó£¬Ò»¶¨Òª¼°Ê±ÈÃÉ豸»Øµ½³õʼ״̬¡£Ã¿´Î»½ÐÑÎÞÏßÐźŽøÐÐÊý¾Ý´«µÝ£¬¶¼»áÏûºÄºÜ¶àµçÁ¿£¬Ëü±ÈWiFiµÈ²Ù×÷¸ü¼ÓµÄºÄµç£¬
ÏêÇéÇë¹Ø×¢http://hukai.me/android-training-course-in-chinese/connectivity/efficient-downloads/efficient-network-access.html

ÐÞ¸´µçÁ¿µÄÏûºÄÊÇÁíÍâÒ»¸öºÜ´óµÄ¿ÎÌ⣬ÕâÀï¾Í²»Õ¹¿ª¼ÌÐøÁË¡£
15)Battery Drain and WakeLocks
¸ßЧµÄ±£Áô¸ü¶àµÄµçÁ¿Óë²»¶Ï´ÙʹÓû§Ê¹ÓÃÄãµÄAppÀ´ÏûºÄµçÁ¿£¬ÕâÊÇì¶ÜµÄÑ¡ÔñÌâ¡£²»¹ýÎÒÃÇ¿ÉÒÔʹÓÃһЩ¸üºÃµÄ°ì·¨À´Æ½ºâÁ½Õß¡£
¼ÙÉèÄãµÄÊÖ»úÀïÃæ×°ÁË´óÁ¿µÄÉç½»ÀàÓ¦Ó㬼´Ê¹ÊÖ»ú´¦ÓÚ´ý»ú״̬£¬Ò²»á¾³£±»ÕâЩӦÓû½ÐÑÓÃÀ´¼ì²éͬ²½ÐµÄÊý¾ÝÐÅÏ¢¡£Android»á²»¶Ï¹Ø±Õ¸÷ÖÖÓ²¼þÀ´ÑÓ³¤ÊÖ»úµÄ´ý»úʱ¼ä£¬Ê×ÏÈÆÁÄ»»áÖ𽥱䰵ֱÖÁ¹Ø±Õ£¬È»ºóCPU½øÈë˯Ãߣ¬ÕâÒ»ÇвÙ×÷¶¼ÊÇΪÁ˽ÚÔ¼±¦¹óµÄµçÁ¿×ÊÔ´¡£
µ«ÊǼ´Ê¹ÔÚÕâÖÖ˯Ãß״̬Ï£¬´ó¶àÊýÓ¦Óû¹Êǻ᳢ÊÔ½øÐй¤×÷£¬ËûÃǽ«²»¶ÏµÄ»½ÐÑÊÖ»ú¡£Ò»¸ö×î¼òµ¥µÄ»½ÐÑÊÖ»úµÄ·½·¨ÊÇʹÓÃPowerManager.WakeLockµÄAPIÀ´±£³ÖCPU¹¤×÷²¢·ÀÖ¹ÆÁÄ»±ä°µ¹Ø±Õ¡£ÕâʹµÃÊÖ»ú¿ÉÒÔ±»»½ÐÑ£¬Ö´Ðй¤×÷£¬È»ºó»Øµ½Ë¯Ãß״̬¡£
ÖªµÀÈçºÎ»ñÈ¡WakeLockÊǼòµ¥µÄ£¬¿ÉÊǼ°Ê±ÊÍ·ÅWakeLockÒ²ÊǷdz£ÖØÒªµÄ£¬²»Ç¡µ±µÄʹÓÃWakeLock»áµ¼ÖÂÑÏÖØ´íÎó¡£ÀýÈçÍøÂçÇëÇóµÄÊý¾Ý·µ»ØÊ±¼ä²»È·¶¨£¬µ¼Ö±¾À´Ö»ÐèÒª10sµÄÊÂÇéÒ»Ö±µÈ´ýÁË1¸öСʱ£¬ÕâÑù»áʹµÃµçÁ¿°×°×ÀË·ÑÁË¡£
ÕâÒ²ÊÇΪºÎʹÓôø³¬Ê±²ÎÊýµÄwakelock.acquice()·½·¨ÊǺܹؼüµÄ¡£µ«Êǽö½öÉèÖó¬Ê±²¢²»×ã¹»½â¾öÎÊÌ⣬ÀýÈçÉèÖö೤µÄ³¬Ê±±È½ÏºÏÊÊ£¿Ê²Ã´Ê±ºò½øÐÐÖØÊԵȵȣ¿
½â¾öÉÏÃæµÄÎÊÌ⣬ÕýÈ·µÄ·½Ê½¿ÉÄÜÊÇʹÓ÷Ǿ«×¼¶¨Ê±Æ÷¡£Í¨³£Çé¿öÏ£¬ÎÒÃÇ»áÉ趨һ¸öʱ¼ä½øÐÐij¸ö²Ù×÷£¬µ«ÊǶ¯Ì¬ÐÞ¸ÄÕâ¸öʱ¼äÒ²Ðí»á¸üºÃ¡£ÀýÈ磬Èç¹ûÓÐÁíÍâÒ»¸ö³ÌÐòÐèÒª±ÈÄãÉ趨µÄʱ¼äÍí5·ÖÖÓ»½ÐÑ£¬×îºÃÄܹ»µÈµ½ÄǸöʱºò£¬Á½¸öÈÎÎñÀ¦°óÒ»Æðͬʱ½øÐУ¬
Õâ¾ÍÊǷǾ«È·¶¨Ê±Æ÷µÄºËÐŤ×÷ÔÀí¡£ÎÒÃÇ¿ÉÒÔ¶¨ÖƼƻ®µÄÈÎÎñ£¬¿ÉÊÇϵͳÈç¹û¼ì²âµ½Ò»¸ö¸üºÃµÄʱ¼ä£¬Ëü¿ÉÒÔÍÆ³ÙÄãµÄÈÎÎñ£¬ÒÔ½ÚÊ¡µçÁ¿ÏûºÄ¡£

ÕâÕýÊÇJobScheduler APIËù×öµÄÊÂÇé¡£Ëü»á¸ù¾Ýµ±Ç°µÄÇé¿öÓëÈÎÎñ£¬×éºÏ³öÀíÏëµÄ»½ÐÑʱ¼ä£¬ÀýÈçµÈµ½ÕýÔÚ³äµç»òÕßÁ¬½Óµ½WiFiµÄʱºò£¬»òÕß¼¯ÖÐÈÎÎñÒ»ÆðÖ´ÐС£ÎÒÃÇ¿ÉÒÔͨ¹ýÕâ¸öAPIʵÏֺܶàÃâ·ÑµÄµ÷¶ÈËã·¨¡£
´ÓAndroid 5.0¿ªÊ¼·¢²¼ÁËBattery History Tool£¬Ëü¿ÉÒԲ鿴³ÌÐò±»»½ÐÑµÄÆµÂÊ£¬ÓÖË»½Ðѵ쬳ÖÐøÁ˶೤µÄʱ¼ä£¬ÕâЩÐÅÏ¢¶¼¿ÉÒÔ»ñÈ¡µ½¡£
Çë¹Ø×¢³ÌÐòµÄµçÁ¿ÏûºÄ£¬Óû§¿ÉÒÔͨ¹ýÊÖ»úµÄÉèÖÃÑ¡Ïî¹Û²ìµ½ÄÇЩºÄµçÁ¿´ó»§£¬²¢¿ÉÄܾö¶¨Ð¶ÔØËûÃÇ¡£ËùÒÔ¾¡Á¿¼õÉÙ³ÌÐòµÄµçÁ¿ÏûºÄÊǷdz£ÓбØÒªµÄ¡£ |