自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 简单粗暴!教你5分钟用kotlin 怼出一个文本选择器

不知道你是否曾遇到需要选择年龄,城市,日期等列表文本的情况呢?类似下图的效果:滑动列表时中间位置突出选中,两侧保持一致,如果是你来实现这个功能,会怎么去做呢?本文带你用最快的速度最小的成本实现一个简单粗暴且稳定的文本选择器,语言我们使用kotlin,当然java也是可以的,这里它们几乎没有什么差异。首先需要有滚动的功能,RecyclerView和scrollView都能满足需求,我们先尝试使用ScrollView+LinearLayout实现,至于RecyclerView我们后面会提到。

2021-06-27 23:07:55 370 2

原创 结语

1.监控只是保底手段,根本还在于代码的规范合理2.没有万能的工具,通常是多个工具互相组合去发现问题(系统工具 + 命令 + 代码等多维度)3.性能指标的量化,记录和比对很重要4.适合自己的才是最好的,如果本身应用比较简单,那么就没必要大费干戈,本末倒置,当然,追求技术的极致是没错的。5.多看大厂或者官方的技术文章,即使只能看懂一小部分,你会发现整个视野提高了很多。6.经过这一系列的介绍,我们发现优化相关的点稍微一深入就会涉及到linux,操作系统,C++等相关知识,所以这几个也是我们提高优化功力的

2021-05-06 15:03:10 180

原创 线上场景

前面几节我们主要介绍了线下场景的监控,线下场景不管是 android studio 还是 MAT 或者 adb命令都可以直接使用,但线上场景就不行了,一是不能直接连接,二是设备数量众多,不可能每台都看,所以我们采用两步走的”远程坐诊”方式来解决这个问题。(因为UI和CPU基本在线下场景就能解决,故本节我们主要针对内存监控进行介绍)。可分为两步第一步,通过代码将设备的基本信息记录到日志中,如果低于预期可以报警第二步,针对报警的设备dump出详细内存信息供下载查看第一步内存:ActivityMana

2021-05-06 14:59:19 245

原创 线下场景-整体(PerfDog)

有人说了,之前介绍的那些方法监控都是瞬时的,而且有的需要人值守,页面也不够友好,有没有无人值守并且可以长时间监控的呢?本节就给大家介绍下来自腾讯的PerfDog(性能狗)。PerfDog独立于应用支持多个维度的监测,包括FPS、CPU、内存、网络等。最重要的是监控的结果可保存到本地也可以上传到服务器中。好用、免费,门槛也低。这个工具可以做为应用整体性能的一个考量,测试人员也可将其纳入到测试用例中。官网:https://perfdog.qq.com/我们借助这个工具达到两个目的:(1).监测应用长时

2021-05-06 14:53:29 296

原创 线下场景-内存(Android profiler + MAT + adb)

如果说前两节对应用性能优化幅度有限的话,那么本篇内存则直接关系到应用的生死存亡。好的优化可以让死亡边缘的应用起死回生,避免内存泄漏及OOM。内存泄漏一般是长生命周期的对象持有短生命周期对象的引用,当短生命周期完成使命要被资源回收时,GC Root发现对象可达,所以并不回收,如果这样的情况发生很多,就容易造成内存浪费,严重时导致OOM。形象的说就好比,在餐厅吃饭,顾客点了一餐,实际上吃完了饭,但是手还端着碗没放开(持有碗的引用,占用内存), 服务员(GC)看到后认为其没吃完饭,所以本将收回碗筷结果就不收了

2021-05-06 14:44:31 508 1

原创 线下场景-CPU(TraceView + AS profiler)

TraceView是Android SDK中提供的工具,可以看到线程及方法执行时间、调用次数等。目前Traceview已弃用,官方推荐使用Android profiler中的CPU性能剖析器,但有些老版本(如Android 4.4)并不支持profiler,所以这两个我们都来了解下。一.TraceView1.打开android sdk/tools/monitor.bat文件。2.选中要分析的进程点击红框处的按钮开始即可,再点击一下结束记录。结果页面如下:很直观,基本就是把应用里所有的线程及方

2021-05-06 14:32:51 936

原创 线下场景-UI(systrace + perfetto)

线下场景我们能直接连接设备debug,所以监控纬度很多,我们从4个方面入手(就像是中医的望闻听切)来介绍相关监控工具的使用。(如果你已经很熟悉的话,可以直接跳过)1.UI2.CPU3.内存4.整体在下面的章节会逐一介绍,本节先介绍UI。本节我们主要介绍可以用来分析UI的工具 systrace和Perfetto。这两个工具都是Android系统提供的系统追踪工具,可追踪/监控应用各个方面的数据,包括CPU、内存、view、IO等,其中Perfetto是Android 10(API 29)推出的,

2021-05-06 14:26:36 1762

原创 开篇

目前市面上关于Android 性能优化的文章实在多到数不胜数,但整体质量欠佳,要么太过片面,要么故弄玄虚,基本都是简单雷同的拼凑,并没有形成整体且系统的优化思路,那有没有一篇覆盖全面,简单易懂,适合大多数初中级开发/测试人员看的性能优化文章呢?答案是有的,就是本文(系列)。在进入具体的内容之前,别急,先让我们捋一捋何谓性能优化以及如何下手(切入点)。性能优化有两个侧重点,一个是以提高为主,就像考试把分数从70分提高到90分,本来也能用,即使不提高也没关系,但提高了以后更有竞争力。比如缩短启动/页面打开时

2021-05-06 14:10:57 91

原创 你和ThreadLocal的牵手成功,仅仅差这篇“恋爱攻略“了

你和ThreadLocal的牵手成功,仅仅差这篇"恋爱攻略"了不管是逛帖子还是刷面试题,我们经常会看到ThreadLocal的身影,不禁想问这玩意到底是干嘛的,今天我们以四个章节「初识」,「相知」,「相恋」,「携手」来由浅入深的了解下ThreadLocal,看完后我想就应该能牵手成功,彻底拿下ThreadLocal了。(猴急的人可以只看「相知」章节)初识她是谁?第一眼看上去,名字里有个Thread,貌似和Thread有点关系?事实确实如此,但注意她可不是线程。要想弄清她的身世,最正确的方

2021-01-19 14:52:18 128

原创 什么?adb命令也分入门和进阶?工作5年必须要了解的adb命令

adb命令是android开发中必不可少的部分,有了它们,我们干活会更高效,更得心应手。目前网络上adb命令大多是简单的罗列和整合,一大堆的东西塞到一起,没有条理不够清晰。这次就让我们来点不一样的。对于新手来说会使用一些常见的adb命令,比如adb connect xxxx(IP地址) 连接设备adb devices查看连接的设备adb install xxx.apk安装应用adb push xxx(本地文件路径) xxx(目标设备文件路径) 推送文件adb pull xxx(目标设备文件

2020-09-25 18:57:41 700

原创 关于Android WebView开发的前世今生,你都知道吗?

安卓原生APP中经常会内嵌个H5页面,这就需要用到WebView。很多人对WebView的使用不以为然,觉得也就那么回事,但实际上关于WebView我们能聊得有很多…首先我们聊聊他的出生,众所周知,因为爸爸都是谷歌公司,WebView和Chrome浏览器有着紧密的关系。他们实际上都是谷歌Chromium Project下的顶级项目,链接:chromium project,他们的身上流着相似的血液,不同的是:Chrome浏览器是多进程架构(内存换速度),WebView 是单进程架构。Chr

2020-09-18 11:01:17 618 1

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除