背景
读了 Martin大叔的 《Clean Architecture》,对其中第20章 业务逻辑 ,记录下自己的理解。
一条走在技术路上的小鱼儿
SqlBrite 是Square公司提供的一个数据库轻量级的封装框架。提供了RxJava的Observable风格的DB操作接口,其中一个特性是 其query操作得到的QueryObservable会一直保持对该次查询的表后续变更的事件的订阅,后续针对同一张(或多张)表的变更,均会再次发射数据给它的Subcriber,从而可以方便的实现界面的更新。
博客之前用的是sina的SAE + press,也一直还不错。其实最早一开始用的是AWS的EC2,但连接速度实在太慢,才换到SAE的。然后参加活动获得了一些云豆,本以为够用蛮久的,结果最近一两个月,突然的访问把云豆都用光了。于是,就打算切换到githubpages上,昨晚在网上看了下hexo来搭建博客,看上去蛮不错的,于是就切换过来了。这次应该就不怕流量用完了,而且hexo的使用也蛮方便的,网上的各种资料也挺多,感谢这些作者,给大家带来了便利。
MultiTypeListViewAdapter,顾名思义。其封装了多type下的Adapter的编程模式,通过对每种type统一接口,利用多态的方式,将type的实现从Adapter中抽离出来。Adapter只需面向统一接口,所以可以提供一个通用实现,实现代码不再变动。而会变动的每个type对应的item实现,则由使用者自己去实现。对扩展开放,对修改封闭。
同时,由于每个type的item均被抽离出来了。相当于复用的粒度为每个type item,可以根据需要,动态地选择合适的item去添加到adapter中。提高了代码复用,每个人编写维护好自己的item即可,避免了多人合作时都去修改Adapter,容易造成冲突。
另外,由于ViewHolder 模式的规范,MultiTypeListViewAdapter也同时封装了ViewHolder模式。
在看apidemos的例子RetainedFragement时,看到在Thread中执行了 这么一句1
mProgressBar.setProgress(progress);
且执行正常,progressbar确实一直在更新。
顿觉疑惑,View在更新时,会检查当前线程是否是创建view所在的线程(即UI线程),若不一致,则会抛出异常的。
前言:最近的工作在研究gopro的视频流如何获取,通过搜索资料,以及对gopro app的抓包分析,得出了以下经验。这次的分析过程也体会到抓包分析的好处,以后还应进一步学习如何用好抓包工具。