![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
进阶
文章平均质量分 96
胡飞洋
公众号:胡飞洋, 爱打篮球、带看电影的Android开发者。
展开
-
“终于懂了” 系列:Android屏幕刷新机制—VSync、Choreographer 全面理解
概要:1、刷新频率、2、单缓冲、双缓冲、三缓冲,掉帧3、编舞者 源码4、异步消息、同步屏障背景当我们谈到 布局优化 时,通常都知道 需要减少布局层级。那么较多层级的布局是如何影响布局展示的呢?类似的,页面卡顿是如何产生的呢?在《Window和WindowManager》中介绍window的添加时提到,会 调用ViewRootImpl的setView()方法,setView()方法会调用requestLayout()方法来请求绘制布局,requestLayout()方法内部又会走到schedul原创 2020-08-21 12:10:29 · 10569 阅读 · 5 评论 -
你想要的Android性能优化系列:启动优化
补充:attachBaseContextwindowFocusChange一、概述用户希望应用能够及时响应并快速加载。启动时间过长的应用不能满足这个期望,并且可能会令用户失望。这种糟糕的体验可能会导致用户在 Play 商店针对您的应用给出很低的评分,甚至完全弃用您的应用。本篇就来讲解如何分析和优化应用的启动时间。首先介绍启动过程机制,然后讨论如何检测启动时间以及分析工具,最后给出通用启动优化方案。二、应用启动流程介绍应用有三种启动状态:冷启动、温启动、热启动。冷启动冷启动是指应用从头开原创 2020-07-22 20:24:49 · 6206 阅读 · 2 评论 -
你想要的系列:网络请求框架OkHttp3全解系列 - (三)拦截器详解1:重试重定向、桥、缓存(重点)
在本系列的上一篇文章中,我们走读了一遍okhttp的源码,初步了解了这个强大的网络框架的基本执行流程。不过,上一篇文章只能说是比较粗略地阅读了okhttp整个执行流程方面的源码,搞明白了okhttp的基本工作原理,但并没有去深入分析细节(事实上也不可能在一篇文章中深入分析每一处源码的细节)。那么本篇文章,我们对okhttp进行深入地分析,慢慢将okhttp中的各项功能进行全面掌握。今天文章中的源码都建在上一篇源码分析的基础之上,还没有看过上一篇文章的朋友,建议先去阅读 网络请求框架OkHttp3全解系列原创 2020-05-31 23:34:03 · 2245 阅读 · 10 评论 -
你想要的系列:网络请求框架OkHttp3全解系列 - (一)OkHttp的基本使用
文章目录一、引入二、使用方式2.1 get请求2.2 post请求2.2.1 post请求提交String、文件2.2.2 post请求提交表单2.2.2 post请求提交复杂请求体2.4 请求配置项预备知识:HTTP协议详解HTTP请求报文和响应报文OkHttp3是由square公司开发,Android中公认最好用的网络请求框架,在接口封装上做的简单易用,GitHub地址。它有以下...原创 2020-05-05 19:49:32 · 7789 阅读 · 7 评论 -
嵌套滑动通用解决方案--NestedScrollingParent2
之前写过一篇嵌套滑动–NestedScroll-项目实例(淘宝首页缺陷),及CoordinatorLayout 和 AppbarLayout 联动原理,比较了淘宝和京东首页的滑动效果,分析了效果呈现差别的原因,给出了大致的解决方案。当时没有给出demo,只有代码片段,可能导致阅读起来不很清晰,所以这篇就专门再来详细分析相关知识,给出通用的嵌套滑动的解决方案,且附上GitHub的Demo。一...原创 2020-04-05 22:47:51 · 10831 阅读 · 7 评论 -
曝光埋点方案:recyclerView中的item曝光逻辑实现
目录一、曝光埋点 的问题点二、曝光逻辑分析三、曝光逻辑代码说明 电商app的首页,一般是可滑动列表,当用户上下滑动时,列表中的item可能会多次出现在屏幕上。某个item从出现到消失的过程大于某一时间(比如1s),就认为是一次曝光。数据分析同事对这些曝光数据的分析,可用于针对用户进行商品喜好的推荐。那如何实现 列表(recyclerView)中item的曝光埋点呢...原创 2019-09-01 19:21:12 · 7029 阅读 · 4 评论 -
自定义view:TextSwitcher使用、源码分析(todo)
一、实现效果就是一个列表的多条信息,上下切换展示,上下两条挨着滑动。实现方法,考虑是 两个TextView 使用动画,不断更新text内容。二、TextSwitcher的使用下面代码看到,是集成自TextSwitcher的自定义view。主要:1、 通过setFactory()设置 用于获取 两个切换view的view工厂,然后重写Factory的makeView()方法...原创 2019-07-22 22:13:47 · 581 阅读 · 0 评论 -
自定义view:信息飘窗/弹幕——AutoSwitchTextView
一、实现背景项目中,闪购页面 用于自动切换 展示 购买信息,就是那种 “xxx 10s 买了huawei p30 ” 然后自动翻滚上去,接着底部向上滑出下一条。效果如下图。(感觉有点像连续多个Toast) 也可参考小红书的闪购页面~即,从下面较快的出现,停留展示一会,在缓慢的向上滑出。二、实现思路一开始想的是,使用TextSwitcher实现,因为之前做过类似的文字切...原创 2019-07-16 17:32:45 · 1080 阅读 · 0 评论 -
IPC方式(AIDL)--《Android开发艺术探索》阅读笔记——第二章part3
四、使用AIDLMessenger是以串行的方式处理客户端发来的消息,如果大量的消息同时发送到服务端,服务端仍然只能一个个处理,如果有大量的并发请求,那么用Messenger就不太合适了。同时,Messenger的作用主要是为了传递消息,很多时候我们可能需要跨进程调用服务端的方法,这种情形用Messenger就无法做到了,但是我们可以使用AIDL来实现跨进程的方法调用。AIDL是Messe...原创 2018-05-05 19:40:35 · 364 阅读 · 0 评论 -
IPC方式(Bundle、文件共享、Messenger)--《Android开发艺术探索》阅读笔记——第二章part2
一、使用Bundle在一个进程中使用另外一个进程的Activity,Service,Receiver,在Bunlder中附加我们需要传输给远程进程的信息,然后用intent发送过去,当然,我们传输的数据必须能够序列化,比如基本数据类型,实现了Parcelable接口的对象,实现了Serializable接口的对象以及一些Android支持的特殊对象(具体内容可以看下Bundler这个类,Bun...原创 2018-05-05 17:17:00 · 307 阅读 · 0 评论 -
IPC—进程间通信的基础概念--《Android开发艺术探索》阅读笔记——第二章part1
一、Android中的多进程模式1、Android中多进程是指一个应用中存在多个进程的情况,因此这里不讨论两个应用之间的情况,首先在Android中使用多进程只有一种方法,那就是给四大组件指定android:process。 默认进程名是包名。 <activity android:name=".MainActivity" ...原创 2018-05-05 16:13:21 · 1411 阅读 · 0 评论 -
Activity启动模式--《Android开发艺术探索》阅读笔记--第一章part2
一、LaunchMode预备知识:任务栈(回退栈),后进先出1.standard(标准模式):默认启动模式,每创建一个新Activity,都会产生一个新的Activity实例并且放入相应的任务栈中。和典型的栈调用数据类似没多大区别。2.singleTop(栈顶复用模式):如果要新建的Activity本身已经有一个Activity实例位于栈顶时,那么这个Activity不会被重新创建,而...原创 2018-03-25 17:25:14 · 729 阅读 · 1 评论 -
Activity生命周期--《Android开发艺术探索》阅读笔记--第一章part1
(之前已经看了《Android开发进阶-从小工到专家》,感觉效果不是很好)《Android开发艺术探索》读书系列笔记,开启进阶之路。笔记可能不全是自己打的字,但是一定是我自己理解后梳理的内容。计划:2个月内 即5月底之前,把重点章节知识看完理解。此期间会去面试,检验效果。上半年,6月底目标:跳槽到一个好的平台,月薪增加30%以上。Activity生命周期高阶知识开始!一、正常情...原创 2018-03-24 21:09:00 · 565 阅读 · 1 评论