到现在为止我对Binder 的了解只是知道它很难和它是 Android 系统中最核心的跨进程通信机制,仅此而已,所以接下来几篇文章都是学习的Android Binder 驱动的。以安卓 12 源码为基础分析相关文件:frameworks/av/media/mediaserver/mediaserver.rcframeworks/av/media/mediaserver/main_mediaserv
基于 Android 12 源码涉及文件:system/core/rootdir/init.rcsystem/core/rootdir/init.zygote64.rcsystem/core/rootdir/init.zygote32.rcframeworks/base/cmds/app\_process/app\_main.cppframeworks/base/core/jni/AndroidR
它们都是用来在 Android UI 中显示复杂图形内容的组件,比如视频、相机预览或游戏画面,但实现方式和适用场景有很大不同。如果不了解他们的作用的话,在开发中很难去选择,下面就详细梳理下它们的区别和使用方式及其相关概念。一、SurfaceView (表面视图)SurfaceView 的核心思想是创建一个独立的、位于普通视图层级之外的 “表面” (Surface) 。介绍继承自 View,它包含两
SparseArray 和 ArrayMap 都是 Android 特有的集合类,出现在 android.util 包下。 它们的诞生原因是 Android 在内存和性能优化上的特殊需求 —— 在移动设备上,内存、GC 频率和性能都是敏感指标,所以 Google 给我们提供了比 Java 标准集合更轻量的替代方案。它们在功能上与 Java 标准库中的 HashMap 类似,都是键值对(Key-Va
一、公平锁与非公平锁这组概念描述的是线程获取锁的策略。公平锁顾名思义,它追求“先来后到”的公平原则。线程在请求锁时,会先进入一个等待队列,排在队首的线程才有机会获取锁。优点: 避免了饥饿现象(某个线程一直抢不到锁)。缺点: 性能较低,因为每次获取锁都需要进行队列操作,有额外的开销。非公平锁允许“插队”。当一个新线程请求锁时,它会先尝试获取,如果成功就直接拿到锁,不用排队。只有当尝试失败时,它才会进
HashMap 作为 java 和 Android 开发中面试的必问问题,很有必要对其有一个详细的了解。在 JDK 1.8 中,HashMap 的底层实现有了一些重要的优化。本文将从源码角度详细解析其底层原理。JDK 1.8 相比 1.7 有了较大优化(比如引入红黑树)源码部分重点在四个地方:根据key获取哈希桶数组索引位置put方法的详细执行扩容过程get方法过程一、核心数据结构HashMap
Java 垃圾回收(Garbage Collection, GC)是 JVM 运行时内存管理的核心机制之一,用于自动回收不再使用的对象,避免内存泄漏并提高开发效率。一、 GC算法的历史与演进Java GC算法的发展是一个持续优化的过程,主要经历了以下几个阶段:早期(JDK 1.0 - 1.4): 这个阶段的GC相对简单,主要以串行(Serial)收集器为主,适用于内存较小、单核处理器的环境。并发与
一、概述JVM 是 Java 虚拟机(Java Virtual Machine)的缩写,它是 Java 程序运行的执行引擎。它屏蔽了底层操作系统的差异,让 Java 字节码可以在不同平台上运行。更重要的是在虚拟机自动内存管理机制的帮助下,不再需要手动释放内存,不容易出现内存泄露和内存溢出问题。Java 编译器(javac)把 .java 文件编译成 .class 字节码,而 JVM 负责执行这些字
在安卓中用到的三方库:https://github.com/arthenica/ffmpeg-kit这个库很强大,支持很多平台,每个平台都有各自的分支代码,用了一段时间,稳定性挺好的,找到安卓下的分支:FFmpegKit for Android FFmpegKit Android 版引入项目:repositories { mavenCentral() } dependencies {
theme: cyanosis一、加密算法介绍RSA、AES、DES 一种方式做解析,不传明文,只传密文MD5 一种方式做解析,即传递明文(参数),也传递密文(md5),后台先去校验比对成功返回数据,不成功返回错误RSA(非对称加密)密钥:一对公钥(public key)和私钥(private key)常用于:登录认证、公钥加密敏感信息、服务器通信中传输对称密钥等优点:公私钥分离,安全性高缺点:运
1. 环境1.1 基础配置NDK 22b (r22b)FFmpeg 4.4Ubuntu 22.041.2 下载ffmpeg官网提供了 .tar.xz 包,可以直接下载解压:wget https://ffmpeg.org/releases/ffmpeg-4.4.tar.xz tar -xvf ffmpeg-4.4.tar.xz cd ffmpeg-4.41.3 安装基础工具链sudo apt-get
theme: cyanosis一、前言前面文章写过了,使用NDK交叉编译C/C++文件为静态库和动态库,在安卓中调用,当时环境在windows上,不知道是不是环境原因导致动态库无法使用,这次电脑环境为纯Ubuntu系统,再来重走一下来时路...二、编译动态库方式一(只在Ubuntu上使用)假设,你的电脑上已经安装了NDK了查看NDK版本ls ~/Android/Sdk/ndk/这个是AS默认创建的
1. 前言? 一句话总结:触摸事件(TouchEvent)会从 Activity 层开始,按从外到内的方式传递给每一个 ViewGroup/View,直到某个 View 消费(consume) 它,事件传递就会停止。? 事件分发三个关键方法方法名所在类作用说明dispatchTouchEvent()所有 View/ViewGroup事件分发入口,决定是否继续向下传递onInterceptTouch
一、引言Handler 在安卓中的地位是不言而喻的,几乎维系着整个安卓程序运行的生命周期,但是这么重要的一个东西,我们真的了解它吗?下面跟随着我的脚步,慢慢揭开Hanler的神秘面纱吧!本文将介绍Handler 的运行机制、MessageQueue、Looper 的关系,ThreadLocal,以及Handler 导致的内存泄漏问题二、Handler 系统组成概览在 Handler 的源码中,主要
1. ThreadLocal 的概念ThreadLocal 是 Java 中的一个类,用于实现线程本地存储。它允许你创建一个变量,这个变量在每个线程中都有自己独立的副本,不同线程之间的副本互不干扰。换句话说,ThreadLocal 提供了一种线程隔离的机制,使得每个线程都可以拥有自己的变量实例。1.1 ThreadLocal 的基本用法ThreadLocal<String> threa
Copyright © 2005-2025 51CTO.COM 版权所有 京ICP证060544号