蒋八九
码龄9年
关注
提问 私信
  • 博客:21,099
    21,099
    总访问量
  • 33
    原创
  • 2,197,009
    排名
  • 7
    粉丝
  • 0
    铁粉

个人简介:read the fucking source code

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:江苏省
  • 加入CSDN时间: 2016-02-16
博客简介:

massonJ的博客

查看详细资料
个人成就
  • 获得9次点赞
  • 内容获得9次评论
  • 获得26次收藏
创作历程
  • 5篇
    2022年
  • 1篇
    2021年
  • 27篇
    2020年
成就勋章
TA的专栏
  • ARouter路由原理以及源码解析
    1篇
  • 锁
    1篇
  • 触摸事件分发
    3篇
  • Handler机制以及looper不卡顿问题分析
    1篇
  • Fragment源码分析
    3篇
  • 动画原理分析
    1篇
  • jetpack系列
    5篇
  • Lifecycle源码分析
    1篇
  • livadata源码分析
    1篇
  • Databinding源码分析
    2篇
  • ViewModel源码分析
    1篇
  • Netty源码分析
    2篇
  • binder
    5篇
  • 触摸事件分发流程详解(一):建立InputChannel
  • 触摸事件分发流程详解(二):事件发送和接受
  • 触摸事件分发流程详解(三):触摸事件分发
  • binder机制原理分析(一):ServiceManager 进程启动
  • binder机制原理分析(二):普通Service注册到Service
  • binder机制原理分析(三):从ServiceManager中获取服
  • binder机制原理分析(四):java层service的注册过程
  • binder机制原理分析(五):java层service的注册过程
  • EventBus简单使用以及源码分析
    1篇
  • Android view绘制流程详解(二)View的绘制
    1篇
  • Android view绘制流程详解(一)ViewTree的生成
    1篇
  • SharedPreference源码分析
    1篇
  • retrofit简单使用以及源码分析
    1篇
  • okhttp使用以及源码分析
    1篇
  • EventBus
兴趣领域 设置
  • 数据结构与算法
    数据结构
  • 移动开发
    kotlinflutterandroid studio
  • 软件工程
    性能优化
  • 学习和成长
    面试
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

350人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

haxm-windows-V7.6.5版本

发布资源 2023.02.22 ·
zip

deleagateAdapter的实践

整理设计和实践思想逻辑
原创
发布博客 2022.09.30 ·
507 阅读 ·
1 点赞 ·
1 评论 ·
0 收藏

数据结构补充一篇

数据结构补充篇
原创
发布博客 2022.02.13 ·
401 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

AIDL底层原理需要搞明白的三个点

AIDL底层实现原理
原创
发布博客 2022.02.06 ·
1958 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

整理几个小点

androd 基础知识散点
原创
发布博客 2022.02.05 ·
1562 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

关于JVM的一些整理和思考

前言java作为Android的通用语言必须要好好搞懂,搞懂java首先要搞懂JVM,这也是走向架构的第一步;首先上一张JVM的内存结构图:运行时数据区域:1、程序计数器的作用:为了保证程序能够连续的执行下去,通过程序计数器来指向需要执行的指令的地址2、本地方法栈:调用方法的时候,进行的压栈处理3、虚拟机栈:转本用来存贮当前线程运行时所需要的数据、指令‘、返回地址等;每个方法执行的时候都会创建一个栈帧,栈帧可以划分为:局部变量栈、操作数栈、动态链接、返回地址;例如:int a = 0 ; a
原创
发布博客 2022.01.03 ·
880 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Android四大组件的启动分析与整理(一):Activity的启动过程

Activity的启动过程
原创
发布博客 2021.06.14 ·
669 阅读 ·
3 点赞 ·
6 评论 ·
5 收藏

android_parcelable_code_general

发布资源 2020.12.08 ·
rar

android 属性动画原理分析(一)

前言首先同样,我们来看一段例子:这里我之前刚做完databinding的分析,就直接接着用了,这里的dbBinding.recyclerView其实就是 recyclerView实例对象LinearLayoutManager layoutManager = new LinearLayoutManager(this);layoutManager.setOrientation(LinearLayoutManager.VERTICAL);dbBinding.recyclerView.setLayoutM
原创
发布博客 2020.10.08 ·
554 阅读 ·
1 点赞 ·
0 评论 ·
0 收藏

Fragment源码分析(二):commitXXX和popXXX

前言接着上一篇继续将fragment的提交过程,为啥单独将提交过程呢,因为它复杂嘛。。。首先引入一段代码,因为使用了addToBackStack,因此不能用带now的commitFragmentTransaction transaction = manager.beginTransaction();transaction.add(R.id.fragment_one, new FirstFragment(R.layout.fragment_first), "firstFragment");trans
原创
发布博客 2020.09.20 ·
353 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Fragment源码分析(一):使用刨坑

前言为什么要分析fragment呢,以为我们平时用的很多,但是总是遇到各种莫名其妙的问题,比如pop没作用啊,添加后不能隐藏啊,以及莫名其妙的崩溃啊等等。关于fragment 的分析,网上有很多,但看他们分析的代码都是很早以前的源码,话不多说,开始分析,首先来一段代码:FragmentManager manager = getSupportFragmentManager();(1)FirstFragment firstFragment = new FirstFragment(R.layout.fra
原创
发布博客 2020.09.17 ·
921 阅读 ·
1 点赞 ·
0 评论 ·
1 收藏

jetpack系列文章:ViewModel源码+最终组合使用

前言ViewModel一般都是和livedata一起使用,主要目的其实就是为了解耦,livedata中通过lifecycle根据生命周期做一些事情,ViewModel控制着数据,结合databinding,相互配合使用,ViewModel控制着数据,通过反射创建并在store中统一进行管理这里需要说一下,ViewModel在2.1.0之后废弃了ViewModelProviders这个类,统一使用ViewModelProvider,其实吧,说白了就是把ViewModelProviders中的of方法拆开了
原创
发布博客 2020.09.09 ·
766 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

jetpack系列文章:livedata源码分析

前言官方给我们提供了两个livadata实现类,一个是MutableLiveData,另一个是MediatorLiveData,两者相比起来都比较简单:MutableLiveData里面只有两个方法,一个是setValue当前线程,另一个是postValue主线程。MediatorLiveData里面主要是实现observeForever方法。我们通过MutableLiveData举例,看一段实例代码:MutableLiveData<String> mElapsedTime = new M
原创
发布博客 2020.09.09 ·
225 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

jetpack系列文章:Lifecycle源码讲解

前言:Lifecycle源码解析相对比较简单,主要是用来监听生命周期的。使用起来很简单,我们现在的项目一般都是support26以上,新项目一般也都使用AndroidX了,所以不用在乎兼容问题。Lifecycle是一个观察者模式,所以,从注册观察者开始。一般在onCreate中添加这么一句话就注册完了。getLifecycle().addObserver(new TestObserver());前提是你的Activity继承了(AppCompatActivity extends FragmentA
原创
发布博客 2020.09.06 ·
196 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

jetpack系列文章:Databinding源码分析(二):动态数据更新

Databinding源码分析这里分两部分讲单双向数据绑定[数据监听]
原创
发布博客 2020.08.30 ·
280 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

jetpack系列文章:Databinding源码分析(一):单双向数据绑定

前言: 由于公司新项目使用MVVM模式,基于databinding的,因此专门分析了一下源码,有助于开发。之前项目用到的是MVP框架,其实MVP也能实现V和M的解耦,只是MVVM在解耦的基础上实现了V和M的双向绑定,达到自动更新同步数据,使开发更加便。话不多说,开始分析,使用网上很多了,这里不说了:APT技术:databinding我们用起来很简单,越简单表示框架帮我们完成了越多的东西,毫无疑问自动生成的代码是通过apt技术完成的,这个我已经在Arouter源码分析中讲过了,这里附上链接,不再赘述:A
原创
发布博客 2020.08.30 ·
625 阅读 ·
1 点赞 ·
0 评论 ·
2 收藏

Netty源码分析(二):Reactor模型在Netty中的应用

Netty源码分析主要分两部分:基础知识源码分析服务端测试代码:总体分为三步:初始化+注册+绑定其中bossGroup和workerGroup就是基于主从Reactor模型的两个路由,bossGroup主要负责管理链接,workerGroup主要负责成功链接后链路上的数据读写。EventLoopGroup bossGroup = new NioEventLoopGroup(); EventLoopGroup workerGroup = new NioEventLoopGroup(); Ser
原创
发布博客 2020.08.24 ·
210 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

Netty源码分析(一):基础知识

首先需要了解一下基本概念一、同步、异步、阻塞、非阻塞(网上很多说比较乱,还是自己总结一下吧):首先同步也异步是对与用户空间来说的,java上通常作用与线程;阻塞和非阻塞是对于kernel内核来说的,通常作用与socket。阻塞和非阻塞都属于同步。同步(Synchronous communication): 需要阻塞等待消息执行返回结果,则为同步,例如线程池的submit()提交方式异步(Asynchronous communication): 无需等待等待,通过callback回调接受消息则为异步。
原创
发布博客 2020.08.22 ·
243 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

关于锁的总结,不是很深入,以后再细化吧

Synchronized原理:作用:是一个独占锁,用来实现线程同步。作用对象:主要修饰静态方法、非静态方法、代码块;如何实现:即实现java的monitor机制,当Synchronized修饰代码块时,会在代码块的开始和结束位置插入monitorentry和monitorexit指令。如果修饰方法,会在flag标志中插入ACC_SYNCHRONIZED指令。同步的本质其实就是看线程获取的锁对象是不是同一个锁监听器:例如,静态方法的锁对象监听器是xx.class字节码,那么当一个线程访问该类中sy
原创
发布博客 2020.08.14 ·
327 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏

binder机制原理分析(五):Java层service的获取过程

在AIDL中Java层获取service都是通过XXX.Stub.asInterFace()方法获取的;IXXXManager service = IXXXManager.Stub.asInterface(ServiceManager.getService(“name”));步骤一、获取ServiceManager的引用首先从缓存中获取,如果缓存中没有,那么就通过getService()方法获取。public static IBinder getService(String name) {
原创
发布博客 2020.08.14 ·
834 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏
加载更多