自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 资源 (4)
  • 收藏
  • 关注

原创 线程池的源码简单梳理

文章目录前言正文核心函数 execute(Runnable command)新建线程在子线程中执行任务收尾工作总结前言在看 Okhttp 源码的时候,看到有关线程池的使用,先看看调用链:OkHttp 框架的简单使用代码示例:// 代码段0// OkHttpActivity.java // 第一,新建客户端 OkHttpClient okHttpClient = new OkHttpClient(); /// 第二,构建请求 fina

2020-05-31 04:23:55 203

原创 Handler 的工作流程-源码梳理

文章目录总览创建,绑定线程特有的 Looper 实例消息发送的两种方式 sendMessage 和 post消息入队 MessageQueue#enqueueMessage()消息循环 Looper.loop()取消息 MessageQueue.next()分发处理 Handler#dispatchMessageHandler 的工作过程的时序图展示总结总览Handler 的工作流程创建,绑定线程特有的 Looper 实例发消息 Handler#sendMessage 或 Handler#post

2020-05-31 04:17:48 465

原创 ThreadLoacl 原理

文章目录参考总览存储结构 -- 弱引用的键值存储的槽位 -- 数组下标魔数累加,(2的幂)取模验证存取的具体实现存的实现流程图set(...) 函数replaceStaleEntry(...) 函数expungeStaleEntry(int i) 函数cleanSomecSlots() 函数rehash() 函数expungeStaleEntries() 函数resize() 函数取的实现get() 函数getEntryAfterMiss(...) 函数总结参考大神级的细节,表述和逻辑:ThreadLo

2020-05-31 03:30:45 369

原创 View 的 draw 流程-再总结

文章目录看图说话流程图时序图表格简单源码梳理第0步,performTraversals第1步,performDraw第2步,DecorView#draw第3步,View#draw第4步,onDraw第5步,dispatchDraw第6步,drawChild第7步,child.draw(三参数)总结补充链接汇总看图说话流程图借用该链接:[凶残的程序员-View 的工作流程] ( https://blog.csdn.net/qian520ao/article/details/78657084 ) 的两张

2020-05-27 22:15:31 583

原创 View 的 layout 流程-再总结

看图说话流程图借用该链接:凶残的程序员-View 的工作流程 的一张图,来表示大致的工作流程。时序图来一张时序图:ViewRootImplDecorViewViewGroupViewFrameLayout0,performTraversals1,performLayout2,host.layout(..)没有重写,直调父类3,super.layout通知了观察者4,super.layoutsetFrame设置自身布局invalidate(sizeChanged)触发重绘5,onLayout6,

2020-05-27 22:09:19 260

原创 View 的 measure 流程-再总结

看图说话流程图借用该链接:凶残的程序员-View 的工作流程 的两张图,来表示大致的工作流程。时序图来一张时序图:ViewRootImplDecorViewViewFrameLayoutViewGroup0,performTraversals1,performMeasure2,measure没有重写,直调父类3,super.measure调整宽高为正值4,onMeasure规格强置为EXACTLY5,super.onMeasure(...)6,measureChildWithMargi

2020-05-27 22:07:17 383

原创 View 坐标体系-再总结

参考一参考一:刘望舒:Android View体系(一)视图坐标系 View获取自身宽高 getHeight():获取View自身高度 getWidth():获取View自身宽度View自身坐标通过如下方法可以获得View到其父控件(ViewGroup)的距离: getTop():获取View自身顶边到其父布局顶边的距离 getLeft():获取View自身左边到其父布局左边的距离 getRight():获取View自身右边到其父布局左边的距离

2020-05-27 21:04:08 272

原创 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 162

原创 从 Activtity 启动到 View 绘制

时序图Activtity 的第一次绘制ActivityThreadActivtityInstrumentationWindowManagerImpWindowManViewRootImpl1,H ->> handleResumeActivity2,performResumeActivity3,r.activity.performResume(r.startsNotResumed, reason)4,mInstrumentation.callActivityOnResume5,onResume

2020-05-27 20:40:10 201

原创 View 事件分发机制-再总结

文章目录前言背景知识触摸事件分类整体时序图第一,判断是否拦截第二,遍历子 View,逐个分发第三,真正的分发事件给子 View第四,事件传递到子 View第五:子 View 的 onTouchEvent 函数第六,onClick 函数处理点击的逻辑第七,没有子 View 消费事件时,自身尝试消费整体流程图小结ViewGroup # dispatchTouchEvent 函数的步骤细节一次事件序列在 ViewGroup#dispatchTouchEvent 函数的过程View # dispatchTouchE

2020-05-27 19:56:57 223

原创 Binder 机制和 AIDL Demo

文章目录前言概述aidl 使用的三步曲:两端都用同一个 Aidlserver端的实现client端的实现时序图小结测试了接口不一致,不会报错前言收银APP中,绑定 USDK 这个服务进程,就是通过 Aidl。Aidl 的呈现形式是:收银APP中需要导入一个jar包,内含 Aidl 的借接口,准确说,是根据 Aidl 生成的 Binder 接口。概述AidlDemo 项目参考该 Gi...

2020-03-02 15:52:47 245

原创 IActivityManager相关代码结构

IAM:IActivityManagerAM:ActivityManagerAMNative:ActivityManagerNativeAMProxy:ActivityManagerProxyAMS:ActivityManagerService

2018-06-23 18:04:29 2516

原创 svn e170001 authorization failed 的解决

从这篇文章受到启发:https://blog.csdn.net/mine_1/article/details/39638525转部门之后,重新配置了svn权限,但由于之前也配置过svn的权限,所以电脑上会有缓存。所以在Linux下用svn下载新部门代码的时候遇到该问题:svn e170001 authorization failed。我的解决方法是:删除两个地方的文件,再重启,即可。第一个要删除的...

2018-06-20 16:16:27 14452

原创 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 508 1

转载 从 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 986

原创 ActivityManagerService 与 APP 的进程间通信的一些梳理

由先前的文章:Android Launcher 启动 APP 流程的源码分析可知,APP 向 ActivityManagerService(简称AMS)发起进程间通信,是通过IActivityManager接口。代码:// android/app/Instrumentation.javaint result = ActivityManager.getService() ...

2018-06-06 17:25:41 1525

原创 Android8.0 启动APP的关于ActivityManager的源码变化的图示

参考:点击打开链接  

2018-06-06 17:08:57 659

原创 Android Launcher 启动 APP 流程的源码分析

以启动淘宝APP为例:从用户点击淘宝APP的图标,到APP启动,其中大致可以分为7个步骤:第一部分 源码点击APP(淘宝),收集参数,通知AMS启动Activity:第一部分小结:收集到用户点击的 APP 的相关信息放入 intent,获取代表自身进程的IBinder接口,然后发起进程间通信并传递收集到的参数,通知 AMS 要开始启动指定的 Activity 。第二部分  源码AMS 给 APP(...

2018-06-05 17:59:05 3152 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 72482 4

原创 adb root 时遇到 no permissions 的权限问题整理

参考:https://blog.csdn.net/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 779 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 1233

原创 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 340

原创 带侧边栏字母索引的列表--重写Button类

前言如图所示,侧边栏字母索引其实是一个Button类的按钮,点击该按钮上的某个字母,lietView会立刻跳转到对应的那一个字母的组,该效果通过重写Button类来实现.需求分析1.字母的绘制需要将26个大写字母和‘#’,‘?’两个特殊字母按照固定的间隔绘制到按钮上。2.点击按钮的功能点击按钮是能够判断出选中的是哪个字母,并在列表

2016-02-29 05:29:06 1158 1

原创 按首字母分类并排序显示的列表(二)--给BaseExpandableListAdapter提供数据的HashList

首先看HashList的职责:一.对两种数据的封装:1.歌曲名字首字母的集合-->keys2.每个首字母与相应歌曲集合的映射-->maps二.对这些数据的操作1.基于groupId和childId返回相应的实例2.对keys的排序3.对keys和maps的添加和移除HashList类的变量: /** * 键值集合 * */ privat

2016-02-22 03:26:39 485

原创 按首字母分类并排序显示的列表(一)--ExpandableListView和BaseExpandableListAdapter

ListView是Android开发里最常用的控件,但最近开发的音乐播放器需要把歌曲[按首字母分类并排序]显示,这时就需要用到ExpandableListView.效果图::首先,需要重写BaseExpandableListAdapter这个专门对应ExpandableListView的适配器类,其中最主要的是实现getGroupView和getChildVie

2016-02-22 01:50:28 958

ubuntu-apk反编译三件套

内含有反编译三件套及说明,适合在ubuntu环境下编译。

2018-12-20

SoucesInsight4.0黑色主题

根据网上下载来的黑色主题,自己再调整了字体大小和字体配色。 在黑色背景下,提高字体颜色的亮度,使得观感舒适。 特此上传备份,欢迎大家尝试。

2018-12-04

JAVA实现的简单的web服务器

简单web服务器,接收http的Get请求并简单分析,并返回相应的html页面或图片

2016-02-28

pinyinsj-2.5.0压缩包

中文字符串转换成拼音字符串,支持将简体和繁体中文转换成拼音的Java开源类库

2016-02-21

空空如也

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

TA关注的人

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