- 博客(9)
- 收藏
- 关注
原创 深入理解 JNI 与 Native 调用基础:SO 接口交互
在 Android 开发中,Java 和 C/C++ 代码的互操作性是一个非常重要的议题。为了在 Android 中高效地调用 C 或 C++ 编写的本地代码,开发者需要了解 JNI(Java Native Interface)机制。JNI 是 Java 与其他语言(如 C 或 C++)进行交互的桥梁,它提供了一个接口,允许 Java 代码调用本地代码,并允许本地代码调用 Java 代码。本文将深入探讨 JNI 的工作原理,如何通过 JNI 调用本地代码,如何理解 文件的生成与交互机制,帮助开发者更好地掌
2025-05-06 18:12:18
688
原创 深入理解 Android 进程与线程模型:mainLooper、Handler 和 HandlerThread
在 Android 中,应用程序通常运行在一个独立的进程中。每个进程由一个或多个线程组成。线程是程序执行的基本单元,Android 默认会为每个应用启动一个主线程(UI线程)。主线程负责处理 UI 操作,确保用户界面的响应性。为了避免阻塞主线程,复杂的操作(如网络请求、磁盘读写等)需要放到后台线程中执行。进程:Android 中的每个应用默认在自己的进程中运行,进程之间互相隔离。进程内的线程共享内存。线程:每个进程内的执行单元,主线程(UI线程)是默认线程,应用中的其他线程通常用于执行耗时操作。
2025-05-06 18:07:00
938
原创 Binder 通信机制(ServiceManager、AIDL、Binder Proxy)
Binder 是 Android 的核心 IPC 机制,它允许不同进程之间进行通信。Android 中的进程通常是隔离的,Binder 作为中介桥梁,通过对象引用的传递来解决进程间通信的问题。Binder 不仅支持不同应用之间的通信,还能在应用与系统服务之间进行高效的数据交换。Android 中的 Binder 机制是进程间通信(IPC)的基石,它通过AIDL和等组件实现了跨进程的高效通信。提供了服务注册和查找的机制,AIDL定义了进程间接口,则作为客户端与远程服务之间的桥梁,传递调用请求。
2025-05-06 18:05:08
836
原创 深入解析 Android 启动流程:从 init 到 Zygote 和 SystemServer
Android 系统的启动流程是一个精细的系统架构设计,涉及initZygote和这三个核心阶段。init:负责系统的硬件配置和启动必要进程。Zygote:通过fork快速创建新的应用进程,并共享内存和资源,从而加快应用启动速度。:启动并管理 Android 系统的各个核心服务,确保系统的稳定运行。通过深入理解这些机制,开发者可以在 Android 系统的底层进行更有效的性能优化、故障排查和定制开发,尤其是在车载 Android 或其他嵌入式系统中,可以更加高效地利用系统资源,提升用户体验。
2025-05-06 17:47:59
842
原创 Java File类与IO流
File类是java.io包下代表与平台无关的文件和目录,也就是说如果希望在程序中操作文件和目录都可以通过File类来完成,File类能新建、删除、重命名文件和目录。在API中File的解释是文件和目录路径名的抽象表示形式,即File类是文件或目录的路径,而不是文件本身,因此File类不能直接访问文件内容本身,如果需要访问文件内容本身,则需要使用输入/输出流。生活中,你肯定经历过这样的场景。当你编辑一个文本文件,忘记了ctrl+s,可能文件就白白编辑了。
2023-03-17 23:00:08
237
原创 Java集合
在调用Iterator的next方法之前,迭代器指向第一个元素,当第一次调用迭代器的next方法时,返回第一个元素,然后迭代器的索引会向后移动一位,指向第二个元素,当再次调用next方法时,返回第二个元素,然后迭代器的索引会再向后移动一位,指向第三个元素,依此类推,直到hasNext方法返回false,表示到达了集合的末尾,终止对元素的遍历。Collection是所有单列集合的父接口,因此在Collection中定义了单列集合(List和Set)通用的一些方法,这些方法可用于操作所有的单列集合。
2023-03-17 22:57:44
99
原创 Java泛型
当我们在类或接口中定义某个成员时,该成员的相关类型是不确定的,而这个类型需要在使用这个类或接口时才可以确定,那么我们可以使用泛型。当某个类/接口的非静态实例变量的类型不确定,需要在创建对象或子类继承时才能确定当某个(些)类/接口的非静态方法的形参类型不确定,需要在创建对象或子类继承时才能确定【修饰符】 class 类名 < 类型变量列表 > 【 extends 父类】 【 implements 父接口们】 {
2023-03-17 22:53:34
115
原创 Java集合
接口继承自Collection接口,是单列集合的一个重要分支,习惯性地会将实现了List接口的对象称为List集合。List集合所有的元素是以一种线性方式进行存储的,例如,存元素的顺序是11、22、33。那么集合中,元素的存储就是按照11、22、33的顺序完成的)它是一个元素存取有序的集合。即元素的存入顺序和取出顺序有保证。它是一个带有索引的集合,通过索引就可以精确的操作集合中的元素(与数组的索引是一个道理)。集合中可以有重复的元素,通过元素的equals方法,来比较是否为重复的元素。
2023-03-17 22:51:35
172
原创 Java基础语法学习记录
在JVM内存中,一个字符占2个字节,Java使用Unicode字符集来表示每一个字符,即每一个字符对应一个唯一的Unicode编码值。在JVM内存中,一个字符占2个字节,Java使用Unicode字符集来表示每一个字符,即每一个字符对应一个唯一的Unicode编码值。(1)当把存储范围大的值(常量值、变量的值、表达式计算的结果值)赋值给了存储范围小的变量时,需要强制类型转换,提示:有风险,可能会损失精度或溢出。计算机数据的存储使用二进制补码形式存储,并且最高位是符号位,最高位1是负数,最高位0是正数。
2023-03-16 17:32:00
103
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人