好久不见!在七月底办理入职之后连着好几周的培训,这才开始步入正轨,打算以新的形式去记录工作生活的所学所想,暂且想到下面几个模块,接下来就是作为正式鹅的第一个月总结啦!(之前简书发表功能暂停了一段时间,所以现在才能发出来...)
┄┅┄┅┄┅┄┅┄┅┄┄┅┄┅┄┅┄┅
👩🏻💼厘米姑娘 de 加油站:不断查缺补漏⛽️
👩🏻💼厘米姑娘 de 读书角:继续读书之旅📖
👩🏻💼厘米姑娘 de 小心情:所见所闻所想❤️
👩🏻💼厘米姑娘 de 照片册:定格美好时刻🎑
┄┅┄┅┄┅┄┅┄┅┄┅┄┅┄┄┅┄┅
PART ONE——加油站
列一些知识点,主要还是通过链接形式拓展和补充~
1.BUG汇总:
- Android Studio在运行时显示Please Select Android SDK的解决方法
- Gradle Permission denied解决方案
- Android-错误:任务执行失败':app:transformClassesWithDexForRelease'该怎么解决?
- Android下打印出现read: Unexpected EOF!分析
2.Android应用的启动方式:
- 冷启动:后台无该进程,系统会创建一个新进程分配给该应用,需要创建和初始化Application和MainActivity类。有关冷启动的优化实例:Android App 启动页(Splash)黑/白闪屏现象产生原因与解决办法
- 热启动:后台有该进程,系统从已有的进程中来启动应用,仅须要创建和初始化MainActivity。
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楼悬空层俯视天空的感觉,不要太好!
中秋节礼盒,圆圆的表情太可爱了吧,口味和颜色搭配也很赞!
最后,不知道说啥了给大家劈个叉把!希望大家都多多运动~~