KickMaterialApp 学习笔记

姿势点


项目中使用

  • @VisibleForTesting 然并卵
  • parceler 非常实用的Parcelables工具类,很简洁的完成在Activity,Fragment,Service等组件中传递类。
  • auto 谷歌的Auto集合其中AutoValue,AutoService,AutoFactory等
  1. fab the Floating Action Button for Android.

较冷门

  • FindBugs
    1. 比较详细的英文介绍
    2. FindBugs-IDEA plugin for Intellij IDEA , Android Studio
  • Writing Unit Tests With Spock Framework
    项目中有两处使用SpockFramework进行单元测试,Groovy不熟,还是感觉有点怪异。但是使用Gradle进行项目工程管理,Groovy必定有它过人之处,比如可以轻松的拿到项目工程各种参数,在编译前后插入或者提取想要的数据,那是相当easy的事情。
    spock 比较OK的英文简介
    def "getSignature should returned signature only"() {
        given:
        Project instance = new Project()
        instance.urls = new ProjectUrls()
        instance.urls.api = new ProjectUrlsApi()
        instance.urls.api.project = "https://api.byoutline.com/v1/projects/866180756?signature=1427292197.67ec163ed8dbd36529f591b18fe0f7c4c5867ee1"
        when:
        Map result = instance.getDetailsQueryMap()
        then:
        result == [signature: '1427292197.67ec163ed8dbd36529f591b18fe0f7c4c5867ee1']
    }

实用的知识点


  • 静态的Settings类管理全局设置的变量或类常用:
public static Context CONTEXT;
public static InputMethodManager INPUT_MANAGER;
public static Bus BUS;
private static String DATE_FORMAT_STRING = "dd/MM/yyyy";
  • PostFromAnyThreadBus.java
    使用 new Handler(Looper.getMainLooper())).post(runnable) 全局处理UI线程任务。

项目中的难点


  • CachedField 使用泛化及函数编程,一开始接触,感觉各种人物关系相当的混乱。二舅老婆的妹妹的女儿的男朋友应该叫你什么,我当然机智的画了一下图:


    KickMaterialApp 学习笔记_第1张图片
    CachedFiel.jpg
  • IBusCachedFieldWithArgBuilder 使用<转入参数,返回参数>泛化,直接通过Otto返回要处理的事件,顺便也能产生缓存,一下子把整个程序的框架清晰的解耦模块化。缺点还是增加应用的复杂度。
  • 项目使用了Otto及泛化,使项目中的数据流比较隐晦。以ProjectListFragment为列,画图说话:


    KickMaterialApp 学习笔记_第2张图片
    Data Flow Diagram.jpg
  • AndroidStubServer Simple Http server that makes simulating API easy. 在应用内搭建一个模拟服务器。目前能想到的好处有:
  1. 无网络或者网络环境差的情况下演示Demo;
  2. 在后台没有开发,前端工程师比较牛而且闲得蛋疼,先做后台玩玩。

你可能感兴趣的:(KickMaterialApp 学习笔记)