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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÓÃDagger2ÔÚAndroidÖÐʵÏÖÒÀÀµ×¢Èë

 
×÷ÕߣºÐ¡ºìÐÇÉÁ°¡ÉÁlo À´Ô´£º51cto·¢²¼ÓÚ 2016-11-4
  1718  次浏览      27
 

ÒÀÀµ×¢ÈëÕâ¸öģʽ(ģʽÒѾ­ÓÃÀÃÁË£¬ÕâÀïÔÙÀÃÒ»´Î)ÊÇÓÃÀ´¸øÓ¦Óõĸ÷²¿·Ö½âñîµÄ¡£Ê¹Ó¦Óÿª·¢¸ü¼Ó¿ÉÀ©Õ¹£¬¸üÈÝÒ×ά»¤¡£Í¨¹ý±¾ÎÄÄã»áѧµ½ÈçºÎʹÓÃDagger2À´´¦ÀíÒÀÀµ¡£

¼ò½é

Èç¹ûÒÔ¶ÔÏóÐèÒªÁíÍâµÄÒ»¸ö¶ÔÏó²ÅÄÜÍê³ÉÒ»¸öÍêÕû¹¦Äܵϰ£¬ÄÇôÕâÀï¾Í´æÔÚÒ»¸öÒÀÀµ¡£±ÈÈ磬Îò¿ÕÒªÓý𹿰ô²ÅÄÜÈý´ò°×¹Ç¾«£¬Òª½î¶·ÔƲÅÄÜÊ®Íò°ËǧÀï¡£Îò¿ÕÓжԽ𹿰ôºÍ½î¶·ÔƵÄÒÀÀµ¡£Äã¿ÉÒÔÔÚÎò¿Õ¶ÔÏóÀï³õʼ»¯½ð¹¿°ô£¬Ò²¿ÉÒÔÓÃÒ»¸ö¹¤³§·½·¨ÅúÁ¿Éú²ú½ð¹¿°ô¡£Ê¹ÓÃÒÀÀµ×¢Èë¿ÉÒÔÎÞÐèÒ»¸öרÃŵÄÀàÀ´³õʼ»¯ÕâЩÒÀÀµ¶ÔÏó¡£ÕâÑù¾ÍʵÏÖÁ˽âñî¡£

±¾½Ì³Ì»áʹÓÃ×îеÄDagger2(µ±Ç°µÄ°æ±¾ÊÇ2.2)¡£ÕâÀïÊǹÙÍø¡£Äã¿ÉÒÔÔÚÕâÀïÕÒµ½×îÐµķ¢²¼¡£

×¼±¸

Android StudioÊDZØÐëµÄ¡£ÆäËû£º

1. Dagger2 »ù´¡

×¢½â½²½â£º

@ModuleÕâ¸öannotationÐÞÊεÄÀàרÃÅÓÃÀ´ÌṩÒÀÀµ

@ProvidesÕâ¸öannotationÐÞÊεķ½·¨ÓÃÔÚModuleÀàÀï

@InjectÓÃÀ´annotationÒ»¸öÒÀÀµ(¿ÉÒÔÊǹ¹Ôì·½·¨¡¢field»òÕßÒ»°ãµÄ·½·¨)

@ComponentÁ¬½Ó@ModuleºÍ×¢ÈëµÄÇÅÁº

ÕâЩÃû´Ê¿´ÆðÀ´·Ç³£³éÏó¡£ÏÂÃæÉÔ΢½âÊÍһϡ£ÒÀÀµ·´É䲢ûÓÐʲôÉñÆæµÄµØ·½¡£Ö»²»¹ýÊÇÎÒÃÇÐèÒªµ¥¶Àд³õʼ»¯ÒÀÀµµÄµØ·½ÓÉÆäËûµÄ¿ò¼Ü´úÌæÁË¡£Õâ¸öÒÀÀµ¹ØÏµÒ²ÓÐÎÒÃdz£Ð´µÄ´úÂë×ªÒÆµ½ÁË¡°ÅäÖÃÎļþ¡±ÖС£

ÔںܾÃÒÔǰ£¬ÒÀÀµ×¢ÈëµÄ¿ò¼Ü¾ÍÊÇÕâÑù´¦ÀíÒÀÀµ×¢ÈëµÄ£º¶ÁÈ¡ÅäÖÃÎļþµÄÒÀÀµ¹ØÏµ£¬È»ºóÓ÷´ÉäµÄ·½·¨³õʼ»¯±»ÒÀÀµ¶ÔÏ󲢸³Öµ¸øµ÷ÓÃÒÀÀµµÄ¶ÔÏó¡£±ÈÈ磬ÎÒÃÇ֮ǰÔÚÎò¿ÕÀàÖгõʼ»¯½ð¹¿°ô£º

ºóÀ´ÓÐÁËʹÓÃÅäÖÃÎļþµÄÒÀÀµ×¢Èë(ÕâÀï¶¼ÊÇÐé¹¹µÄÎļþ¸ñʽ)£º

ÔÚÎò¿ÕʹÓý𹿰ôµÄʱºò£¬ÒÀÀµ×¢Èë¿ò¼Ü×Ô¶¯³õʼ»¯ºÃÁ˽𹿰ô£¬²¢¸³Öµ¸øÁËÎò¿Õ¡£

ÏÖÔÚʹÓÃDagger2¡£ÕâÀï¾ÍÓв»µÃ²»ËµµÄÅ£XµÄµØ·½ÁË¡£ÒòΪÊÇÔÚAndroidÀïÄÜÓõÄ×ÊԴûÓкó¶ËÄÇô¶à¡£ÓÈÆä·´ÉäÏûºÄ±È½Ï´ó!ËùÒÔDaggerΪÁËÂú×ãÒÆ¶¯¿ª·¢½ÚÔ¼×ÊÔ´µÄÐèÒª£¬Ã»ÓÐʹÓ÷´ÉäʵÏÖÒÀÀµ×¢Èë¡£¶øÊÇÔÚ±àÒëµÄʱºòͬʱÉú³ÉÒÀÀµ×¢ÈëµÄÏà¹Ø´úÂë¡£Éú³É´úÂëµÄ¸ù¾Ý¾ÍÊÇǰÎÄÖÐ˵Ã÷µÄÄÇЩע½â(annotation)ÒÔ¼°Ê¹ÓÃÕâЩannotationµÄÀà¡¢½Ó¿Ú¡£

×ܽáÆðÀ´¾ÍÒ»¾ä»°£¬Dagger°ÑÄãÐèÒªÔÚÎò¿ÕÀàÀïдµÄ½ð¹¿°ôÀàµÄ³õʼ»¯´úÂë¶¼¸ù¾Ý×¢½âÌæÄã×Ô¶¯Éú³ÉÁË!Ö»²»¹ýÕâÖÖÉú³ÉµÄ´úÂë±ÈÃ÷»Î»ÎµÄʹÓÃnew³õʼ»¯µÄ·½·¨¸ü¼Ó¸´ÔÓһЩ¡£

Dagger2 ¿ª·¢²½Öè

°Ñ´óÏó×°±ùÏäÒ»¹²·Ö¼¸²½£º

×îºó£¬Dagger»á¸ù¾ÝÉÏÃæµÄÄÚÈݺÍ×îºóµÄ@Component½Ó¿ÚÉú³ÉÒ»¸öDaggerXXXComponentµÄÀàÐÍ£¬Ê¹ÓÃÕâ¸öÀàÐÍÀ´ÊµÏÖ×¢Èë¡£ÉÏÃæµÄ1µ½3²½¿ÉÒÔÀí½âΪÒÀÀµµÄÅäÖá£×îºóµÄXXXComponent´úÌæ¹ÅÀϵÄReflect·½Ê½ÊµÏÖ×¢Èë¡£

µÚÒ»²½µÄ@InjectÐÞÊεĹ¹Ô캯ÊýºÍ`@Module`µÄ`provideXXX`·½·¨¶þÕß¿ÉÒÔÊ¡ÂÔÒ»¸ö¡£

Dagger¿ÉÒÔ¸ù¾ÝÆäÖеÄÈÎÒâÒ»ÖÖÅäÖô´½¨ÒÀÀµµÄ¶ÔÏó¡£¶¼Ð´ÉϵÈÓÚÓÐÁËË«±£ÏÕ¡£

ÉÏÎÄÌáµ½¹ý¶à´Î¡£Dagger 2À÷º¦µÄµØ·½¾ÍÔÚÓÚÕâ¸ö¿âÍêÈ«²»Ó÷´É䣬¶øÊÇÓÃÔÚ±àÒëÆÚÉú³É´úÂëµÄ·½Ê½ÊµÏÖµÄÒÀÀµ×¢Èë¡£Õâ¸öÌØµãµ¼ÖÂÔÚAndroid StudioÅäÖõÄʱºòÐèÒª×öһЩ¶îÍâµÄ¹¤×÷¡£

ÕâÀï¼ÙÉèÄãÒѾ­´´½¨ÁËÒ»¸öеÄAndroidÓ¦ÓÃÏîÄ¿¡£ÏÂÃæ´ò¿ªbuild.gradleÎļþ£¬ÎÒÃÇÒ»²½Ò»²½µÄÀ´Íê³ÉDagger2µÄÅäÖá£

3. Android StudioµÄÅäÖÃ

µÚÒ»²½

µÚ¶þ²½

µÚÈý²½

×îºó£¬Í¬²½Gradle¡£

ʹÓÃDagger 2

ÏÂÃæ¾ÍÊÇDaggerÒ»Õ¹ÉíÊÖµÄʱºòÁË¡£

Ê×ÏÈ£¬ÎÒÃÇÒѾ­ÓÐÎò¿ÕºÍ½ð¹¿°ôÁË¡£´úÂëÈçÏ£º

Îò¿Õ£º

½ð¹¿°ô£º

Îò¿Õ¶Ô½ð¹¿°ôÓÐÒÀÀµ£¬ËùÒԽ𹿰ôÊôÐÔÓÐ@Inject×¢½âÐÞÊΡ£

ÒòΪÁ½¸öÀà¶¼ÐèÒªDagger´´½¨£¬ËùÒÔÔÚ¹¹Ô캯ÊýÉ϶¼ÓÐ@Inject×¢½â¡£

µÚ¶þ²½ ´´½¨@ModuleÀà

´´½¨@Module×¢½âµÄÀ࣬²¢ÔÚÆäÖÐÌí¼Ó@Provides×¢½âÐÞÊεķ½·¨¡£ÕâЩ·½·¨´´½¨±»ÒÀÀµµÄ¶ÔÏó¡£

@Singleton×¢½â±íÃ÷£¬Õâ¸ö±»ÒÀÀµµÄ¶ÔÏóÔÚÓ¦ÓõÄÉúÃüÖÜÆÚÀïÖ»ÓÐÒ»¸öʵÀý¡£

Õâ¸öÀïµÄ@Provides·½·¨ºÍǰһ²½Ëµµ½µÄ@Inject×¢½âµÄ¹¹Ô캯ÊýÁ½¸ö¿ÉÒÔֻдһ¸ö¡£

µÚÈý²½ @Component½Ó¿Ú£¬Á¬½Ó@ModuleºÍ@Inject

@ModuleºÍ@Provides·½·¨ÌṩÁ˱»ÒÀÀµµÄ¶ÔÏó¡£@InjectÔÚ@Component½Ó¿Ú³öÏֵĵط½ÔòÊÇÖ¸Ã÷ÁËÐèҪעÈëµÄµØ·½(Ò»°ãÊÇÒ»¸öfield)¡£@Component½Ó¿Ú¾ÍÊÇÓÃÀ´°ÑËûÃÇÁ¬½ÓÆðÀ´µÄ¡£

ÆäÖÐinject()·½·¨ÀïʹÓõĶÔÏ󣬾ÍÊǰüº¬@InjectµÄfieldµÄÐèҪעÈëµÄ¶ÔÏó¡£

ÔÚÕâ¸ö½Ó¿ÚÖÐÒ²¿ÉÒÔ²»ÓÃinject()·½·¨£¬¶øÊ¹ÓÃprovideXXX()·½·¨ºóÃæ»áÓиü¶à½éÉÜ¡£

×¢Ò⣺@Component½Ó¿ÚÒ»¶¨ÒªÔÚÖ±½ÓÖÐÖ¸Ã÷@ModuleÀàÐÍ

µÚËIJ½ ʹÓÃ@Component½Ó¿Ú»ñÈ¡¶ÔÏó

¾­¹ýÇ°ÃæµÄ²½Ö裬ÒÀÀµºÍ±»ÒÀÀµ¶ÔÏó¹ØÏµ¶¼ÒѾ­ÅäÖúÃÁË¡£ÏÂÃæ¾ÍÀ´»ñÈ¡±»ÒÀÀµ¶ÔÏóÀ´×¢ÈëÒÀÀµ¶ÔÏó¡£

Ê×ÏÈÖ÷Òªµ½ÊôÐÔ@Inject Wukong wukong;ÒѾ­ÔÚMainActivity ÉùÃ÷ÁË¡£ÕâÀï±íÃ÷Ò»¸öÒÀÀµ¹ØÏµ£ºÕâ¸öactivityÒÀÀµÓÚÎò¿Õ£¬²¢×¼±¸×¢ÈëÎò¿Õ¶ÔÏó¡£

Dagger2»áÔÚ±àÒëÆ÷×Ô¶¯Éú³ÉÒÀÀµ×¢ÈëµÄ´úÂ룬ËùÒÔÔÚÌí¼ÓÉÏÃæµÄ´úÂë֮ǰÐèÒª±àÒëһϡ£DaggerXiYouComponent¾ÍÊÇDagger¸ù¾ÝÎÒÃǵÄXiYouModuleÀàÉú³ÉµÄ´úÂë¡£

ÔÚÕâÒ»²½¸øDaggerXiYouComponentµÄbuilderÌí¼ÓXiYouModuleµÄʵÀý¡£Èç¹ûÕâ¸öModuleÖ»ÐèÒªÓõ½Î޲ι¹Ô캯ÊýµÄ»°¿ÉÒÔÓÃÒ»ÖÖÊ¡ÂÔÓ÷¨£ºcreate()·½·¨¡£¿ÉÒÔ¼òдΪ£º

Component½Ó¿ÚµÄ¶ÔÏóµ÷ÓÃinject(this)·½·¨Ö®ºó×¢Èë¼´Íê³É¡£ËùÒÔ¿ÉÒÔÖ±½ÓʹÓÃ@Inject Wukong wukong;ÊôÐÔÀ´µ÷Ó÷½·¨£ºwelcomeTextView.setText(wukong.useJinGuBang());×îºóÔÚactivityÖÐÏÔʾ·½·¨·µ»ØµÄÎÄ×Ö¡£

ÔËÐдúÂ룬¿´¿´½á¹û°É¡£

½áÂÛ

ÒÔÉÏÄÚÈÝ¿ÉÒÔ¸ÅÀ¨Îª£ºÊ²Ã´±»ÒÀÀµ£¬¾Í°Ñʲô·ÅÔÚ@ModuleÀàÀï(»òÕßʲô±»ÒÀÀµ£¬¾Í¸øÊ²Ã´Ìí¼Ó@InjectµÄÎ޲ι¹Ô캯Êý)¡£Ê²Ã´ÓÐÒÀÀµ(@InjectÊôÐÔ)£¬¾Í°Ñʲô·ÅÔÚ@Component½Ó¿ÚµÄinject()·½·¨²ÎÊýÀï¡£(»òÕßÓÐʲô@InjectÊôÐÔ£¬¾ÍÔÚ@Component½Ó¿ÚÀïprovideʲô¶ÔÏó)¡£Õâ¸ö¸ÅÀ¨²»Ò»¶¨ÑÏÃÜ£¬µ«ÊÇ»ù±¾Ó÷¨È«²¿°üÀ¨ÁË¡£

ÒÀÀµ×¢ÈëÊǺÜÓÐÓõġ£ÒÔÉϵÄÄÚÈÝÖ»ÊÇDagger2ÒÀÀµ×¢ÈëµÄÒ»²¿·Ö¡£¸÷λ¶ÁÕß»¹ÐèÒª¸ù¾Ý¹Ù·½Îĵµ¶à¼ÓÁ·Ï°²ÅÄܸüºÃµÄÀí½âÒÀÀµ×¢ÈëºÍDaggerµÄ¸÷ÖÖÓ÷¨¡£

   
1718 ´Îä¯ÀÀ       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ÄÚºËÇý¶¯
°¬Ä¬Éú ǶÈëʽÈí¼þ¼Ü¹¹Éè¼Æ
Î÷ÃÅ×Ó Ç¶Èëʽ¼Ü¹¹Éè¼Æ