
Android-进阶
文章平均质量分 90
Xander_Wang
这个作者很懒,什么都没留下…
展开
-
Android 性能优化总结
性能的优化是一个老生常谈的点,也是一个比较重要的点。做过一点性能优化的工作,现在对工作中的优化点做一个总结。如有错误,还请指正。有哪些方面需要优化在平时的优化过程中我们需要从哪几个点来优化呢?其实我们平时自己一定也用过软件,在使用软件的过程中有没有什么想吐槽的呢?“这个 app 怎么还没下载完!”、“太卡了吧!”、“图片怎么还没加载出来!”、“怎么刚进去就卡了!”、“这么点了一下就退出了!”等等,是不是有这样的想法?这些想法其实包含了我们今天要说的内容,就是从哪些方面来优化我们的 APP ,我总结了以原创 2021-04-13 21:53:51 · 280 阅读 · 0 评论 -
Android 性能优化总结 - 概要
性能的优化是一个老生常谈的点,也是一个比较重要的点。做过一点性能优化的工作,现在对工作中的优化点做一个总结。如有错误,还请指正。有哪些方面需要优化在平时的优化过程中我们需要从哪几个点来优化呢?其实我们平时自己一定也用过软件,在使用软件的过程中有没有什么想吐槽的呢?“这个 app 怎么还没下载完!”、“太卡了吧!”、“图片怎么还没加载出来!”、“怎么刚进去就卡了!”、“这么点了一下就退出了!”等等,是不是有这样的想法?这些想法其实包含了我们今天要说的内容,就是从哪些方面来优化我们的 APP ,我总结了以原创 2021-04-13 19:36:01 · 211 阅读 · 0 评论 -
Android 性能优化 - 操作流畅度优化
为什么会卡顿为什么卡顿之前,我们先需要简单了解一点硬件相关的知识。就是在界面绘制的过程中, CPU 主要的任务是计算出屏幕上所有 View 对应的图形和向量等信息。 GPU 的主要任务就是把 CPU 计算出的图形栅格化并转化为位图,可以简单理解为屏幕像素点对应的值。如果操作过程中卡顿了,一般就是 CPU 和 GPU 其中的一个或者多个无法短时间完成对应的任务。一般而言,CPU 除了需要计算 View 对应的图形和向量等信息,还要做逻辑运算和文件读写等任务,所以 CPU 造成卡顿更常见。一般也是通过减少原创 2021-04-13 18:58:33 · 436 阅读 · 0 评论 -
Android 性能优化 - 内存优化
硬件的内存总是有限的,所有每个应用分到的内存也是有限的,所有内存的优化很有必要,否则应用就没有足够的内存使用了,这个时候就会 Crash 。内存都消耗在哪里了优化内存的话,需要了解内存在哪里消耗了了,针对内存消耗大的场景做优化,对症下药,才可以有一个好的优化效果。Android Studio 里面的 Profiler 工具是一个很好用的工具,通过里面的 memory 工具可以实时监控 APP 运行过程中的内存分配。dump APP 内存堆栈后,还可以看到各个类占用的内存情况。可以查看每个对象的原创 2021-04-13 18:58:01 · 345 阅读 · 0 评论 -
Android 性能优化 - 稳定性优化
APP 稳定性的维度app 稳定一般指的是 app 能正常运行, app 不能正常运行的情况分为两大类,分别是 Crash 和 ANRCrash:运行过程中发生的错误,是无法避免的。ANR:应用再运行时,由于无法再规定的时间段内响应完,系统做出的一个操作。如何治理 Crash应用发生 Crash 是由于应用在运行时,应用产生了一个未处理的异常(就是没有被 try catch 捕获的异常)。这会导致 app 无法正常运行。如果需要解决的话,就需要知道这个未处理的异常是在哪里产生的,一般是通原创 2021-04-13 18:57:30 · 460 阅读 · 0 评论 -
Android 性能优化 - 启动速度优化
启动的类型一般分为,冷启动和热启动冷启动:启动时,后台没有任何该应用的进程,系统需要重新创建一个进程,并结合启动参数启动该应用。热启动:启动时,系统已经有该应用的进程(比如按 home 键临时退出该应用)下启动该应用。如何获取启动时间adb 命令adb shell am start -S -W 包名/启动类的全名adb shell am start -S -W xxx/xxxActivityStopping: xxxStarting: Intent { act=android.原创 2021-04-13 18:56:56 · 219 阅读 · 0 评论 -
Android 性能优化 - APK 瘦身
如何查看 apk 的组成如果要优化 apk 的大小,我们首先需要知道我们编译出来的 apk 都包含哪些东西,然后针对占用大的做裁剪,或者删除不需要的东西,从而达到瘦身的目的。查看 apk 的内容占用情况很简单,打开 AS ,把 apk 拖到 AS 里面就可以查看 apk 包含的内容了。可以看到占大头的是 res 代码等,所以瘦身可以从这几个方面来考虑。如何减少 res 资源大小删除冗余的资源一般随着项目的迭代,部分图片等资源不再使用了,但是可能仍然被编译到了 apk 里面,所以可以删除这部原创 2021-04-13 18:55:45 · 342 阅读 · 0 评论 -
不会 Android 性能优化?你还差一个检测库!
由于本人工作需要,需要解决一些性能问题,虽然有 Profiler 、Systrace 等工具,但是无法实时监控,于是计划写一个能实时监控性能的小工具,经过学习大佬们的文章,最终完成了这个开源的性能实时检测库。初步能达到预期效果,这里做个记录,算是小结了。开源库的地址是:https://github.com/XanderWang/performance幸苦各位能给个小小的 star 鼓励下。这个性能检测库,可以检测以下问题 UI 线程 block 检测 App 的 FPS 检测 线程和原创 2021-01-12 15:05:28 · 315 阅读 · 0 评论 -
一个基于 SPI 的 Android 组件化框架
文章目录一个基于 SPI 的组件化框架什么是组件化,什么是插件化。什么时候我们用组件化,什么时候我们用插件化组件化的一些思考组件是如何工作的疑难点是如何解决的1 如何直接使用 Fragment 或者其他资源2 组件的初始化需要放到 Application 里面3 新增一个组件一些需要注意的事项一个基于 SPI 的组件化框架详细的源码请移步 github:spi_component首先,我们思...原创 2019-06-11 22:19:22 · 1048 阅读 · 0 评论 -
入坑 Gradle 插件开发(一)
文章目录仅自己的工程里面使用希望开源发布出去,供大家使用修改 build.gradle新建 src/main/groovy 目录创建 Plugin 类新建一个 properties 配置上传到 maven 库别人如何引用 gradle 插件最近由于需要做一些功能,比如统计方法的执行时间,处理删除一方法等。网上找了一圈,虽有有很多开源工具有类似的功能了,但是不够灵活,所以想自己开发 Android...原创 2019-05-07 18:46:40 · 211 阅读 · 0 评论 -
Android -- 快速切换配置而不用重新编译 -- ConfigX
背景代码接入修改配置项删除配置项退出应用背景平常开发中,我总是遇到需要临时修改或者调整 app 里面的一些参数,然后看看不同参数带来的 效果。比如,某个动画,稍微有些生硬,需要微调下时间。某个效果,需要对比打开或者关闭时候的最终效果来决定采用哪种方案。在一开始的时候,我是通过手动找到代码修改点,然后修改这个代码里面的值,然后重新编译、安装,然后查看效果...原创 2018-09-16 17:41:30 · 457 阅读 · 0 评论 -
2016 总结
2016 过几天就过去了,当初计划好的许多事情都没完成,计划好好写写 Android 的博客,最后也是简单的写了几篇,这结果对我来说是很不满意的。计划没落实其实跟没计划是一样的,网上很多大神,你去分析他们的博客,你会发现,他们一直在坚持写,不管是别人投稿还是自己写或者是转载,至少别人坚持下来了,好多人坚持了好几年,这个也许是他们之所以是大牛的一部分原因吧。2017年希望自己能坚持下来,好好沉淀。加油原创 2016-12-25 23:23:56 · 304 阅读 · 0 评论 -
Window 下替换 Android Studio 的终端 terminal
AS 挺好用的,就是终端不好用,于是想着替换下,最后找到替换方法了,记录下替换过程。安装 babunbabun 是一个 window 下面个人感觉比较友好的 Cygwin 。安装过程自己找。创建脚本在 babun 安装目录下创建脚本 cygwin.bat , 脚本输入以下内容@echo offset currentdir=%cd:\=/%@echo cd %cur...翻译 2017-06-29 11:30:57 · 2821 阅读 · 0 评论 -
Handler Looper MessageQueue Thread HandlerThread IntentService 的简单解析
Handler Looper MessageQueue Thread HandlerThread IntentService 的简单解析这几个类应该是Android 很基础也很重要的几个类了。可以用这几个类做很多有意思的东西, 比如Handler 类解析Handler 一般作为消息的接收者的角色,接收某个线程发出的 Message 并处理。那 Handler 是如何接收以及如何处...原创 2018-04-17 14:48:24 · 254 阅读 · 0 评论 -
MiniTasker 一个方便切换线程去执行耗时任务,并且可以在需要回调到 UI 线程的时候能简便切换到 UI 线程的开源库
MiniTasker@(自学笔记)MiniTasker 是一个方便切换线程去执行耗时任务,并且可以在需要回调到 UI 线程的时候能简便切换到 UI 线程的开源库。在实际的开发中,由于项目里面并没有用到 RxJava ,所以做一些耗时的事情,切换线程还是比较麻烦的,要写不少代码。在没有 RxJava 的情况下,切换进程执行耗时任务,一般通过 AsyncTask 来完成,但是编写 AsyncT...原创 2018-04-13 00:33:00 · 320 阅读 · 0 评论 -
Android 性能优化总结
android 性能优化方法性能优化的方向性能优化是移动端开发绕不过的一个问题,毕竟硬件资源有限,而且业务也越来越复杂,不优化的话体验很差,严重的话整个程序都可能无法运行。网上已经有了很多关于性能优化的优秀文章,这里我也来小结下,算是对自己以前做的事情的总结吧。首先,性能包含哪几个方便?然后,针对每一个方面,我们应该从什么入手来优化,如何去量化性能优化?我们要先想清楚这几个...原创 2018-04-19 01:10:38 · 458 阅读 · 0 评论 -
MAT 使用教程
MAT 使用教程Memory Analysis Tools (MAT) 是一个分析 Java 堆数据的专业工具,用它可以定位内存泄漏的原因。观察 Heap运行程序,然后进入 DDMS管理界面,如下:点击工具栏上的 来更新统计信息点击右侧的 Cause GC 按钮或工具栏上的 即可查看当前的堆情况,如下:主要关注两项数据:Heap Size 堆的大小,当资...转载 2018-07-02 10:01:55 · 2162 阅读 · 0 评论 -
Activity 启动流程分析
Activity 启动流程分析Activity 启动流程分析1.1 Activity#startActivity(Intent intent)1.2 Activity#startActivityForResult(Intent intent, int requestCode, @Nullable Bundle options)2.1 Instrumentation#execStar...原创 2018-08-08 00:15:06 · 412 阅读 · 0 评论 -
记一次 OutOfMemeory 问题修改
今天测试发现了一个 bug , app 大概每 2 分钟就会重启一次。看了下 log 。分析了下原因。先说下我们这边的需求:我们有个需求,就是在 api 请求失败的时候,需要把请求失败的原因上报给服务器。上报请求失败的原因也是一个 api ,它的错误也会上报。在此 2 条需求基础上,仔细想一想,其实有很大的问题,主要漏洞是会造成一个循环的调用。这个循环调用的逻辑如下:某个 ...原创 2018-08-30 23:10:48 · 443 阅读 · 0 评论 -
关于下载Android源码是无法获取repo和更新Android SDK的错误
准备下载Android的源码的,结果一开始无法下载repo脚本,网上找了一下原因,说是dl-ssl.google.com被屏蔽了,解决很简单,就是修改host文件,Window系统的话就是修改C:\Windows\System32\drivers\etc\hostsLinux和MAC可以修改/etc/hosts在文件的末尾添加原创 2013-09-20 18:43:50 · 920 阅读 · 0 评论