Here's to Change

请问你真的有在努力吗 ?

0%

很惭愧这个年终总结一直拖到年后,2018年已经过去了快两个月才开始写,一是因为工作还比较忙,二是总感觉一个阶段还没有结束,所以无法做一个阶段性的描述。在过完年后有了一段时间的空白期,即时回到了工作岗位也还是对具体的工作内容有点模糊,趁此机会就写个年终总结吧,当然既然到了二月份那么二月份之前的时间也会写进去。

Read more »

关于 graphql 和 RestFul 的差别我就不说了,很多人都说过,如果自己没有体会我写在这里也不过是复制粘贴而已。这片文章的内容是我三个月使用过程中的经验,同时也是我在公司内部的技术分享,从 ppt 改成博客,勉强能够凑成一篇吧。

Read more »

已经一个多月没有更新了,因为公司开了新项目,并且由于业务的特殊性,上线期限比较紧,又碰上国庆长假,所以时间非常紧张。这段时间一直都是加班加点,偶尔周末也会加一天班,所以整个人都比较累,回家了也没什么精神写博客了。正好到这周终于没有什么杂事来打扰,有空总结下这段时间的经验和收获。

这次就主要说一下项目中用到的新的 API 请求框架 GrqphQL 。GrqphQL 是由 facebook 开源的新一代 API 请求框架,具体的介绍和与 REST 的差别大家还是 Google 吧,我也不想 copy and paste,不过我会把具体使用过程中遇到的问题和体会写在这里,供大家参考。

Read more »

转眼入职两个星期了。这两个星期我从最开始的担心,到燃起熊熊斗志,再到焦躁不安,再到现在的归于平静,算是经历了一个比较大的回转。能够进入这家公司,不能不说是运气使然,大概恰好是看上眼了,然后进来了。因为在面试这家公司之前,已经拿到了一个 Offer ,因此心里其实没什么压力,不过自己也觉得手里的 Offer 要价太低,抱着保一争二的心态,眼前这家的要价差不多是手里这家的 2 倍,但是能要到这个价钱还是眼前这家本来的薪资范围就比较高,因此尽管我自己降了一点还是比较高的水平,对于我一个应届生已经足够激动了。面试的过程比较愉快和轻松,尽管细节技术问题几乎没怎么问,也没有看我的作品案例,但就是没觉得有不靠谱。尽管如此,对于能够进入这家公司我还是没有太大的自信,但最终还是进去了,可能不仅是技术和经验因素,还有其他方面特质的因素,因此还是感谢面试的几位大哥大姐对我的认可。

Read more »

0. 闪屏流程分析

要说到闪屏,几乎已经是所有 App 的标配了。但是各家对于闪屏的理解和应用方式各不相同。比如 Google 自己并不建议在闪屏页中设置过长的停留时间,而只是作为冷启动过程的一种变相缓冲,以就是仅在背景上设置一个 APP Logo 来避免屏幕留白。但在中国,几乎所有的流量还不错的 App 都会在闪屏页中加入广告,或者自己应用中某个主题活动的宣传,在增强品牌效应。这其中又有不同的使用流派,但基本都可以归为一个流程:

Read more »

自从知道了策略模式和状态模式这两个行为类的设计模式后,就一直觉得这两个模式有点难以区分。不仅 UML 类图看起来没什么区别,就连具体实现也是非常相似。经过一段时间研究,稍微有了一点理解。

策略模式和状态模式都是消除含有大量 if…else 或 switch…case 这类硬编码结构的良策,虽然不是所有硬编码结构都可以用这两种模式来消除。根据我的理解,可以从其应用场景方面来区分两个模式。

Read more »

今天完成一个功能开发,提交代码的时候,突然提示如下错误:

1
2
3
4
5
6
7
To C:/Users/Alpha/AppData/Local/Temp/d20170730-15308-3dbr6w/.git
! [rejected] master -> master (non-fast-forward)
error: failed to push some refs to 'C:/Users/Alpha/AppData/Local/Temp/d20170730-15308-3dbr6w/.git'
hint: Updates were rejected because the tip of your current branch is behind
hint: its remote counterpart. Integrate the remote changes (e.g.
hint: 'git pull ...') before pushing again.
hint: See the 'Note about fast-forwards' in 'git push --help' for details.
Read more »

这次要说的是一个很简单但是很有用的小技巧,不知道偶然看到文章的各位是不是都已经知道了。已经知道的就可以略过了。

Read more »

又是很久没有写文章了,不写文章的这段日子里,感觉生活毫无乐趣,没有什么成就感,以后还是要多写啊,至少一周一篇吧。

需求

城市选择页面是很多 App 都有的组件,比如美团、大众点评之类的,而这个文章就是模仿美团的城市选择组件打造的,不过比起美团还是有差距的。
主要的需求有以下几点:

  1. 显示当前城市;
  2. 显示设备定位城市;
  3. 按照城市拼音进行排序和分类
  4. 城市首字母快速导航
  5. 城市搜索,关键字高亮
    Read more »

ANR 与 无限轮播

以前跟着课程做过一个无限轮播的 Demo ,原理就是 Adapter 的 getCount() 返回 Integer.MaxValue 加上子线程控制页面切换。但是这几天在用这种模式的时候发现一个隐藏的坑,有很高几率触发 ANR,这可是不得了的问题(我就不说为了找到这个 ANR 原因花了多大功夫)。在这种模式下,当更新 ViewPager 的数据源的时候,基本上百分百会导致 ANR ,原因就是 PagerAdapter 的 getCount()返回一个很大的值,再调用 setCurrentItem() 更新页面,如果引起的页面跨度超过 1,例如从第 3 页跳转到第 1 页,就会导致 ANR。

Read more »