- 博客(5)
- 收藏
- 关注
原创 View的显示过程
本章我们来分析从Activity.setContentview()到Activity.onResume()的源码,先来个总结:1 setContentView(): 初始化DecorView,并没有添加到Window上 2 onResume()时,Activity并没有添加到屏幕上,onResume()之后才会添加到屏幕上,所以在onResume()里面获取View的宽高不一定能获取到 3 由于本章不涉及Activity的启动过程,我们假设已经创建了Window、Context等前置的东西不B.
2021-07-14 17:34:40 310
原创 Android 架构之隔离层设计(实现一键切换主流网络框架) 上
前言本篇文章主要讲解 Android 比较常用的网络框架封装,以及实现一句代码随意切换主流网络框架。读者也可根据该本章思路实现其他效果,比如说,随意切换权限请求框架等。特点按这思路写,代码重构非常简单!什么是隔离层设计?先来个图解释下 我们就拿现实生活举例。 将买房的人(客户)看成是我们写的APP; 将有房的人(业主)看成是我们接触的主流网络框架(XUtils、OkHttp、OkGo....); 将房地产公司(比如说链家)看成是客户(我们app)所需要的服务
2021-07-14 09:32:11 161
原创 优化Android工程中的图片资源
场景在一些上古工程中,由于年久失修,架构演进跟不上业务发展需要,会衍生出非常多比较明显的性能问题,其中就包括工程中图片资源的问题。最明显的例子就是,工程中的图片资源未经任何压缩,直接使用来自设计稿中的原图,非常占用安装包体积;其次,显示效果不理想,在对应分辨率的图片资源文件夹中放入了错误尺寸的图片,导致应用运行时 UI 图片出现模糊、大颗粒等情况。优化方案压缩图片资源文件夹的大小优化工作往往要从业务入手,在业务发展方向明确的前提下,并不是所有的 UI 效果都需要用图片文件的方式进行显示,
2021-07-13 16:51:57 118
原创 ASM插桩--多线程运行监测
最近需要优化App启动的时间,现有代码存在以下问题:线程未复用(使用new Thread\HandlerThread),创建线程数过多 使用HandlerThread,使用后未销毁(Looper一直等待),占用内存 提早start线程,却未使用 部分业务方过早初始化业务代码(虽然是异步),影响启动时间由于存在上述问题,需要扫描App从冷启动开始到首页展示出来,中间执行的子线程和主线程执行的情况。需要监测的数据如下:创建的线程情况,包括数量和使用情况 执行的runnable.run、As
2021-07-13 09:48:10 213
原创 Navigation之详细聊聊Fragment的实现原理
1. 前言Fragment真是一个非常老的家伙,它的第一条提交记录是在2010年,而最近的一条记录则是在2021年6月11号,足足11岁了,但是它却老当益壮,在Jetpack中大放异彩,Navigation组件就是基于Fragment的一个跳转组件,Google的单Activity项目结构就是一个Activity和多个Fragment项目结构。多年以来,一提到Fragment,大家脑海中的第一印象可能还停留在平板应用开发中了,它曾经在手机项目中高频使用Fragment的机会还真没那么多。一方面是因为手机
2021-07-12 14:37:42 387
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人