ÒÔǰһֱÏëдһƪ×ܽá
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¼¸ÂÊС...
×ܽ᣺×ö¸öÃæÏò¶ÔÏóµÄ³ÌÐòÔ±
|