联系方式


  • 手机:13601879473
  • Email:lzh.android@gmail.com
  • QQ:5748295

个人信息


  • 林志华/男/1988
  • 工作年限:7年
  • 期望职位:Android高级程序员,Android架构师
  • 期望薪资:面议

工作经历


上海三叉戟科技有限公司(原上海小兵更名)(2014/11--至今)


Where(各大应用市场可下载)

项目采用MVP+Databinding的架构,采用RxJava,更灵活的应对流程需求变更。基于RetrofitOkHttpJackson,实现网络层的框架支持。采用objectBox数据库,应对大并发的数据库的读写事务压力。

技术点以及遇到的困难
  • 数据库并发读写压力(测试写入数据6000条,主线程需要实时显示缓存数据,同时可能有别的写任务需要执行)
    项目前期采用greedDao处理数据,当意识到在压力条件下,进行多线程读写操作时,长时间的写操作可能导致读操作堵塞,引起主线程堵塞,导致黑屏。经过查阅和实践,得出两种解决方案
  1. 继续使用greedDao,开启WriteAheadLogging(sqlite在Android3.0以上支持),读写事务各建立一条sqlite连接,读写操作时,严格使用各自操作的连接。
  2. 使用objectBox,读写事务已经有各自的实现,默认支持读缓存,框架层面支持kotlinrxjava,对于数据迁移和数据结构变动,从框架层面进行支持
    权衡两种方式,均需要对先用的代码逻辑做大的改动,工作量和耗时相差不大。现有框架对rxjava的依赖度较高,以及objectBox的写入及读取速度均超出greendao 3倍以上(实测greendao插入6000条聊天数据,花费时间在2分钟以上,objectBox的数据差不多都是在30秒以内,聊天数据涉及多张表的插入和查询),以及greendao和objectBox出自同一个团队,且团队表明后期重心会再objectBox上,最后选用了objectBox。选用objectBox的风险主要在于,一些非基础的使用场景,还没有提供支持。遇到问题,没有太多可以借鉴的途径。大多数问题只能通过github提issue和作者进行沟通。下图是objectBox和Sqlite的理想情况下的效率对比:
    objectbox-sqlite.png
  • 使用kotlin导致的数据偶尔丢失
    项目中的点对点视频聊天模块采用kotlin编写。在使用intent进行传值时,遇到long类型数据丢失的情况。(同一个id非必先,排除long内存溢出的情况。)因为重现概率较低,采用java的方式传值后,问题消失。怀疑可能是kotlin框架层面的问题。kotlin在项目内暂时只是作为实验性质的引入,其它模块还是采用稳妥的java方式编写,防止出现问题,造成太多的工作量消耗。
  • 高德地图marke的交互效果和动画实现
    采用动态坐标映射屏幕的方式,来实现各种复杂的交互效果。在实现过程中,比较麻烦的是,高德地图的MapView的事件捕获必须需要Down事件,导致正常的事件传递流程被打断。重新处理的分发,满足现有的项目需求
美丽约
  • 即时通讯消息推送模块
  1. 智能心跳:根据不同网络环境,尝试不同频率的心跳。
  2. 省电优化:通讯管道存在单独的进程中,无数据同步的时候,堵塞线程,减少cpu的资源占用。(对比优化前后,手机后台12小时耗电从10%降到2%左右)
  3. 进程保活:android碎片化,以及系统安全权限的进一步收紧,导致很多以前保活的手段失效。现在这一块主要是减少服务的资源占用,以及考虑通过JobSchedule来尽可能的保证进程有更长的存活周期,对于小米旗下的机型,后台的推送采用mipush来提高消息的送达率
  • 框架主要功能
  1. 支持swipeback功能配置
  2. 提供沉浸式体验支持
  3. 在RecycleView的基础上支持多HeaderView和FooterView添加,提供多类型列表的支持。
  4. 提供Item的接口实现,解耦复杂列表数据的实现,Item支持类型注册和数据填充模式
  5. 使用Databinding简化了Item的实现复杂度,实现MVVM架构的支持,分离ui显示逻辑。
  6. 提供网络请求框架,支持大数据的上传和下载,支持上传下载进度的显示需求(网络请求框架接口是12年左右设计的,为了确保兼容,以及优化框架性能,后期在volley的基础上又做了改动实现)
  7. 提供网络异常,无数据,刷新数据等操作的回调包装类,实现点击重新加载,无数据引导发表数据这类的共性需求
考拉伴伴
团队管理
  • 对项目进度负责
  • 跟进项目需求,评估需求变更的合理性
  • 协调服务端和客户端的产品,UI的配合,尽量减少无效的加班
  • 协助各个职能部门的人员招聘
  • 制定里程碑,确定各个职能部门的deadline,根据deadline,跟进各职能部门的项目进度
  • 微信公众号,商户号等项目需要资料的申请
Android架构

协助android工程师更好更快的实现项目需求

  • 移植android框架,提升开发效率
  • 难点攻克,提升开发效率和时间
  • 对开源框架进行评估对比,选择满足项目需求的框架

上海恺英科技有限公司(2013.1--2014.11)

上海小兵科技有限公司(2011.9 --2013.1)

北京新网互联科技有限公司(2010.10-2011.9)

项目简介


社交类项目:

  • Where:基于地图位置的熟人社交方式
  • 美丽约:包含附近交友,聊天,以及啵一下,发布电影,吃饭邀约,分享微信,微博等功能,主打陌生人交友社交。
  • 考拉伴伴:技能邀约平台,让有技能的人的空闲时间变现。
  • 牛排:项目亮点,feed消息流中包含了各类玩家交互的小游戏,你画我猜之类的,提升用户粘性和参与度
  • 谁呀:匿名陌生人交友,包含匿名墙,以及针对通讯录及好友匿名表白,聊天等功能
  • 简简单单(jjdd):包含陌生人交友,照片打分等功能

平台类应用:

  • 私密答:私密问题交互平台,主要针对一些私密问题进行咨询,提供给用户一个倾述渠道

新闻类应用:

  • 中国经营报:类似网易新闻,包含离线下载阅读等功能

市场类应用:

  • XY游戏神器:包含应用下载,好友游戏分享,wifi局域网急速下载,局域网玩游戏等功能

其它:

  • wifi一路通:提供自动连接指定wifi功能,关注列车状态推送,以及站内广播等功能
  • 雨滴:为广大商家定制消息,推送给指定的用户粉丝群
  • 易桥销售系统:为北京华盛联通定制的门店销售系统,包含巡店路径,到店打卡,销量上报等功能
  • 手机私密保护:提供了远程删除私密文件,联系人数据,获取手机位置等功能

更多相关文章

  1. android 数据传输之JSON
  2. Android(安卓)MediaRecorder系统结构
  3. Android(安卓)ContentProvider的介绍
  4. [Android基础]四大组件之ContentProvider
  5. Android(安卓)Sqlite数据库跨版本升级 保存之前数据
  6. Android教程之android数据库编程
  7. Android(安卓)P 以及之后版本不支持同时从多个进程使用具有相同
  8. android onSaveInstanceState方法 横坚屏切换
  9. mybatisplus的坑 insert标签insert into select无参数问题的解决

随机推荐

  1. 实不相瞒,在家远程办公15天,我有点自闭
  2. 内置于浏览器中的国际化API[每日前端夜话
  3. 无线标记语言(WML)基础之WMLScript 基础
  4. 使用Spry轻松将XML数据显示到HTML页
  5. 用Asp与XML实现交互的一个实例源码
  6. 不同浏览器对XML的解析是不同的
  7. cdata标签如何使用
  8. xml中常见的四种解析方式是什么?
  9. 关于html嵌入xml数据岛如何穿过树形结构
  10. XPath是什么