上个星期感觉好充实,星期三去参加了Google Developer Day,
第一次见到谷歌的官方人员,第一次见到大牛徐宜生,
这么多人都听谷歌在吹水,展示了Google VR,
上午听了一场介绍了Android N的一些新特性,
那个老师还挺搞幽默的,下午去听了一场Material Design的讲座,
没想到是个美女,做技术的有这么好看,真是没想到,
然后听了一场Tensorflow,那叫一个爆满,因为过于火热
,后来加了两场这个,不过我好像没怎么听懂(不用鄙视我 v)。
后来去听了防止安卓的ANR,以及省电那啥,说了好多解决方案,
以后找PPT,慢慢翻吧。再说星期天,
去参加了GDG组织的一个Android框架的一个沙龙,
见到了大牛翟一帆,魔都三帅之首我服。
好了,扯淡再多就越离题千里,
记得星期天的沙龙上,有个同学问ViewModule可不可以含有Context,MarkZhai当时说可以啊,用的舒服就好,
其实我最初写MVVM的时候,VM中确实不含有一个android.*下的包,
当然也不包括Context了,但是你在用的时候会感觉各种不便,
因为安卓的上面的很多资源都是需要Context的,
各种拿不到String,各种启动不了另外一个Activity,
我前期的做法,是通过一个接口,去View中去实现启动Activity,
通过一个接口去获取字符串,是的,可以实现,但是后期维护起来,
你就会发现,一个VM就是一个VM,说好的VM可以复用的呢,
假使存在复用,V中需要实现VM中需要的接口,
多个V中充斥着相同的代码,用MarkZhai说的就是一坨,
代码是写给机器看的那是程序员,代码写给程序员看的那叫工程师,
所以后来VM中包含了一个Context,会觉得怎么用怎么爽,
譬如一个列表界面到详情界面,这个列表中的数据在多个界面是相同的,样式是类似的,跳转到相同的详情,完全可以整理出来一个VM,
VM中加上Context,VM中配置好,直接启动到详情,怎么用怎么爽,
后期维护起来也只要看一个地方,还有就是VM我前期喜欢用Observablefield 去做和View的绑定,其实越用到后来,
越是觉得用继承BaseObservable,然后加上注解,
每当更新的时候notify一下,因为更多时候,
Observablefield中的数据我们是不能直接拿来使用的,譬如一个json
{
"user":{
"name":"android",
"age":20,
"tag":{
"hobby":["soccer","running"],
"color":["red","blue"]}},
"cartInfo":[{"sku":"123","quantity",10},{"sku":"124","quantity",12}]
}
json我意想的,应该没有错误,这个还叫简单的,
我们公司的json比这个还复杂,如果这个时候要取Color的个数,
我们存的时候肯定存了Json所对应的Model假如叫data,
那么这个时候就是各种 . 了,data.user.tag.color.size(),
哈哈!!!这样的代码如果出现在XML里面,不仅没有简化逻辑,
反而增加了阅读XML时候的困难,喜欢Databinding就是喜欢那种在XML里面能够一目了然这个View到底是干啥,
如果XML中充斥着这样的代码,我想谁也不愿意看到,
所以回到上面VM继承BaseObservable,你会有意向不到的收获,
写一个函数getColorSize(),然后神奇的就可以在XML中就可以使用colorSize这个属性了,更新的时候记得notify就行,
我现在是两种方案并行,以第二种方案为主,因为可以自己控制
,感觉要舒服的多。
泡个脚早点睡觉,最近感冒,香菇蓝瘦啊!
网友评论