4 王英豪

尚未进行身份认证

我要认证

学习。

等级
TA的排名 1w+

细读《深入理解 Android 内核设计思想》(五)Binder 机制 [下]

对冗余挑拣重点,对重点深入补充,输出结构清晰的精简版深入 binder 驱动内部binder_ioctlbinder_get_threadbinder_ioctl_write_readbinder_thread_writebinder_transactionbinder_thread_read小结binder Q&A如何找到目标进程 Binder 实体如何实现 Binder 线程的睡眠与唤醒最后深入 binder 驱动内部前两篇文章都有提到 binder_ioc

2020-05-17 08:58:43

细读《深入理解 Android 内核设计思想》(四)Binder 机制 [中]

对冗余挑拣重点,对重点深入补充,输出结构清晰的精简版智能指针binder 驱动中的结构体ProcessStateIPCThreadStateBpBinderBinderProxyServiceManager getService 流程智能指针在 binder 相关源码可以看到 sp、wp 类型的引用: sp<IBinder> result = new...

2020-05-03 08:50:52

细读《深入理解 Android 内核设计思想》(三)Binder 机制 [上]

对冗余挑拣重点,对重点深入补充,输出结构清晰的精简版1.必备知识设备驱动文件描述符页框2.Binder 概述3.binder 驱动binder_openbinder_mmapbinder_ioctl4.Service Manager启动注册与查询5.最后必备知识设备驱动Linux 把所有的硬件访问都抽象为对文件的读写、设置,这一"抽象"的具体实现就是驱动程序。...

2020-04-23 00:59:29

细读《深入理解 Android 内核设计思想》(二)内存管理

对冗余挑拣重点,对重点深入补充,输出结构清晰的精简版1. 操作系统内存管理基础虚拟内存内存分配与回收mmapCopy on Write2. Android 内存管理Low Memory KillerAshmem 驱动MemoryFile 原理3. 总结操作系统内存管理基础不论什么操作系统,内存管理都是绝对的重点和难点。内存管理旨在为系统中所有 Task 提供稳定可靠的内存...

2020-04-12 00:30:05

细读《深入理解 Android 内核设计思想》(一)进程间通信与同步机制

对冗余挑拣重点,对重点深入补充以更易理解且简洁的方式记录呈现不是杂乱无章的笔记,而是原书的"精简版"进程间通信的经典实现进程间通信(Inter-process communication,IPC)指运行在不同进程中的若干线程间的数据交换,可发生在同一台机器上,也可通过网络跨机器实现,以下几种因高效稳定的优点几乎被应用在所有操作系统中,分别是共享内存、管道、UNIX Domain Soc...

2020-04-06 17:23:16

焦虑与知识输出

今年很重要,对于工作年限将迈过两年、步入三年的程序员、我。程序员岗位往往会以三年为分界点,一个任务你无法解决或不尽人意:“他刚毕业两年,经验不太足,没关系”“他都毕业三年多了,怎么跟刚毕业的一样,这都不懂,好菜啊”这份焦虑从去年开始,伴随了我很久,直到现在,准确说是在本周它消失了。它是什么时候来的呢?去年身边的几个朋友都成功进入心仪大厂而我却碰壁的时候,我是一个要强的人,认识到某方面...

2020-04-06 17:22:14

Android 10 startActivity 源码分析

源码基于 Android 10此图着重提炼了生命周期的部分,Android 10 中 新增了 ActivityTaskManager ,专门用于管理 Activity,接替了 ActivityManager 的一部分工作理解 InstrumentationActivity 首先会通过 Instrumentation 去调用,Instrumentation 中包含 callActivi...

2020-04-06 17:21:04

Glide 源码分析

Glide 作为一个出色的图片加载框架,对其剖析的文章数不胜数。而若像大多数文章一样常规的去分析源码就没什么新意了,本文旨在发掘一些新的或相对陌生的知识点,以完善对 Glide 的认知,涉及源码基于 v4.8.0。主要内容:1.磁盘缓存2.内存缓存3.网络请求4.图片转换5.感知生命周期6.下载及预加载7.加载图片到通知栏和应用小部件中8.图片格式及内存优化9.请求优先级及原...

2020-04-06 17:19:11

视频相关的理论知识与基础概念

本文将视频相关的理论知识与基础概念划分为 11 个知识点,如下:视频分辨率比特率采样率帧率视频编码编码标准视频封装格式视频解码视频播放原理视频与流媒体1.视频根据人眼视觉暂留原理,每秒超过 24 帧的图像变化看上去是平滑连续的,这样的连续画面叫视频。2.分辨率分辨率是以横向和纵向的像素数量来衡量的,表示平面图像的精细程度。视频精细程度并不只取决于视频分辨率,还取...

2020-04-06 17:16:21

Android 端音频变声方案

音频变声实质上是通过调整 PCM 数据的音调、节拍等属性,实现听感上的变化。如果是 mp3、aac 等压缩音频,则需提前解码成 PCM 数据,Android 端可以通过 MediaExtractor 及 MediaCodec 解码得到 PCM,但调整音调、节拍仅靠 Android api 就无能为力了,只能集成第三方库来实现,常见的音频处理库有 Fmod 、 SoundTouch 。Fmod...

2020-04-06 17:12:08

对 Android 开发的一点思考

17 年毕业开始工作到现在已快两个年头,在实际项目开发的过程中,我对 Android 开发有了一些自己的思考。本着碰撞才会有火花、讨论才会进步的理念,我把对 Android 开发的一点思考分享出来,真诚的希望可以有不同的观点,在纠结反驳之中得到最优解,共同进步。最初的时候,你是否是一个完美主义者,不容忍任何一点 warning 与叹号,if 必有 else,switch 必有 default,...

2020-04-06 17:09:45

简洁明了的刘海屏适配方案

网上关于刘海屏适配的文章不少,可讲清楚的却没几篇,大多是拷贝文档、长篇大论,甚至热情的贴图告诉你什么是刘海屏,到最后你仍不确定到底是怎样的一个适配方案,才能让你的 app 真正的适配所有的刘海屏机型。看到这篇文章你就无需再怨恨各大厂商的跟风“刘海”了,因为刘海屏的适配十分简单。ok,废话说完了,开始适配。首先要清楚的是哪些界面需要适配刘海屏:有状态栏的界面:刘海区域会显示状态栏,无需适...

2020-04-06 17:05:32

单例的线程安全及序列化问题

单例模式可以说是最简单的设计模式了,但在使用时也有一些问题需要注意,比如线程安全性和序列化破坏。本文以几个问题为出发点,分析延迟加载、线程安全以及序列化三个方面,深入了解一下单例模式的各种姿势,以便在今后使用时追求极致性能 ⊙﹏⊙‖∣°饿汉方式单例到底有多“饿”?静态内部类为什么是延迟加载的?枚举方式单例是延迟加载的吗?饿汉、静态内部类、枚举方式单例为什么是线程安全的?序列化为什么...

2020-04-06 17:03:32

Android OpenGL ES(二)绘制三角形

通过上篇文章的学习,现在已经了解到,要想在 Android 端使用 OpenGL ES 绘制图形,必须创建 OpenGL ES 环境和视图窗口,具体来说就是构建 EGL 环境,即 OpenGL ES 和 Android 底层平台视窗系统之间的接口。另外 OpenGL ES 2.0 版本为可编程管线,我们就可以编写着色器程序来确定绘制内容,即编写 Vertex Shader 顶点着色器和 Fragm...

2020-04-06 16:59:59

Android OpenGL ES(一)开发入门

早就听过大名鼎鼎的 OpenGL,却迟迟没有实践学习,有些惭愧。今天开始通过实践+博文方式学习掌握 OpenGL。此文对于 OpenGL 的学习分为以下部分:OpenGL 基础概念OpenGL 坐标系理解OpenGL 渲染管线OpenGL 着色语言OpenGL 基础概念OpenGLOpenGL 即 Open Graphics Library,是一个功能强大、调用方便的底层图形库...

2020-04-06 16:57:14

Android 集成 FFmpeg (四) 轻松实现一个音视频编辑 App

在网上看到一篇关于 FFmpeg 的文章,讲的大概是基于 FFmpeg 实现了一个 App,支持视频拼图等强大炫酷的音视频编辑功能,其原理是在 Android 端集成 FFmpeg,通过命令方式调用 FFmpeg。尽管在 Android 端集成命令方式调用并不复杂,但一个具有强大炫酷音视频编辑功能的 App 是有价值的。由此启发,并决定敲下 Android 集成 FFmpeg 系列的第四篇,以一...

2020-04-06 16:51:00

再见 2017,你好 2018

觉得有必要写一份年终总结,审视一下过去,规划一下未来。敲完上面这句话,发现用到了两个“一下”,有点累赘,重新组织一下语言吧,可就在重新组织的过程中,突然就不想写了,我想做的是总结,不是写诗,不想咬文嚼字。敲完上面这句话,考虑自己是不是有点浮躁,一句话都懒得修改,爱咋咋地吧,这篇非技术文章就来一次真正的随笔吧。

2017-12-19 00:17:27

Android 集成 FFmpeg (三) 获取 FFmpeg 执行进度

在以命令方式调用 FFmpeg 的时候,可能会执行一些比较耗时的任务,这时如果没有进度展示,用户可能会以为程序崩溃了,体验十分不好.能不能在以命令方式调用 FFmpeg 时实时获取执行进度呢?谷歌关键词 "Android FFmpeg 命令" 可以得到很多教程,但加上关键词 "进度"就没有相关文章了,看来以命令方式调用 FFmpeg 实时获取执行进度这个需求没有前人的肩膀可站,要开动自己的小脑筋了.

2017-12-17 22:03:26

Android 应用内悬浮控件实践总结

在工作中遇到一个需求,需要在整个应用的上层悬浮显示控件,目标效果如下图:首先想到的是申请悬浮窗权限,OK~ 打开搜索引擎,映入眼帘的并不是如何申请,而是“Android 悬浮窗权限各机型各系统适配大全、Android 绕过权限显示悬浮窗…”,为什么悬浮窗权限会有这么多坑呢?悬浮窗可以在桌面显示,被恶意软件用来偷偷弹广告怎么办?作为一个系统级别的特殊权限,这是它应有的高傲

2017-11-16 19:33:11

一款纯 Kotlin 编写的开源安卓应用 "Smile"

我从对 Kotlin 一窍不通,到完整开发出此 App,共用了 9 天,其中有 4 天只在晚上开发,也就是说共计 5 天 + 4 个晚上。另外由于我对 ui 的挑剔,主题色的挑选及 logo 设计至少占去五分之一的时间。我并不是在炫耀我的自学能力,Smile 的内容并不算多,肯定有很多大牛比我快,我想表达的是这 9 天的学习及开发过程是刀过竹解、得心应手的。所以我想把这个学习过程分享给大家,只要能帮到一个人,那就是有

2017-09-11 21:16:49

查看更多

CSDN身份
  • 博客专家
勋章 我的勋章
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!
  • 勤写标兵Lv4
    勤写标兵Lv4
    授予每个自然周发布9篇以上(包括9篇)原创IT博文的用户。本勋章将于次周周三上午根据用户上周的博文发布情况由系统自动颁发。
  • 学习力
    学习力
    《原力计划【第二季】》第一期主题勋章 ,第一期活动已经结束啦,小伙伴们可以去参加第二期打卡挑战活动获取更多勋章哦。
  • 原力新人
    原力新人
    在《原力计划【第二季】》打卡挑战活动中,成功参与本活动并发布一篇原创文章的博主,即可获得此勋章。