Booker Blog

Thinking will not overcome fear but action will.

FFMpeg4.3.2Mac端编译so流程

ffmpeg编译踩坑经验

本文首次发布于 BookerBlog, 作者 @Booker ,转载请保留原文链接. 如今手机直播和小视频的流行,使得音视频对于客户端开发也越来越重要,传统客户端面临着转型的阵痛,而学习音视频我们必须得先学会使用FFMpeg。 FFmpeg在官网并没有单独为Android开发者提供现成的so库和.h文件,但是却提供了一套完善的configure规则和make脚本便于我们生成各种平...

Android插件化与热更新原理

如何实现动态加载资源和代码

本文首次发布于 Booker Blog, 作者 @Booker ,转载请保留原文链接. 何为插件化? 在Android 应用开发中,通常会遇到比较大的项目,在没有multidex的年代,如果项目太大,代码行数超了,就会导致APK打包不能。于是乎,拆分模块就应运而出,将一部分代码抽到另外的APK中,再利用Java虚拟机类加载的机制,去加载这些类,来实现功能,插件化就出现了。将一个应...

Android触摸事件传递流程

触摸事件的派发和设计模型

本文首次发布于 Booker Blog, 作者 @Booker ,转载请保留原文链接. 触摸事件的起点 众所周知,触摸事件首先是来源于屏幕传感器获取到触摸响应,再往Android系统传递的,framWork层的几个服务传递这个事件的过程就不作详细描述。首先,我们触摸一个界面,最先拿到事件的一定是当前没有处于Stop或者Pause状态的Activity,Activity它的wind...

java虚拟机垃圾回收以及类加载机制

那些需要掌握的java知识

本文首次发布于 BookerBlog, 作者 @Booker ,转载请保留原文链接. 一、Java虚拟机的内存分区 根据《Java虚拟机规范(Java SE 7版)》的规定,java虚拟机管理的内存共分为这几个运行时数据区域: 1、程序计数器 它是一块较小的内存空间,可以当作是当前线程所执行的字节码的行号指示器,也就是我们写代码时所遇见的程序执行顺序登的调度(包括分支、循环、...

kotlin的lambda与高阶函数

kotlin高阶函数用法

本文首次发布于 BookerBlog, 作者 @Booker ,转载请保留原文链接. 前言 kotlin语言也使用了很多语言都会使用的高阶函数以及Lambda表达式来简化代码。 众所周知,Java是没有高阶函数概念的,在1.8开始才支持Lambda表达式。在Java里,我们要扩展一个方法,必须自定义一个接口,定义一个抽象方法,再将接口作为形参 public interface...