作为一个安卓开发者,对谷歌该持一种什么样的态度?

毫无疑问安卓是谷歌统治着的,并且谷歌是世界级的大公司,因此谷歌用的我们也该用,谷歌推荐的肯定是合理的。

这是我初学安卓的态度,当时我在研究原生的日历应用,沉迷在google的代码中不能自拔,心想,这区区一个日历谷歌写了几万行,各种java的设计模式,整个日历就几乎就一个Activity,牛逼。

于是花了很多时间去研究日历源码。当然,直到今天,我仍然认为日历源码是高质量的,里面甚至有eventbus的雏形。但是我并不认为日历需要如此之多的代码。至少可以减少三分之一。

我对谷歌态度的转变主要还是因为自己对Fragment态度的转变。

研究日历的时候,那个时候Fragment还是个新东西,我看到做其他模块的同事,都完全避免用Fragment,他们说Fragment太复杂了,出现好多不可预知的错误,我暗自里讥笑他们,自己水平不够吧,人家谷歌都说了Fragment才是好东西,都4.0了还按照2.3的思路做。

然而越来越多的人开始怀疑Fragment,以至于后来在实际项目中,我都本能的不去用它了。其实Fragment将不同UI部分开,在一个类中单独处理的思想没有错,但是到现在我仍然不明白,为啥要赋予Fragment生命周期,这根本就是把问题搞复杂了。后来凡是遇到要使用Fragment的情况,我都自己写成封装好的View类。但是我仍然不敢质疑谷歌,也许是自己水平不够吧。。。

直到Square也开始怀疑Fragment并且自己推出了一套替代的方案之后,我才意识到,也许谷歌真的错了。

我并没有完全否定Fragment,而是不喜欢Fragment复杂的生命周期,构造函数的限制,以及谷歌说的“在 App 开发过程中尽可能使用 Fragment 替代 Activity”。

那天看到一个开源的项目叫Paginize   ,用了一个叫做page的概念,完全否定了Fragment。

除了Fragment之外,让我不再迷信谷歌还有其他方面的原因。

例如Volley项目,现在很多人也觉得Volley不够强大,甚至也存在一些问题。还有,谷歌的兼容包,有种被欺骗的感觉,典型的例子就是,明明说这个东西兼容低版本,其实完全不是那么回事,只是做到了低版本不会报错,其实里面啥也没做。

比起谷歌来,我倒是更喜欢Square和Facebook这样的公司,Square和Facebook对安卓的贡献不小于谷歌,开源了很多优秀的项目,其中很多还是专门解决谷歌留给我们的问题。

总之,不要迷信google。