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

1Ôª 10Ôª 50Ôª





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



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Modeler   Code  
»áÔ±   
 
   
 
 
     
   
 ¶©ÔÄ
  ¾èÖú
ÎÒµÄ Android ¿ª·¢ÊµÕ½¾­Ñé×ܽá
 
À´Ô´£º¼òÊé  ·¢²¼ÓÚ£º 2016-11-18
  2025  次浏览      27
 

ÒÔǰһֱÏëдһƪ×ܽá Android ¿ª·¢¾­ÑéµÄÎÄÕ£¬¹À¼Æµ±Ê±µÄÎÒ»¹´ï²»µ½Ä³ÖÖˮƽ£¬ËùÒÔ˼·¸ú²»ÉÏ£¬Ï±ÊÓÖ×½½ó¼ûÖâ¡£½üÈÕ£¬Ë¼Â·½ÏΪÃ÷ÀÊ£¬ÓÚÊÇÖØÐÂ²ÙÆð¼üÅÌ¿ªÊ¼Âë×ÖÒ»·¬¡£ÏÈÉùÃ÷һϹþ£¬±¾È˲»ÊǴ󳧵ijÌÐòÔ³¡£È¥Äê±Ïҵǰ£¬¾ÍÒ»Ö±ÔÚµ±Ç°´´ÒµÐ¡ÍŶӴÓÊÂ×Ô¼ºÈȰ®µÄ´òÂëÊÂÒµÖÁ½ñ¡£ÏÂÃæ×ܽáÊǽ¨Á¢ÔÚÎÒµ±Ç°µÄ¼¼ÊõˮƽºÍÈÏÖªÉÏдµÄ£¬ÈçÓв»Í¬¿´·¨»¶Ó­ÁôÏÂÆÀÂÛ»¥ÏཻÁ÷¡£

1.Àí½â³éÏ󣬷â×°±ä»¯

Ŀǰ Android ƽ̨ÉϾø´ó²¿·Ö¿ª·¢¶¼ÊÇÓÃ×Å Java £¬¶ø¸ú Java ÕâÑùÒ»ÃÅÃæÏò¶ÔÏóµÄÓïÑÔ´ò½»µÀ£¬²»ÃâÒª´¥Åöµ½ ³éÏó ºÍ ·â×° µÄ¸ÅÄî¡£ÎÒÉí±ß½Ó´¥¹ýµÄһЩ¿ª·¢Õߣ¬ÓÐÒ»²¿·Ö»¹¶ÔÕâЩ¸ÅÄîÍ£ÁôÔÚдһ¸ö³éÏóÀà¡¢½Ó¿Ú¡¢»òÕßÒ»¸ö·½·¨£¨»ò³éÏó·½·¨£©¡£ÖÁÓÚΪʲô£¬ÎÒ²»´óÇå³þÊÇËûÃDZí´ï²»³öÀ´£¬»¹ÊDz»Àí½â¡£ÏÂÃæÎÒÒ²²»¸ß̸À«ÂÛ£¬Ö±½Ó¾ÙÀý×ÓÀ´½âÊÍÎÒËùÀí½âµÄ³éÏó¡£

//Activity ¼äʹÓà Intent ´«µÝÊý¾ÝµÄÁ½ÖÖд·¨ ÏÂÃæ¾ùÊÇα´úÂëÐÎʽ£¬
ÇëºöÂÔһЩϸ½Ú

//д·¨Ò»

//SrcActivity ´«µÝÊý¾Ý¸ø DestActivity
Intent intent = new Intent(this,DestActivity.class);
intent.putExtra("param", "clock");
SrcActivity.startActivity(intent);

//DestActivity »ñÈ¡ SrcActivity ´«µÝ¹ýÀ´µÄÊý¾Ý
String param = getIntent.getStringExtra("param");

//д·¨¶þ

//SrcActivity ´«µÝÊý¾Ý¸ø DestActivity
Intent intent = new Intent(this,DestActivity.class);
intent.putExtra(DestActivity.EXTRA_PARAM, "clock");
SrcActivity.startActivity(intent);

//DestActivity »ñÈ¡ SrcActivity ´«µÝ¹ýÀ´µÄÊý¾Ý
public final static String EXTRA_PARAM = "param";
String param = getIntent.getStringExtra(EXTRA_PARAM);

д·¨Ò»£¬´æÔÚµÄÎÊÌâÊÇ£¬Èç¹û SrcActivity ºÍ DestActivity Äĸö°Ñ "param" ´ò´í³É "para" »òÕß "paran" £¬´«µÝµÄÊý¾Ý¶¼ÎÞ·¨³É¹¦½ÓÊÕµ½¡£¶øÐ´·¨¶þÔò²»»á³öÏÖ´ËÀàÎÊÌ⣬ÒòΪÁ½¸ö Activity Ö®¼ä´«µÝÊý¾ÝÖ»ÐèÒªÖªµÀ EXTRA_PARAM ±äÁ¿¼´¿É£¬ÖÁÓÚ EXTRA_PARAM ±äÁ¿µ½µ×ÊÇ "param" ¡¢ "para" ¡¢"paran" ÕâÒ»µã²¢²»ÐèÒª¹ØÐÄ£¬Õâ¾ÍÊÇÒ»ÖÖ¶Ô¿ÉÄÜ·¢Éú±ä»¯µÄµØ·½½øÐгéÏó·â×°µÄÌåÏÖ£¬ËüËù´øÀ´µÄºÃ´¦¾ÍÊǽµµÍÊÖ¶¶³ö´íµÄ¸ÅÂÊ£¬Í¬Ê±·½±ãÎÒÃǽøÐÐÐ޸ġ£

»ùÓÚ³éÏóºÍ·â×°£¬Java ±¾ÉíºÜ¶à API ÔÚÉè¼ÆÉϾÍÓÐÕâÑùµÄÌåÏÖ£¬Èç Collections ÖеĺܶàÅÅÐò·½·¨£ºCollectionsÖеÄÅÅÐòAPI

ÕâЩ·½·¨¶¼ÊÇ»ùÓÚ List Õâ¸ö³éÏóµÄÁбí½Ó¿Ú½øÐÐÅÅÐò£¬ÖÁÓÚÕâÊÇÒ»¸öÓÃʲôÑùµÄÊý¾Ý½á¹¹ÊµÏÖ List£¨ArrayList »¹ÊÇ LinkedList£©£¬ÅÅÐò·½·¨±¾Éí²¢²»¹ØÐÄ¡£¿´£¬ÊDz»ÊÇÌåÏÖÁË JDK µÄÉè¼ÆÈËÔ±µÄÒ»ÖÖ³éÏó±à³ÌµÄ˼ά£¬ÒòΪ List µÄ¾ßÌåʵÏÖ¿ÉÄÜÓÐǧÍòÖÖ£¬Èç¹ûÿһÀà List ¶¼ÒªÐ´Ò»Ì×ÅÅÐò·½·¨£¬¹À¼ÆÒª¿ÞϹÁË¡£

С½á£º°ÑÈÝÒ׳öÏֱ仯µÄ²¿·Ö½øÐгéÏ󣬾ÍÊǶԱ仯µÄÒ»ÖÖ·â×°¡£

2.Ñ¡ºÃ"³µÂÖ"

Ò»¸öÏîÄ¿µÄ¿ª·¢£¬ÎÒÃDz»¿ÉÄÜÒ»ÇдÓ0×öÆð£¬Èç¹ûÕæÊÇÕâÑù£¬ÄÇͬÑùÒª¿ÞϹ¡£Òò´Ë£¬ÉÆÓÚ½èÓÃÒѾ­×öºÃµÄ "³µÂÖ" ·Ç³£ÖØÒª£¬È磺

ÍøÂç·ÃÎÊ¿ò¼Ü£ºokhttp¡¢retrofit¡¢android-async-http¡¢volley

ͼƬ¼ÓÔØ¿ò¼Ü£ºAndroid-Universal-Image-Loader¡¢Glide¡¢Fresco¡¢Picasso

»º´æ¿ò¼Ü£ºDiskLruCache¡¢ Robospice

Json½âÎö¿ò¼Ü£ºGson¡¢Fastjson¡¢Jackson

ʼþ×ÜÏߣºEventBus¡¢Otto

ORM¿ò¼Ü£ºGreenDAO¡¢Litepal

»¹ÓÐÆäËû¸÷ÖÖ¸÷Ñù¿ªÔ´µÄ×Ô¶¨Òå¿Ø¼þ¡¢¶¯»­µÈ¡£³ýÁËÒÔÉÏÌáµ½µÄ¿ªÔ´¿ò¼Ü£¬Ò²°üÀ¨Ò»Ð©²»¿ªÔ´µÄSDK

Êý¾Ýͳ¼Æ£ºÓÑÃËͳ¼Æ£¬°Ù¶Èͳ¼Æ...

±¼À£ËѼ¯£ºÌÚѶbugly¡¢bugtags...

ÔÆ´æ´¢£ºÆßÅ£...

¼´Ê¹Í¨Ñ¶£º»·ÐÅ¡¢ÈÚÔÆ¡¢°¢Àï°Ù´¨...

ÍÆËÍ£ºÐ¡Ã×ÍÆËÍ¡¢ÌÚÑ¶ÍÆËÍ¡¢°Ù¶ÈÍÆËÍ...

°²È«¼Ó¹Ì£º360¼Ó¹Ì±¦¡¢°®¼ÓÃÜ...

Ò»°ãÇé¿öÏ£¬ÎÒÔÚÑ¡ÔñÊÇ·ñÒýÈëһЩ¿ªÔ´¿ò¼ÜÖ÷Òª»ùÓÚÒÔϼ¸¸öÒòËØ£º

½èÖúËÑË÷ÒýÇæ£¬Èç¹ûÍøÉÏÓÐÒ»´ó²¨×ÊÁÏ£¬ËµÃ÷ʹÓõÄÈ˶࣬³öÁËÎÊÌâºÃÕÒ½â¾ö·½°¸£»µ±È»£¬Èç¹ûÆÕ±é³öÏÖ²îÆÀ£¬¾Í¿ÉÒÔÖ±½ÓPassµôÁË

¿´¿ò¼ÜµÄ×÷Õß»òÍŶӣ¬Èç JakeWharton´óÉñ¡¢FacebookÍŶӵȡ£´óÉñºÍ´ó¹«Ë¾³öÆ·µÄ¿ò¼ÜÖÊÁ¿Ïà¶Ô½Ï¸ß£¬¿É±£Ö¤ºóÐøµÄά»¤ºÍbugÐÞ¸´£¬²»ÈÝÒ×ÀÃβ£»

¹Ø×¢¿ªÔ´ÏîÄ¿µÄ commitÃܶȣ¬issueµÄÌá½»¡¢»Ø¸´¡¢¹Ø±ÕÊýÁ¿£¬watchÊý£¬startÊý£¬forkÊýµÈ¡£ÏñÄÇÖÖ¸ö»ù±¾²»ÔõôÌá½»´úÂë¡¢ÌáissueÓÖ²»Ôõô»Ø¸´ºÍÐÞ¸´µÄÏîÄ¿£¬×îºÃ¾Ípassµô£»

Õë¶Ô²»¿ªÔ´SDKµÄÑ¡Ôñ£¬Ò²Ö÷Òª»ùÓÚÒÔϼ¸µãÈ¥¿¼ÂÇ£º

½èÖúËÑË÷ÒýÇæ£¬²éÃ÷¿Ú±®£»

ºÜ¶àµÚÈý·½SDKµÄ¹ÙÍøÊ×Ò³¶¼»á¸æËßÄ㣬¶àÉÙÓ¦ÓÃÒѾ­½ÓÈëÁË´ËSDK£¬Èç¹ûÄã¿´µ½Óв»ÉÙÖªÃûÓ¦ÓÃÔÚÉÏÃæ£¬ÄÇÕâ¸öSDK¿ÉÒÔ¿¼Âdz¢ÊÔÒ»ÏÂÁË¡£ÖîÈ磬ÓÑÃ˹ÙÍø£º

²é¿´SDKʹÓÃÎĵµ¡¢ËüÃǵĿª·¢ÕßÉçÇø¡¢ÁªÏµ¿Í·þ¡£ºÃµÄSDK£¬Ê¹ÓÃÎĵµ¿Ï¶¨»áÏêϸָÒýÄã¡£³öÁËÎÊÌ⣬ÉÏ¿ª·¢ÕßÉçÇøÌáÎÊ£¬ËûÃǵĿª·¢¹¤³ÌʦҲ»áÉçÇøÉϻشð¡£ÊµÔÚ²»ÐÐÖ»ÄÜÁªÏµ¿Í·þ£¬Èç¹û¿Í·þµÄ̬¶È¶¼ÈÃÄ㲻ˬ£¬ÄǾͿÉÒÔ¿¼ÂÇ»»±ð¼ÒµÄSDKÁË¡£

С½á£ºÑ¡ºÃ "³µÂÖ" £¬Ê°빦±¶

3.³éÏóÒÀÀµµÚÈý·½¿ò¼Ü

ΪʲôҪ³éÏóÒÀÀµÓÚµÚÈý·½¿ò¼ÜÄØ£¿ÕâÀïºÍµÚ1µãÊÇ»¥ÏàÕÕÓ¦µÄ£¬¾ÍÊǽµµÍÎÒÃǶԾßÌåij¸ö¿ò¼ÜµÄÒÀÀµÐÔ£¬´Ó¶ø·½±ãÎÒÃÇ¿ìËÙÇл»µ½²»Í¬µÄ¿ò¼ÜÈ¥¡£Ëµµ½ÕâÀÄã¿ÉÄܾõµÃºÜ³éÏó£¬ÄÇÎÒÖ±½Ó¾ÙÒ»¸ö¼ÓÔØÍ¼Æ¬µÄÀý×ÓºÃÁË¡£

¼ÙÉèÄ㵱ǰΪÏîÄ¿ÒýÈëÒ»¸ö¼ÓÔØÍ¼Æ¬µÄ¿ò¼Ü ¡ª¡ª Android-Universal-Image-Loader£¬×î¼òµ¥µÄ×ö·¨¾ÍÊǼÓÈëÏàÓ¦µÄÒÀÀµ°üºó£¬ÔÚÈκÎÐèÒª¼ÓÔØÍ¼Æ¬µÄµØ·½Ð´ÉÏÏÂÃæÕâÑùµÄ´úÂë¶Î¡£

ImageLoader imageLoader = ImageLoader.getInstance(); 
// Get singleton instance
// Load image, decode it to Bitmap and display Bitmap in ImageView
(or any other view
// which implements ImageAware interface)
imageLoader.displayImage(imageUri, imageView);
// Load image, decode it to Bitmap and return Bitmap to callback
imageLoader.loadImage(imageUri, new SimpleImageLoadingListener() {
@Override
public void onLoadingComplete(String imageUri, View view,
Bitmap loadedImage) {
// Do whatever you want with Bitmap
}
});

ÕâÖÖ×ö·¨×î¼òµ¥´Ö±©£¬µ«ÊÇ´øÀ´µÄÎÊÌâÒ²×îÑÏÖØµÄ¡£Èç¹ûÎÒÓм¸Ê®ÉϰٸöµØ·½¶¼Õâôд£¬¶øÔÚijһÌ죬ÎÒÌý˵Facebook³öÁ˸öÉñÆ÷ Fresco£¬ÏëÒª»»µô Android-Universal-Image-Loader £¬Äã¾Í»á·¢ÏÖÄãÐèҪɥÐIJ¡¿ñµÄÈ¥¸Ä¶¯¼¸Ê®ÉϰٸöµØ·½µÄ´úÂ룬²»½ö¹¤×÷Á¿´ó£¬¶øÇÒ»¹ÈÝÒ׳ö´í¡£Ôì³ÉÕâÑùµÄÔ­Òò£¬¾ÍÔÚÓÚÏîÄ¿ºÍ¼ÓÔØÍ¼Æ¬µÄ¿ò¼ÜÖ®¼äÐγÉÁËÇ¿ñîºÏ£¬¶øÊµ¼ÊÉÏ£¬ÏîÄ¿±¾Éí²»Ó¦¸ÃÖªµÀÎÒ¾ßÌåÓÃÁËÄĸö¼ÓÔØÍ¼Æ¬µÄ¿ò¼Ü¡£

ÕýÈ·µÄ·½Ê½£¬Ó¦¸ÃÊǶԿò¼Ü×öÒ»¸ö³éÏóµÄ·â×°£¬ÒÔÓ¦¶ÔδÀ´·¢ÉúµÄ±ä»¯£¬ÎÒÖ±½Ó¾Ù×Ô¼ºµÄ¿ªÔ´ÏîÄ¿ AndroidAlbum ÖеÄÒ»ÖÖ·â×°×ö·¨ºÃÁË¡£AndroidAlbum

´óÖ´úÂëÈçÏ£º

//1¡¢ÉùÃ÷ ImageLoaderWrapper ½Ó¿Ú£¬¶¨ÒåһЩ³éÏóµÄ¼ÓÔØ½Ó¿Ú·½·¨

public interface ImageLoaderWrapper {

/**
* ÏÔʾ ͼƬ
*
* @param imageView ÏÔʾͼƬµÄImageView
* @param imageFile ͼƬÎļþ
* @param option ÏÔʾ²ÎÊýÉèÖÃ
*/
public void displayImage(ImageView imageView, File imageFile, DisplayOption option);

/**
* ÏÔʾͼƬ
*
* @param imageView ÏÔʾͼƬµÄImageView
* @param imageUrl ͼƬ×ÊÔ´µÄURL
* @param option ÏÔʾ²ÎÊýÉèÖÃ
*/
public void displayImage(ImageView imageView, String imageUrl, DisplayOption option);

/**
* ͼƬ¼ÓÔØ²ÎÊý
*/
public static class DisplayOption {
/**
* ¼ÓÔØÖеÄ×ÊÔ´id
*/
public int loadingResId;
/**
* ¼ÓÔØÊ§°ÜµÄ×ÊÔ´id
*/
public int loadErrorResId;
}
}

// 2¡¢½« UniversalAndroidImageLoader ·â×°³É¼Ì³Ð ImageLoaderWrapper ½Ó¿ÚµÄ UniversalAndroidImageLoader £¬
//ÕâÀï´úÂëÓе㳤£¬¸ÐÐËȤ¿ÉÒԲ鿴ÏîĿԴÂëÖеÄʵÏÖ https://github.com/D-clock/AndroidAlbum

// 3¡¢×öÒ»¸öImageLoaderFactory

public class ImageLoaderFactory {

private static ImageLoaderWrapper sInstance;

private ImageLoaderFactory() {

}

/**
* »ñȡͼƬ¼ÓÔØÆ÷
*
* @return
*/
public static ImageLoaderWrapper getLoader() {
if (sInstance == null) {
synchronized (ImageLoaderFactory.class) {
if (sInstance == null) {
sInstance = new UniversalAndroidImageLoader();//<link>https://github.com/nostra13/Android-Universal-Image-Loader</link>
}
}
}
return sInstance;
}
}

//4¡¢ÔÚËùÓÐÐèÒª¼ÓÔØÍ¼Æ¬µÄµØ·½×÷Èçϵĵ÷ÓÃ

ImageLoaderWrapper loaderWrapper = ImageLoaderFactory.getLoader();
ImageLoaderWrapper.DisplayOption displayOption = new ImageLoaderWrapper.DisplayOption();
displayOption.loadingResId = R.mipmap.img_default;
displayOption.loadErrorResId = R.mipmap.img_error;
loaderWrapper.displayImage(imagview, url, displayOption);

ÕâÑùÒ»À´£¬Çл»¿ò¼ÜËù´øÀ´µÄ´ú¼Û¾Í»á±äµÃºÜС£¬Õâ¾ÍÊDz»Ö±½ÓÒÀÀµÓÚ¿ò¼ÜËù´øÀ´µÄºÃ´¦¡£µ±È»£¬ÒÔÉÏÖ»ÊÇÎұȽϼòµ¥µÄ·â×°£¬ÄãÒ²¿ÉÒÔ½øÐиü¼ÓϸÖµĴ¦Àí¡£

С½á£ºÔ¤Áô±ä¸ü£¬²»Ç¿ñîºÏÓÚµÚÈý·½¿ò¼Ü

4.´Ó MVC µ½ MVP

˵ʵ»°£¬ÔÚû½Ó´¥ MVP µÄ¼Ü¹¹Ö®Ç°£¬Ò»Ö±¶¼ÊÇʹÓà MVC µÄģʽ½øÐпª·¢¡£¶øËæ×ÅÏîĿԽÀ´Ô½´ó£¬Activity»òÕß FragmentÀïÃæ´úÂëÔ½À´Ô½Ó·Ö×£¬¿´µÄʱºòÏëÍ£¬¸ÄµÄʱºòÏëʺ...ÕâÀïÆ²¿ªÆäËû¸÷ÖÖ¸÷ÑùµÄ¼Ü¹¹²»Ì¸£¬Ö»¶Ô±ÈMVC ºÍ MVP ¡£

View£º²¼¾ÖµÄxmlÎļþ

Controller£ºActivity¡¢Fragment¡¢DialogµÈ

Model:Ïà¹ØµÄÒµÎñ²Ù×÷´¦ÀíÊý¾Ý£¨Èç¶ÔÊý¾Ý¿âµÄ²Ù×÷¡¢¶ÔÍøÂçµÈµÄ²Ù×÷¶¼Ó¦¸ÃÔÚModel²ãÀ

Äã»á·¢ÏÖ£¬Èç¹û View ²ãÖ»°üº¬ÁËxmlÎļþ£¬ÄÇÎÒÃÇ Android ÏîÄ¿ÖÐ¶Ô View ²ã¿É×ö²Ù×÷µÄ³Ì¶È²¢²»´ó£¬¶¥¶à¾ÍÊÇÓÃinclude¸´ÓÃһϲ¼¾Ö¡£¶ø Activity µÈ¼òÖ±¾ÍÊÇÒ»¸öÆæÝ⣬ËüËäÈ»¹éÊôÓÚ Controller ²ã£¬µ«Êµ¼ÊÉÏÒ²¸É×Å View ²ãµÄ»î£¨View µÄ³õʼ»¯ºÍÏà¹Ø²Ù×÷¶¼ÊÇÔÚActivityÖУ©¡£¾ÍÊÇÕâÖÖ¼ÈÊÇ View ÓÖÊÇ Controller µÄ½á¹¹£¬Î¥±³Á˵¥Ò»ÔðÈÎÔ­Ôò£¬Ò²Ê¹µÃ Activity µÈ³öÏÖÁËÉÏÊöµÄÓ·Ö×ÎÊÌâ¡£MVP

View£ºActivity¡¢Fragment¡¢Dialog¡¢AdapterµÈ£¬¸Ã²ã²»°üº¬ÈκÎÒµÎñÂß¼­

Presenter£ºÖн飬View Óë Model ²»·¢ÉúÁªÏµ£¬¶¼Í¨¹ý Presenter ´«µÝ

Model:Ïà¹ØµÄÒµÎñ²Ù×÷´¦ÀíÊý¾Ý£¨Èç¶ÔÊý¾Ý¿âµÄ²Ù×÷¡¢¶ÔÍøÂçµÈµÄ²Ù×÷¶¼Ó¦¸ÃÔÚModel²ãÀ

Ïà±È MVC£¬MVPÔÚ²ã´Î»®·ÖÉϸü¼ÓÇåÎúÁË£¬²»»á³öÏÖÒ»ÈËÉí¼æ¶þÖ°µÄÇé¿ö£¨ÓÐЩµ¥Ôª²âÊÔµÄͯЬ£¬»á·¢ÏÖµ¥Ôª²âÊÔÓÃÀý¸üºÃдÁË£©¡£ÔÚ´Ë´¦Äã¿ÉÒÔ¿´µ½ View ºÍ Model Ö®¼äÊÇ»¥²»ÖªµÀ¶Ô·½´æÔڵģ¬ÕâÑùÓ¦¶Ô±ä¸üµÄºÃ´¦¸ü´ó£¬ºÜ¶àʱºò¶¼ÊÇ View ²ãµÄ±ä»¯£¬¶ø Model ²ã·¢ÉúµÄ±ä»¯»áÏà¶Ô½ÏÉÙ£¬×ñÑ­ MVP µÄ½á¹¹¿ª·¢ºó£¬¸ÄÆðÀ´´úÂëÀ´Ò²Ã»ÄÇôµ°ÌÛ¡£

ÕâÀïÒ²Óеط½ÐèҪעÒ⣬ÒòΪ´óÁ¿µÄ½»»¥²Ù×÷¼¯ÖÐÔÚ Presenter ²ãÖУ¬ËùÒÔÐèÒª°ÑÎպà Presenter µÄÁ£¶È£¬Ò»¸ö Activity ¿ÉÒÔ³ÖÓжà¸ö View ºÍ Presenter£¬ÕâÑùÒ²¾Í¿ÉÒԱܿªÒ»¸ö˶´óµÄ View ºÍ Presenter µÄÎÊÌâÁË¡£

ÍÆ¼öÁ½¸ö²»´íµÄ MVP ¼Ü¹¹µÄÏîÄ¿¸ø´ó¼Ò£¬»¹²»Ã÷°×µÄͯЬ£¬¿ÉÒÔ×ÔÐÐÌå»áÒ»ÏÂÆäÉè¼ÆË¼Ï룺

https://github.com/pedrovgs/EffectiveAndroidUI

https://github.com/antoniolg/androidmvp

С½á£ºÈ¥¼ÓÒÔʵ¼ùµÄÀí½â MVP °É

5.¹éµµ´úÂë

°ÑһЩ³£ÓõŤ¾ßÀà»òÒµÎñÁ÷³Ì´úÂë½øÐйéÀàÕûÀí£¬¼ÓÈë×Ô¼ºµÄ´úÂë¿â£¨»¹Ã»ÓÐ×Ô¼º¸öÈË´úÂë²Ö¿âµÄͯЬ¿ÉÒÔ¿¼Âǽ¨Ò»¸öÁË£©¡£Èç¼Ó½âÃÜ¡¢ÅÄÕÕ¡¢²Ã¼ôͼƬ¡¢»ñȡϵͳËùÓÐͼƬµÄ·¾¶¡¢×Ô¶¨ÒåµÄ¿Ø¼þ»ò¶¯»­ÒÔ¼°ÆäÆäËûËûһЩ³£ÓõŤ¾ßÀàµÈ¡£¹éµµÓÐÖúÓÚÌá¸ßÄãµÄ¿ª·¢Ð§ÂÊ£¬ÔÚÓöµ½ÐÂÏîÄ¿µÄʱºòËæÊÖ¼´¿ÉÒýÈëʹÓá£Èç¹ûÄãÏëÒª¸üºÃµÄά»¤×Ô¼ºµÄ´úÂë¿â£¬²»·ÁÔÚ²»Ð¹Â¶¹«Ë¾»úÃܵÄǰÌáÏ£¬°ÑÕâ¸ö˽ÈË´úÂë¿â¼ÓÉÏÏêϸÎĵµ¸ø¿ªÔ´³öÈ¥¡£ ÕâÑùÄܹ»ÎüÒý¸ü¶à¿ª·¢ÕßÀ´Ê¹ÓÃÕâЩ´úÂ룬Ҳ¿ÉÒÔ»ñµÃÏàÓ¦µÄbug·´À¡£¬ÒÔ±ãÓÚ×ÅÊÖ¶¨Î»ÐÞ¸´ÎÊÌ⣬ÔöÇ¿Õâ¸ö²Ö¿â´úÂëµÄÎȶ¨ÐÔ¡£

С½á£ººÏÀí¹éµµ´úÂ룬¿ÉÒԵϰ£¬¼ÓÒÔ¿ªÔ´Î¬»¤

6.ÐÔÄÜÓÅ»¯

¹ØÓÚÐÔÄÜÓÅ»¯µÄÎÊÌ⣬´óÌå¶¼»¹ÊǹØ×¢ÄǼ¸¸ö·½Ã棺ÄÚ´æ¡¢CPU¡¢ºÄµç¡¢¿¨¶Ù¡¢äÖȾ¡¢½ø³Ì´æ»îÂʵȡ£¶ÔÓÚÕâЩµØ·½µÄÐÔÄÜÓÅ»¯Ë¼Â·ºÍ·ÖÎö·½·¨£¬ÍøÂçÉÏÒѾ­Óкܶà´ð°¸ÁË£¬´Ë´¦²»×ö׸Êö¡£ÎÒÖ»Ïë˵ÒÔϼ¸µã£º

²»Òª¹ýÔçµÄ×öÐÔÄÜÓÅ»¯£¬appÏÈÇóÄÜÓÃÔÙÇóºÃÓá£ÔÚÐèÇó¶¼»¹Ã»Íê³ÉµÄʱºò°Ñ´óÁ¿Ê±¼ä»¨ÔÚÓÅ»¯ÉÏÊDZ¾Ä©µ¹Öõģ»

ÓÅ»¯ÒªÓÃʵ¼ÊÊý¾Ý˵»°£¬½èÖú²âÊÔ¹¤¾ß½øÐмì²â£¨Èç£ºÍøÒ×µÄEmmagee¡¢ÌÚѶµÄGTºÍAPT£¬¿Æ´óѶ·ÉµÄiTest£¬GoogleµÄBattery Historian£©¡£±Ï¾¹ÀϰåÎÊÄã±ÈÒÔǰºÄµç½µµÍ¶àÉÙ£¬×ܲ»Äܻش𽵵ÍÁËһЩ°É???

Èκβ»ÒÔ¼õµÍÐÔÄÜËðºÄÀ´×ö±£»îµÄÊֶΣ¬¶¼ÊÇË£Á÷Ã¥¡£

С½á£ººÏÀíÓÅ»¯£¬Êý¾ÝÁ¿»¯

7.ʵ¼ùм¼Êõ

Rxjava¡¢React Native¡¢Kotlin...¿ªÊ¼ÐËÆðºó£¬Éí±ßÓкܶ࿪·¢Õß»á¸ú·çÖ±ÉÏ¡£Ñ§Ï°Ð¼¼ÊõµÄ¾«ÉñÊǷdz£ÖµµÃ¹ÄÀøµÄ£¬µ«Ã»Óо­¹ýÒ»¶Îʱ¼äʵ¼ù¹Û²ì£¬¾ÍÉÃ×Ô°Ñм¼ÊõÒýÈëµ½ÉÌÒµÏîÄ¿ÖУ¬ÔòÓÐʧÍ×µ±¡£¶ÔÓÚ´ó¹«Ë¾µÄÍŶÓÀ´Ëµ£¬»áÓÐרÃÅÍŶӻòÏîĿȥÑо¿ÕâЩÐÂÐ˼¼Êõ£¬ÒÔÈ·¶¨ÊÇ·ñÔÚ×Ô¼ºµÄ²úÆ·Ïß¿ª·¢ÖÐÒýÈë¡£µ«×÷ΪС¹«Ë¾£¬ÊDz»ÊǾÍÒâζ×ÅûÓÐʵ¼ù³¢ÊÔм¼ÊõµÄ»ú»áÄØ£¿²¢²»ÊÇ£¡¸öÈËÓÐÒÔϼ¸µã½¨Ò飺

½èÖúËÑË÷ÒýÇæ¡£¿´´ËÏî¼¼Êõ¿Ó¶à²»¶à£¬¿Ú±®²»´íµ«ÊǿӶàµÄ»°£¬Ôò˵Ã÷µ±Ç°¼¼Êõ²»³ÉÊ죬¿ÉÒÔÄÍÐĵȴý¸üУ»

¿¼ÂÇѧϰ³É±¾¡£Ñ§Ï°³É±¾Ì«´óÇÒ²»ÈÝÒ×Õе½¶®Õâ·½ÃæµÄ¿ª·¢ÕßµÄÇé¿öÏ£¬½¨Òé²»ÒªÒýÈë¸Ã¼¼Êõ£»

¸ß·ÂÒ»¸öÏîÄ¿²¢¿ªÔ´¡£Èç¹ûÄãÏëÒýÈë React Native ×öÉÌÒµ¿ª·¢£¬×îºÃÏȸ߷ÂʵÏÖÒ»¸öÓ¦ÓÃÈ»ºó½«Æä¿ªÔ´¡£ÕâÑùһЩ¶Ô RN ¸ÐÐËȤµÄ¿ª·¢Õß»áÔËÐÐÄãµÄ´úÂë²¢·´À¡ bug ¸øÄ㣬ÓÐÖúÓÚÄãÖªµÀһЩм¼ÊõµÄ¿Ó£¬²¢Ñ°ÕÒÏàÓ¦µÄ½â¾ö·½°¸£¬×îÖÕÈ·¶¨ÊÇ·ñÒýÈë¸Ã¼¼Êõ£»

½µµÍÈëÃÅÃż÷¡£Êµ¼ùм¼ÊõµÄ¹ý³Ì¾¡Á¿¼ÓÒÔÏêϸµÄÎĵµ¼Ç¼£¬Õâ»áÓÐÖúÓÚ½µµÍÏîÄ¿×éÆäËûͬʶÔм¼ÊõµÄÈëÃÅÃż÷£¬¿ÉÒԵϰ£¬Ò²½«Ñ§Ï°Îĵµ¿ªÔ´£¬»ñµÃ¸ü¶à¿ª·¢Õß¶Ô´Ë·ÝÎĵµµÄ·´À¡£¬Ò²¿É¾ÀÕýһЩÎĵµÖеĴíÎó£»

½áºÏʵ¼ÊÒµÎñ¡£ËùÓÐм¼ÊõµÄÒýÈë¶¼Òª¿¼ÂÇÊÇ·ñ·ûºÏµ±ÏµÄÒµÎñÐèÇó£¬ÎÒÌý¹ýÓÐЩ³ÌÐòÔ³ÏëÒýÈëм¼ÊõµÄÔ­ÒòÊÇÒòΪ¾õµÃÕâÖÖ¼¼ÊõºÜ¿á£¬ÍøÉÏ˵ºÜºÃÓ㬺Üɶɶɶ...×Ô¼ºÍêȫûŪ¹ý¾ÍÈËÔÆÒàÔÆ¡£ÓÐʱºòºÃÎÞÓ¸Ð¾õÔÚ»áÓÃһЩ¼¼Êõ¾ÍÏñÔÚìż¼Ò»Ñù£»

С½á£º¿Õ̸Îó¹ú£¬Êµ¸ÉÐ˰î

8.UML

UML£¬Ñ±·þ´úÂëºÍÁ˽âÏîÄ¿½á¹¹µÄÀûÆ÷£¬±¾ÈËÒ²ÔÚѧϰºÍÌåÑéÆäºÃ´¦µÄ·;ÉÏ¡£²»¹ÜÓöµ½´óСÏîÄ¿£¬ÓÐÁËËü£¬¿ÉÒÔ¸üºÃµÄÀíÇåһЩÂöÂç½á¹¹¡£¶Ô¸¶¾ÉµÄÅÓ´óÏîÄ¿´úÂ룬»òÕßÓÐÖ¾ÔĶÁijЩ¿ªÔ´ÏîÄ¿´úÂëµÄ¿ª·¢Õߣ¬¾ø¶ÔÊǾӼұر¸¡£

С½á£º¹¤ÓûÉÆÆäÊ£¬±ØÏÈÀûÆäÆ÷

9.×ÔÔì"³µÂÖ"

Ç°Ãæ 2 Ìáµ½£¬ÏîÄ¿²»¿ÉÄÜ´Ó0¿ªÊ¼£¬ÊÇÐèÒªÒýÈëºÜ¶àµÚÈý·½¿ò¼ÜµÄ¡£ÕâÀï²¢²»Óë 2 »¥ÏàÎ¥±³£¬¶øÊǽ¨ÒéÓÐÏëÌá¸ß¼¼Êõ±Æ¸ñµÄ¿ª·¢Õߣ¬¿ÉÒÔÔÚ¿ÕϾʱ¼äÈ¥±àÂëʵÏÖÒ»¸ö¿ò¼Ü¡£Èç¹ûÄã¶ÔÍøÂç·ÃÎÊ¡¢Í¼Æ¬¼ÓÔØ·½ÃæºÜÓÐÑо¿¼û½â£¬²»·Á°ÑÕâЩÄÔº£ÀïµÄ˼ÏëÂäʵ³É¾ßÌåµÄ´úÂë¡£Ò²ÐíÄã»á·¢ÏÖ£¬Ä㶯ÊÖȥʵ¼ùµÄʱºò£¬¿¼ÂǵĶ«Î÷»á¶àµÃ¶à£¬×Ô¼º×îÖյõ½µÄÒ²»á¸ü¶à¡££¨Ìرð½¨ÒéÄÇЩ¿´¹ýºÜ¶à¿ªÔ´´úÂ룬ÓÖÖÁ½ñδ×Ô¼º¶¯ÊÖ×Ôߣһ·¢µÄ£©

С½á£º²»ÒªÍ£ÁôÔÚ api µ÷ÓõIJãÃæ

10.À©´ó¼¼ÊõȦ

ÓпÕÓÖ¾­¼ÃÄÜÁ¦³ÐÊÜµÃÆðµÄʱºò£¬²»·ÁÈ¥²Î¼ÓһЩ×Ô¼º¸ÐÐËȤµÄ¼¼Êõ½»Á÷»á¡£ºÜ¶à¶¼ÓдóÅ£ÉĮ̈Ñݽ²£¬ÌýÌýÈ˼ҵĽâ¾ö·½°¸£¬ÍØ¿íÒ»ÏÂ×Ô¼º¿´ÎÊÌâµÄ˼·£¬Ò²¿ÉÒÔ¶à²Î¼ÓһЩº¬½ðÁ¿¸ßµÄÏßÉϻ¡£ÎÒÓÐͦ¶à¿ª·¢ÕßÅóÓÑ£¬¾ÍÊDzμӻµÄʱºòÈÏʶµÄ£¬ÓÐʱºòÓöµ½Ò»Ð©¼¼ÊõÎÊÌ⣬»¹»á»¥Ïà̽ÌÖ½»»»Ò»Ï½â¾ö˼·¡£Í¦Ô޵ģ¡

С½á£ºÍØ¿í¼¼ÊõÊÓÒ°

11.д²©¿Í×ܽá

Õâ¸ö¿ÉÄÜûʲôºÃ˵µÄ£¬´ó¼Ò¿´Á˱êÌâ¾Í¶®ÁË¡£Ëü×î´óµÄºÃ´¦ÔÚÓÚ£º

ϵͳ»¯¼Ç¼×Ô¼ºµÄ½â¾ö·½°¸£»

·½±ãÈÕºó×Ô¼º»Ø¹Ë£»

ÓÐÎÊÌâÒ²»áÓжÁÕ߯ÀÂÛ·´À¡£¬´Ù½ø¼¼Êõ½»Á÷£»

ÔöÇ¿×Ô¼ºÊéÃæ±í´ïÄÜÁ¦£»

С½á£ºÈÏÕæ×ܽᣬ²»¶ÏÍêÉÆ

12.ÕÒ¸ö¶ÔÏó

³ÌÐòÔ³²»ÒªÀÏÊǶÔ×ŵçÄÔ£¬¸Ï½ôÕÒ¸ö¶ÔÏóÌáÉýÒ»ÏÂÐÒ¸£¸Ð¡£¾Ý˵ÐÒ¸£¸Ð¸ßµÄ³ÌÐòÔ³£¬±àÂëЧÂʸߣ¬³öbug¼¸ÂÊС...

×ܽ᣺×ö¸öÃæÏò¶ÔÏóµÄ³ÌÐòÔ±

 

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