- 博客(25)
- 资源 (4)
- 收藏
- 关注
原创 线程池的源码简单梳理
文章目录前言正文核心函数 execute(Runnable command)新建线程在子线程中执行任务收尾工作总结前言在看 Okhttp 源码的时候,看到有关线程池的使用,先看看调用链:OkHttp 框架的简单使用代码示例:// 代码段0// OkHttpActivity.java // 第一,新建客户端 OkHttpClient okHttpClient = new OkHttpClient(); /// 第二,构建请求 fina
2020-05-31 04:23:55
256
原创 Handler 的工作流程-源码梳理
文章目录总览创建,绑定线程特有的 Looper 实例消息发送的两种方式 sendMessage 和 post消息入队 MessageQueue#enqueueMessage()消息循环 Looper.loop()取消息 MessageQueue.next()分发处理 Handler#dispatchMessageHandler 的工作过程的时序图展示总结总览Handler 的工作流程创建,绑定线程特有的 Looper 实例发消息 Handler#sendMessage 或 Handler#post
2020-05-31 04:17:48
521
原创 ThreadLoacl 原理
文章目录参考总览存储结构 -- 弱引用的键值存储的槽位 -- 数组下标魔数累加,(2的幂)取模验证存取的具体实现存的实现流程图set(...) 函数replaceStaleEntry(...) 函数expungeStaleEntry(int i) 函数cleanSomecSlots() 函数rehash() 函数expungeStaleEntries() 函数resize() 函数取的实现get() 函数getEntryAfterMiss(...) 函数总结参考大神级的细节,表述和逻辑:ThreadLo
2020-05-31 03:30:45
425
原创 View 的 draw 流程-再总结
文章目录看图说话流程图时序图表格简单源码梳理第0步,performTraversals第1步,performDraw第2步,DecorView#draw第3步,View#draw第4步,onDraw第5步,dispatchDraw第6步,drawChild第7步,child.draw(三参数)总结补充链接汇总看图说话流程图借用该链接:[凶残的程序员-View 的工作流程] ( https://blog.youkuaiyun.com/qian520ao/article/details/78657084 ) 的两张
2020-05-27 22:15:31
645
原创 View 的 layout 流程-再总结
看图说话流程图借用该链接:凶残的程序员-View 的工作流程 的一张图,来表示大致的工作流程。时序图来一张时序图:ViewRootImplDecorViewViewGroupViewFrameLayout0,performTraversals1,performLayout2,host.layout(..)没有重写,直调父类3,super.layout通知了观察者4,super.layoutsetFrame设置自身布局invalidate(sizeChanged)触发重绘5,onLayout6,
2020-05-27 22:09:19
302
原创 View 的 measure 流程-再总结
看图说话流程图借用该链接:凶残的程序员-View 的工作流程 的两张图,来表示大致的工作流程。时序图来一张时序图:ViewRootImplDecorViewViewFrameLayoutViewGroup0,performTraversals1,performMeasure2,measure没有重写,直调父类3,super.measure调整宽高为正值4,onMeasure规格强置为EXACTLY5,super.onMeasure(...)6,measureChildWithMargi
2020-05-27 22:07:17
423
原创 View 坐标体系-再总结
参考一参考一:刘望舒:Android View体系(一)视图坐标系 View获取自身宽高 getHeight():获取View自身高度 getWidth():获取View自身宽度View自身坐标通过如下方法可以获得View到其父控件(ViewGroup)的距离: getTop():获取View自身顶边到其父布局顶边的距离 getLeft():获取View自身左边到其父布局左边的距离 getRight():获取View自身右边到其父布局左边的距离
2020-05-27 21:04:08
328
原创 setContentView 的源码追踪
参考View绘制体系(一)——从setContentView聊起View绘制体系(二)——View的inflate详解前言先从这张图说起:引用自:Android深入四大组件(七)Android8.0 根Activity启动过程(后篇)ActivityThread 启动 Activity 的过程:在 Activity 的 onCtreate 函数中,我们会调用: setContentView(R.layout.activity_xxx);那么 setContentView(..
2020-05-27 20:48:13
191
原创 从 Activtity 启动到 View 绘制
时序图Activtity 的第一次绘制ActivityThreadActivtityInstrumentationWindowManagerImpWindowManViewRootImpl1,H ->> handleResumeActivity2,performResumeActivity3,r.activity.performResume(r.startsNotResumed, reason)4,mInstrumentation.callActivityOnResume5,onResume
2020-05-27 20:40:10
231
原创 View 事件分发机制-再总结
文章目录前言背景知识触摸事件分类整体时序图第一,判断是否拦截第二,遍历子 View,逐个分发第三,真正的分发事件给子 View第四,事件传递到子 View第五:子 View 的 onTouchEvent 函数第六,onClick 函数处理点击的逻辑第七,没有子 View 消费事件时,自身尝试消费整体流程图小结ViewGroup # dispatchTouchEvent 函数的步骤细节一次事件序列在 ViewGroup#dispatchTouchEvent 函数的过程View # dispatchTouchE
2020-05-27 19:56:57
259
原创 Binder 机制和 AIDL Demo
文章目录前言概述aidl 使用的三步曲:两端都用同一个 Aidlserver端的实现client端的实现时序图小结测试了接口不一致,不会报错前言收银APP中,绑定 USDK 这个服务进程,就是通过 Aidl。Aidl 的呈现形式是:收银APP中需要导入一个jar包,内含 Aidl 的借接口,准确说,是根据 Aidl 生成的 Binder 接口。概述AidlDemo 项目参考该 Gi...
2020-03-02 15:52:47
285
原创 IActivityManager相关代码结构
IAM:IActivityManagerAM:ActivityManagerAMNative:ActivityManagerNativeAMProxy:ActivityManagerProxyAMS:ActivityManagerService
2018-06-23 18:04:29
2603
原创 svn e170001 authorization failed 的解决
从这篇文章受到启发:https://blog.youkuaiyun.com/mine_1/article/details/39638525转部门之后,重新配置了svn权限,但由于之前也配置过svn的权限,所以电脑上会有缓存。所以在Linux下用svn下载新部门代码的时候遇到该问题:svn e170001 authorization failed。我的解决方法是:删除两个地方的文件,再重启,即可。第一个要删除的...
2018-06-20 16:16:27
14597
原创 SystemServer 启动 AMS(ActivityManagerService) 服务的源码梳理
SystemServer是被Zygote进程所启动的,首先调用了SystemServer的main函数/frameworks/base/services/java/com/android/server/SystemServer.java关键代码:/** * The main entry point from zygote. */public static void main(String[]...
2018-06-07 21:33:54
556
转载 从 Init 到 Zygote 到 SystemServer 的启动流程梳理
内容来自:Android系统启动分析(Init->Zygote->SystemServer->Home activity):https://www.cnblogs.com/lao-liang/p/5067312.html图解Android - Zygote, System Server 启动分析:https://www.cnblogs.com/samchen2009/p/3294...
2018-06-07 16:23:00
1030
原创 ActivityManagerService 与 APP 的进程间通信的一些梳理
由先前的文章:Android Launcher 启动 APP 流程的源码分析可知,APP 向 ActivityManagerService(简称AMS)发起进程间通信,是通过IActivityManager接口。代码:// android/app/Instrumentation.javaint result = ActivityManager.getService() ...
2018-06-06 17:25:41
1602
原创 Android Launcher 启动 APP 流程的源码分析
以启动淘宝APP为例:从用户点击淘宝APP的图标,到APP启动,其中大致可以分为7个步骤:第一部分 源码点击APP(淘宝),收集参数,通知AMS启动Activity:第一部分小结:收集到用户点击的 APP 的相关信息放入 intent,获取代表自身进程的IBinder接口,然后发起进程间通信并传递收集到的参数,通知 AMS 要开始启动指定的 Activity 。第二部分 源码AMS 给 APP(...
2018-06-05 17:59:05
3235
1
原创 编译出错 ninja: build stopped: subcommand failed Android 源码编译
标签:ulimit -c unlimited 、core文件、Jack、JACK_SERVER_VM_ARGUMENTS错误:ninja: build stopped: subcommand failed.办法一:按照提示:ulimit -c unlimited该命令的详细解释参考:https://www.cnblogs.com/qq78292959/archive/2012/05/08/2490...
2018-06-05 14:48:02
73355
4
原创 adb root 时遇到 no permissions 的权限问题整理
参考:https://blog.youkuaiyun.com/ljy_daydayup/article/details/70214347安装/更新 adbsudo apt-get install android-tools-adbsudo apt-get install adnroid-tools-adbd当然还可以手动安装,Linux的adb安装位置:~/usr/bin/adb相关命令介绍:adb star...
2018-05-18 10:31:00
989
1
原创 JNI学习,不通过h头文件调用Jni的demo
不通过头文件,那通过啥?答案是:通过注册本地函数的方法来实现jni的调用,这种方式更适用于在源码环境编译。相关环境ubuntn14.04 (64位)源码环境:full_z703_32-eng(全编)编译所需要的文件,如截图:其中,src文件夹是java代码,res文件夹是资源文件夹,结构跟Android studio项目的一致。jni文件夹里
2016-09-29 14:10:01
1293
原创 JNI学习,第一个NdkJni_demo
为了学习JNI,先做一个小demo来练手和入门。JNI是什么? Java Native Interface (JNI)标准是java平台的一部分,它允许Java代码和其他语言写的代码进行交互。 JNI 是本地编程接口,它使得在 Java 虚拟机 (VM) 内部运行的 Java 代码能够与用其它编程语言(如 C、C++ 和汇编语言)编写的应用程序和库进行交互操作。(抄的)怎么调用? 这不是一句话能说的清楚的,得写个demo。不过用一句话来讲,就是架起java和c的一座桥梁。(我就叫
2016-09-29 14:05:46
364
原创 带侧边栏字母索引的列表--重写Button类
前言如图所示,侧边栏字母索引其实是一个Button类的按钮,点击该按钮上的某个字母,lietView会立刻跳转到对应的那一个字母的组,该效果通过重写Button类来实现.需求分析1.字母的绘制需要将26个大写字母和‘#’,‘?’两个特殊字母按照固定的间隔绘制到按钮上。2.点击按钮的功能点击按钮是能够判断出选中的是哪个字母,并在列表
2016-02-29 05:29:06
1216
原创 按首字母分类并排序显示的列表(二)--给BaseExpandableListAdapter提供数据的HashList
首先看HashList的职责:一.对两种数据的封装:1.歌曲名字首字母的集合-->keys2.每个首字母与相应歌曲集合的映射-->maps二.对这些数据的操作1.基于groupId和childId返回相应的实例2.对keys的排序3.对keys和maps的添加和移除HashList类的变量: /** * 键值集合 * */ privat
2016-02-22 03:26:39
511
原创 按首字母分类并排序显示的列表(一)--ExpandableListView和BaseExpandableListAdapter
ListView是Android开发里最常用的控件,但最近开发的音乐播放器需要把歌曲[按首字母分类并排序]显示,这时就需要用到ExpandableListView.效果图::首先,需要重写BaseExpandableListAdapter这个专门对应ExpandableListView的适配器类,其中最主要的是实现getGroupView和getChildVie
2016-02-22 01:50:28
1006
SoucesInsight4.0黑色主题
2018-12-04
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人