成长月记| 2019年7-8月

好久不见!在七月底办理入职之后连着好几周的培训,这才开始步入正轨,打算以新的形式去记录工作生活的所学所想,暂且想到下面几个模块,接下来就是作为正式鹅的第一个月总结啦!(之前简书发表功能暂停了一段时间,所以现在才能发出来...)
┄┅┄┅┄┅┄┅┄┅┄┄┅┄┅┄┅┄┅
👩🏻‍💼厘米姑娘 de 加油站:不断查缺补漏⛽️
👩🏻‍💼厘米姑娘 de 读书角:继续读书之旅📖
👩🏻‍💼厘米姑娘 de 小心情:所见所闻所想❤️
👩🏻‍💼厘米姑娘 de 照片册:定格美好时刻🎑
┄┅┄┅┄┅┄┅┄┅┄┅┄┅┄┄┅┄┅


PART ONE——加油站

列一些知识点,主要还是通过链接形式拓展和补充~

1.BUG汇总:

2.Android应用的启动方式:

3.分享一些大佬在编写代码总结的注意事项,对于还没什么实战经验的小白很有用~

  • UI

    • 前后台切换、横竖屏切换时的逻辑是否正常,尤其UI有轮询逻辑的
    • 适配问题,比如刘海屏手机是否存在UI遮挡
    • 切换中英文时注意外文是否能完整显示
    • 切图资源的尺寸和大小问题
    • .9图拉升效果是否正常,包括padding区域
    • 对齐类UI建议优先使用约束性布局,而不是多套一层Layout
    • 开启手机开发者权限,确认是否有过度绘制,是否有频繁掉帧
    • SurfaceView和TextureView不能混用重叠,会导致黑屏
  • 动画

    • 动画执行时长是不可靠的,不要特别依赖
    • 核心逻辑不要依赖System.currentTimeMills做时间判断,是可能人为改变的
    • 如果只是计算时间差值建议用SystemClock.elapsedRealtime()
    • 复杂动画建议用属性动画,用AnimatorSet的话可能会出现卡顿现象
  • Intent

    • 启动第三方Activity,先判断该Intent能否被解析或者加上try,否则可能出现ActivityNotFoundException
    • 四大组件设置exported属性为true时要考虑是否会引发安全性问题:被绕过验证页面?导致拒绝服务漏洞?
    • Intent传递的数据过大会导致页面跳转过慢,建议用持久化形式
  • Looper:使用View.post()要注意View一旦没有attached任务可能永远不会执行

  • Debug:日志打印避免使用String.format(),建议直接使用+或append,性能有10倍的差异

  • 线程:加锁避免范围过大、尤其注意临界区代码、复用线程池

  • 进程

    • Application生命周期里的代码,要考虑子进程是否需要执行
    • 用AIDL最好加上oneway标识,用callback方式回调,防止进程间阻塞
    • 善用RemoteCallbackList,防止注册以后无法反注册问题
    • 基于Service的跨进程服务首次调用通常会失败,可以考虑用任务缓存队列或ContentProvider代替
    • 不建议使用广播做跨进程通信,全量发现少量Crash
  • 清理

    • 页面退出时:是否调用Handler.removeCallback来清空Handler里的消息?是否取消了还没有完成的请求?在页面里注册的监听是否反注册?使用RxJava是否解除订阅?
    • 数据库的游标是否已经关闭
    • 打开的文件流是否关闭
    • WebView使用后是否destroy
  • 内存

    • 保存在内存中的图片是否做过压缩处理
    • 是否频繁的创建对象,必要时需要使用内存池做复用
    • 内部类最好写成static,避免引用外部类
    • 成员变量持有Activity或Context必要时使用弱引用包裹
    • 传入Activity尽可能getApplicationContext
  • 性能

    • 频繁操作同一个文件或执行同一个数据库操作,可以考虑把读取结果缓存在内存中,以空间换时间
    • 放在主页面的控件,可以考虑优先用延迟加载来优化启动速度
  • 第三方

    • build.gradle远程依赖第三方包版本号建议写死,避免新版本不兼容或不稳定导致Crash
    • 调用第三方包或JDK的方法时,要跳进看源码决定是否加try-catch,避免Crash
    • 确认是否要加防混淆,否则Release会有问题
  • 边界情况

    • 有切换线程的回调函数在修改UI前最好先判断Activity是否存活,若死亡要阻止UI修改并做必要的变量回收
    • 使用Utils.equals()进行Float/Double等非精确值的对等判断
    • 除2建议改为乘0.5,防止float精度丢失;除数非0判断
    • 空指针问题

4.Android知识架构图(水印有出处)


PART TWO——读书角

即将开通...预告一下,接下来打算看的书是《Android源码设计模式解析与实战(第二版)》,之前一直想看开源框架源码想学其设计理念,但苦于没有很好切入点看起来有些费劲不了了之,正好有这样一本书从设计模式出发进行源码解析,希望在真正的项目实战中能有所帮助~


PART THREE——小心情

过去的这一个月真的太丰富多彩了,从零零散散的前半段就能看出来重心还不在技术成长上,大部分时间是在培训和融入,感受颇深真不知道从何说起,那就分成几个大块说说吧~

1.培训篇

鹅厂对于我们毕业生真的非常重视了,先来感受下入职后培训安排,真的是非常规范和完整了!

  • 【公司级】长达8天的封闭培训像重回校园,以班级和小组形式上课、答辩、比赛、考试、团建、晚会...在了解公司的发展历程、行业知识、业务布局和相关制度规定的同时,还拓展视野和人际网络。
  • 【BG级】通过线上线下的通识、专业课程和为期1个月的MINI项目实战,进一步了解PCG组织架构并熟悉产品研发流程。
  • 【部门级】1周豪华技术课程(如后台/前端/算法/技术研究)和1个月的MINI项目,对腾讯视频前端、内容、视频技术、推荐、搜索、平台等方面有个系统的了解。

整套培训下来真是受益颇深,讲师还提供了精心准备的课件供课后学习,无处不体现鹅厂对毕业生细致入微的关怀,更好的帮助我们从学生身份转变成职业人。

多说一句,原以为很轻松的培训其实蛮辛苦的,记得封培的时候天天两点多才回寝,但每天真是超级开心活力无限,能与这么多优秀善良的朋友共事,是鹅厂带给我的第一份宝贵的财富!

2.工作篇
  • 或许是实习过,再回来的时候感觉不曾离开,虽然多了些新鲜的面孔,但融入到工作氛围中几乎没费什么劲,除了第一天就得知自己有需求了😭当然有了组里大佬的帮助,还是挺顺利的~
  • 项目迭代速度还是很快的,除了要接收各种文档和学习新操作,还要有不少的输出,对于新鹅来说都还不是很熟练,所以想办法做好总结整理。例如,按照类型和版本对各种文档和链接进行分类收藏,方便查阅和检索;每天都写日报清楚做了什么;对每个需求都有个梳理,就我目前还不成熟的理解,差不多这样:
标题 内容
需求单
终端 1.逻辑梳理 2.初步方案 3.疑问
协议
数据上报
排期 1.任务拆分 2.重要时间节点(1)联调时间(2)提测时间
开发 1.涉及框架 2.新知识点 3.CR问题点
测试 1.测试用例 2.showcase 3.BUG解决
  • 赶上一些流程规范化的行动, 小到需求单系统状态的扭转流程,大到开源协同的建设,想进阶成职业人还有很多要学~
3.生活篇
  • 给自己定些小习惯希望自己能一直坚持下去,至少目前还在坚持的,比如上班路上看技术文章、午睡前学英语、晚上运动拉抻一下。
  • 周末尽量不赖在家里睡大觉,要不来公司学习,要不和好朋友去嗨皮,最近几个周末的大头是MINI项目,体验一次终端转行前端的刺激。
  • 公司的福利还是一如既往的给力,在不久的将来我身边会占满各种鹅定制品了。

PART FOUR—— 照片册

首先,最想分享的是这篇记录八天封培的推送→→又见七三 // 大梅沙流水账←←是我培训小组人美歌甜心善良的雨心的文章,还有超级多的照片哟,我不定时入镜哈哈~

团宠弟弟的作品,晚会主KV,也是三组每个人的桌面壁纸哦~

接下来就是一些随手拍~一二楼展厅的其中一个作品(高级定制,整个人像的承重点只是脚尖哟~),整个展厅不要太炫,来滨海参观不能错过的地方!

终于知道“滨海大厦”中的海是哪了!

据说是封闭低温的滨海最温暖的地方,想象一下在36楼悬空层俯视天空的感觉,不要太好!

中秋节礼盒,圆圆的表情太可爱了吧,口味和颜色搭配也很赞!

最后,不知道说啥了给大家劈个叉把!希望大家都多多运动~~


推荐阅读更多精彩内容