摘要:
Android中Window的创建过程 在Android中,Window是与操作系统交互的最上层组件。当一个应用程序启动时,首先会创建一个Activity,并且将此活动附加到一个新的窗口上。 以下是Android中窗口的创建过程: ActivityManagerService(AMS)接收到一个启动 阅读全文
摘要:
AMS启动过程 在Android应用启动流程中,AMS( Activity Manager Service )的启动是非常关键的。以下是AMS的启动过程: 1.进程启动 当我们启动一个应用时,系统会挂起Zygote进程。然后,Zygote生成新的应用进程,乘坐第一辆列车到达了Android的世界。这 阅读全文
摘要:
Android中阻塞队列的应用有哪些 阻塞队列在 Android 中有很多应用,比如: 线程池:线程池任务的执行就是基于一个阻塞队列,如果线程池任务已满,则任务需要等待阻塞队列中的其他任务完成。 Handler 消息队列:Handler 的消息队列也是一种阻塞队列。handler发送消息时,首先将消 阅读全文
摘要:
CAS(Compare-And-Swap) 是一种原子操作,用于实现多线程同步。在Java中,Atomic系列的类通过CAS实现了并发实现。 CAS操作包含三个参数:内存地址V、旧的预期值A、新的值B。当且仅当预期值A和内存地址V中的值相同时,才进行更新和替换。否则不执行任何操作。 CAS操作原理如 阅读全文
摘要:
实现一个自定义控件 实现一个自定义控件可以通过以下步骤: 创建一个Java类,并继承已有的View或ViewGroup。 自定义视图需要覆盖一些方法,例如 onDraw()、onMeasure()和 onLayout(),以便控制视图在屏幕中所占的位置和呈现方式。 定义自定义属性,也就是在 attr 阅读全文
摘要:
在 Android 中,音频采集常用的配置属性有以下几个: 音频源 Audio Source 属性,用于指定采集音频数据的来源。例如: MediaRecorder.AudioSource.MIC:从麦克风采集音频数据。 MediaRecorder.AudioSource.DEFAULT:使用默认的音 阅读全文
摘要:
自定义注解可以用来在编译时期插入代码或者做一些特殊的操作,以下是自定义注解的几种用法: 生成文档等类似的说明: 这是自定义注解最常见也是最基本的应用场景,在Java中有原生的注解(如@Override, @Deprecated等)也是为了辅助生成文档而存在。 例如下面的注解用于描述类或方法的作用: 阅读全文
摘要:
Optional 是一个 Java 8 引入的类,它的作用是表示一个可能为 null 的值。使用 Optional 可以让代码更加简洁,避免出现空指针异常。下面是一些 Optional 的用法示例: 创建一个包装了可能为 null 值的 Optional 对象: Optional<String> o 阅读全文
摘要:
EventBus EventBus是一种开源的事件发布/订阅库,用于在Android应用程序的组件之间传递消息和事件。使用EventBus,您可以在应用程序内的不同部分之间进行松耦合的通信,而无需显式地编写代码来处理回调或接口实现。 实现原理是基于观察者设计模式,其主要的思想是订阅者订阅感兴趣的事件 阅读全文
摘要:
Retrofit guide Retrofit的核心原理是注解处理器和动态代理。开发人员可以通过在接口上使用注解来定义Web服务的请求。Retrofit的注解处理器会读取这些注解,并根据它们生成HTTP请求的代码。然后,Retrofit使用动态代理将HTTP请求转换为Java方法的调用。 注解 在 阅读全文