![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Framework
文章平均质量分 93
Framework升入浅出。
Hirezy
人生没有彩排,每一个细节都是现场直播。
是非审之于己,毁誉听之于人,得失安之于数,成败归之于零.
展开
-
Android全面解析之context机制(三): 从源码角度分析context创建流程(下)
前面已经讲了什么是context以及从源码角度分析context创建流程(上)。限于篇幅把四大组件中的广播和内容提供器的context获取流程放在了这篇文章。广播和内容提供器并不是context家族里的一员,所以他们本身并不是context,因而他们的context肯定是直接或间接从Application、Activity或者Service获取。然后对context的设计进行了讨论,从更高的角度看context,能够帮助我们看到context的本质,也能帮助我们更好地理解并使用context。原创 2024-08-14 19:45:03 · 970 阅读 · 1 评论 -
Android全面解析之context机制(二): 从源码角度分析context创建流程(上)
这篇文章从源码角度分析context创建流程。在上一篇Android全面解析之Context机制(一) :初识context一文中讲解了context的相关实现类。经过前面的讨论,读者对于context在心中有了一定的理解。但始终觉得少点什么:activity是什么时候被创建的,他的contextImpl是如何被赋值的?Application呢?为什么说ContextProvider的context是Application,Broadcast的context是Activity?原创 2024-08-11 23:49:18 · 967 阅读 · 0 评论 -
Android全面解析之Context机制(一) :初识Android context
回想一下最初学习Android开发的时候,第一用到context是什么时候?如果你跟我一样是通过郭霖的《第一行代码》来入门android,那么一般是Toast。Toast.makeText(this, "我是toast", Toast.LENGTH_SHORT).show()当初也不知道什么是Context,只知道他需要一个context类型,把activity对象传进去即可。从此context贯穿在我开发过程的方方面面,但我始终不知道这个context到底有什么用?为什么要这个对象?/***/原创 2024-08-11 23:30:40 · 637 阅读 · 0 评论 -
Android之深入NFC通信
NFC技术作为一种新兴技术在世界范围内受到了广泛关注,尤其是手机的广泛应用,为NFC技术的长足发展提供了前提。NFC技术原理简单,因此成本相对低廉,除此之外NFC通信的带宽高、能耗低等特点也是促进NFC技术发展的一大优势。原创 2024-07-22 00:13:20 · 1056 阅读 · 2 评论 -
Framework源码面试之Handler面试集合
Handler主线程和子线程通过handler交互,交互的载体是通过Message这个对象,实际上我们在子线程发送的所有消息,都会加入到主线程的消息队列中,然后主线程分发这些消息,这个就很容易做到俩个线程信息的交互。看到这里,你可能有疑问了,我从子线程发送的消息,怎么就加到了主线程的消息队列里呢???大家可以看看你自己的代码,你的handler对象是不是在主线程初始的?子线程发送消息,是不是通过这个handler发送的?这就很简单了,handler只需要把发送的消息,加到自身持有的Looper对象的。原创 2024-07-21 23:59:38 · 764 阅读 · 2 评论 -
Android全面解析Window机制
先假设如果没有window,会发生什么:我们看到的界面ui是view,如我们的应用布局,更简单是一个button。假如屏幕上现在有一个Button,如图1,现在往屏幕中间添加一个TextView,那么最终的结果是图2,还是图3:在上图的图2中,如果我要实现点击textView执行他的监听事件逻辑,点击不是textView的区域让textView消失,需要怎么实现呢?原创 2024-07-21 23:37:27 · 929 阅读 · 0 评论 -
Android Activity的启动流程(Android-10)
深入认识startActivity(Intent)原创 2024-01-16 00:21:47 · 1574 阅读 · 0 评论 -
Android多进程和跨进程通讯方式
进程间通信(InterProcess Communication缩写IPC)是指在不同进程之间传播或交换信息。进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元。Android多进程和跨进程通讯方式有几种方式?原创 2023-12-13 20:45:40 · 1421 阅读 · 1 评论 -
Android 系统启动过程纪要(基于Android 10)
认识Android的系统启动的三个进程 init ->zygote -> system_server原创 2024-01-16 00:20:42 · 1436 阅读 · 0 评论 -
Android热修复实现及原理
今天我将围绕热修复实现原理以及常见的热修复方式来讲解热修复。如下图:#mermaid-svg-9DOgBI8Cs6Y6bRHs .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-9DOgBI8Cs6Y6bRHs .label text{fill:#333}#mermaid-svg-9DOgBI8Cs6Y6bRHs原创 2021-09-08 18:39:18 · 11230 阅读 · 9 评论 -
Android View体系‘铁三角‘
前言在搞Android开发的时候,和View的交互是必不可免的,因为我们肉眼可见,可以控制操作最直观的也是View,因此很有必要来吹水一下整个View体系的三件大事情,既View 绘制流程,View 事件分发,View 刷新机制。目录View 绘制流程View 事件分发View 刷新机制View 绘制流程View 的显示是以 Activity 为载体的,Activity 是在 ActivityThread 的 performLaunchActivity 中进行创建的,在创建完成之后就会调用原创 2021-09-07 12:03:38 · 6688 阅读 · 6 评论 -
IPC机制 Binder
引言Binder是Android系统中最重要的特性之一。正如其名“粘合剂”,它是粘合系统间各个组件的桥梁,Android系统的开放式设计也很大程度上得益于这种跨进程的通信机制。理解Binder对于理解整个Android系统有着非常重要的作用,Android系统的四大组件,AMS,PMS等系统服务无一不与Binder挂钩;如果对Binder不甚了解,那么就很难了解这些系统机制,从而仅仅浮游与表面,不懂Binder你都不好意思说自己会Android开发;要深入Android,Binder是必须迈出的一步。原创 2021-04-09 16:51:49 · 4507 阅读 · 0 评论 -
Framework学习(三)之PMS、AMS、WMS
2: WindowManagerService(WMS)讲解博主原创 2021-04-08 16:11:48 · 10320 阅读 · 0 评论 -
Bitmap详解(中)之像素级操作
一:载入与像素读写在Android SDK中,图像的像素读写能够通过getPixel与setPixel两个Bitmap的API实现。1.1 getPixel读取像素Bitmap API读取像素的代码例如以下:int pixel = bitmap.getPixel(col, row);// ARGBint red = Color.red(pixel); // same as (pixel >> 16) &0xffint green = Color.green(pixel); /原创 2021-04-07 01:16:38 · 7741 阅读 · 0 评论 -
Bitmap详解(上)常用概念和常用API
前言:图片的操作我相信大家都操作过,在算法层面大家往往都是把图片转成MAT矩阵处理的,而Android 开发层面大多数都是bitmap位图操作。接下来我将分算法层面以及android层面来讲解一下图片的操作。好了,废话不多说,先将android层面的图像处理,这里我将分俩篇介绍,一个是基础篇,另外一篇是实战演练篇。基本概念什么是BitmapBitmap位图包括像素以及长、宽、颜色等描述信息。长宽和像素位数是用来描述图片的,可以通过这些信息计算出图片的像素占用内存的大小。Config:图片像素类型原创 2021-04-06 00:25:53 · 2618 阅读 · 2 评论 -
Android 蓝牙开发
前言用过手机,以及常用电子配件,运动配件,高档耳机,音响等电子设备的人我想大家都用过蓝牙。因为蓝牙具备了低功耗,低延时,传输速度快,无流量传输…特性而被广大厂商所采用,从而用于设备之间的数据传输,现在的蓝牙已经发展了5.2了,相信以后会用的更广阔。因此我们有必要学习一下蓝牙。Android普通蓝牙设备官方介绍Android 平台蓝牙是支持网络堆栈的,凭借此支持,设备能以无线方式与其他搭载了蓝牙模块的设备进行数据的交互。而android系统本身也提供了通过 Android Bluetooth API 访原创 2021-04-05 22:02:41 · 1024 阅读 · 0 评论 -
Android JNI学习(六)——Java与Native实战演习
前言:前几篇我主要介绍了jni先关的基础知识和常用API,相信看过的童靴对JNI已经有了一定的了解,如果不了解也没关系,下面我给出了链接,可以点进去学习。接下来我将实战一个完整案例,案例很简单,就是一个简单的计算器。Android JNI(一)——NDK与JNI基础 Android JNI(二)——实战JNI入门之Hello World Android JNI(三)——JNI数据结构之JNINativeMethod Android JNI学习(四)——JNI的常用方法的API Androi.原创 2021-03-22 20:21:41 · 4258 阅读 · 2 评论 -
Android JNI学习(五)——Java与Native之间如何实现相互调用
本章将讲述Java与Native之间如何实现相互调用。我将围绕围绕如下三点来讲解。#mermaid-svg-XYoRXCSu5Zn7PUg3 .label{font-family:'trebuchet ms', verdana, arial;font-family:var(--mermaid-font-family);fill:#333;color:#333}#mermaid-svg-XYoRXCSu5Zn7PUg3 .label text{fill:#333}#mermaid-svg-XYoRXCSu5原创 2021-03-22 16:02:17 · 7178 阅读 · 6 评论 -
Android JNI学习(四)——JNI的常用方法的API
前三篇主要讲解了jni基础相关的理论知识,今天主要讲解一下JNI的常用方法的API,掌握了基本的理论知识和常用的API接下来才能更好的实战。jni的常用API大纲再看API前,我建议大家主要结合官网的JNI的常用接口文档进行学习。这里我结合官网大致翻译并分类总结了一下,目的主要是帮助我们更好更快的理解JNI中常用的API。如下图:下面我列出官网的jni的API文档,方便大家学习。jni官方常用API文档一、JNI接口函数表(Interface Function Table)在看函数表之前,我们先原创 2021-03-20 17:55:06 · 4615 阅读 · 0 评论 -
Android JNI(三)——JNI数据结构之JNINativeMethod
上俩篇,我们讲了都是jni基础的原理知识以及如何使用cmake实现简单的jni。接下来本想讲解Java与Native相互调用的,但是发现Java与Native相互调用中设计了好多基础知识,其中用的比较多的就是数据结构JNINativeMethod,所以,我想单独拿出来讲一下。什么是JNINativeMethodAndoird 中使用了一种不同传统Java JNI的方式来定义其native的函数。其中很重要区别是Andorid使用了一种Java 和 C 函数的映射表数组,并在其中描述了函数的参数和返回值。原创 2021-03-18 11:32:00 · 4799 阅读 · 0 评论 -
Android JNI(二)——实战JNI入门之Hello World
上一篇我们讲解了ndk以及jni基础,接下来以实战方式讲解几种常见的jni调用方式,带你走进jni世界。大纲今天会详细讲解几种jni的实现方式,实战NDK实现 "hello world"之旅。环境搭建既然是Android ndk开发,那么肯定少不了Android开发工具。还好有Android studio,这是一款不错的开发工具,已经集成了不少的开发插件以及组件给我们使用,今天讲解的,它...原创 2020-01-04 16:42:15 · 2835 阅读 · 1 评论 -
Android音频开发(七)音频编解码之MediaCodec编解码AAC下
在上一篇初识MediaCodec中,我们认识了MediaCodec,知道了MediaCodec的基本工作流程和开发注意事项,这一篇我将讲述如何利用MediaCodec编解码AAC。1:MediaCodec实时采集音频并编码我们将使用 AudioRecord 和 MediaCodec 实现这个功能,关于 AudioRecord 的使用后期我会单独讲述。为了保证兼容性,推荐的配置是 44.1kHz、单通道、16 位精度。首先创建并配置 AudioRecord 和 MediaCodec。 // 输入原创 2021-03-10 09:37:58 · 3871 阅读 · 0 评论 -
Android音频开发(六)音频编解码之初识MediaCodec上
前五篇我们介绍了关于音频的基础知识,今天来讲述一下音频的重点和难点部分,这一节依然是分上下俩个节点,深入讲述Android音频开发的编解码技术。1.MediaCodec 介绍MediaCodeC是Android 4.1(API16 ) 版本加入的一个新的音视频处理API,旨在提高Android平台的音视频编码能力,Mediacodec类可用于访问底层的媒体编解码器,即编码器/解码器组件。这是Android底层的多媒体支持基础设施的一部分(通常与 MediaExtractor, MediaSync, Me原创 2021-03-09 12:00:19 · 3818 阅读 · 0 评论 -
Android 音频开发(四) 如何播放一帧音频数据下
再看这一篇文章前,如果你是小白,我建议你先看一下Android 音频开发(一) 基础入门篇这一篇。今天继续讲解如何通过Android SDK自带API实现播放一帧音频数据。我们都知道,Android SDK 自带了三种API实现播放一帧音频数据,他们分别是MediaPlayer,SoundPool,AudioTrack,如果你对这三种API不是很了解,可以先看我的上一篇Android 音频开发(三) 如何播放一帧音频数据上这一篇,这里不在详细介绍。简单来说,MediaPlayer 更加适合在后台长时间播原创 2021-03-03 14:52:39 · 1675 阅读 · 0 评论 -
Android 音频开发(三) 如何播放一帧音频数据上
上一篇只要介绍了如何采集一帧音频,本篇就讲述如何播放一帧音频数据,这一篇我将分倆篇来详细介绍。Android SDK 提供了3套音频播放的API,分别是:MediaPlayer,SoundPool,AudioTrack,在讲解如何播放一帧音频数据前,我先介绍一下这三个API的区别在哪里。SoundPool,MediaPlayer,AudioTrack的区别SoundPool ---- 适合短促且对反应速度比较高的情况(游戏音效或按键声等)MediaPlayer ---- 适合比较长且时间要求不高的原创 2021-03-03 12:20:05 · 2928 阅读 · 0 评论 -
Android 音频开发(二) 采集一帧音频数据
这一节主要介绍如何采集一帧音频数据,如果你对音频的基础概念比较陌生,建议看我的上一篇Android 音频开发(一) 基础入门篇。因为音频开发过程中,经常要涉及到这些基础知识,掌握了这些重要的基础知识后,开发过程中的很多参数和流程就会更加容易理解。1:Android SDK 常用的2种音频采集APIAndroid SDK 提供了两套音频采集的API,分别如下:MediaRecorderMediaRecorder是更加上层一点的API,它可以直接把手机麦克风录入的音频数据进行编码压缩(如AMR、MP原创 2021-02-27 19:52:16 · 3200 阅读 · 0 评论 -
Framework学习(二)Android的启动过程
Android设备的启动过程上一张介绍了Android的系统的整体架构,认识了体系的构造,今天就讲一下,Android的系统的启动过程。看了架构图,我们知道架构的设计是至上而下的,但是,Android的启动过程却是相反的。它的启动过程其实是这样的。Android设备的启动过程分为如下流程:BootLoader -> Linux Kernel -> Android Native ...原创 2020-04-28 17:40:37 · 1083 阅读 · 0 评论 -
Framework学习(一)深入Android 系统架构
Android系统架构说到Android,大家都知道他是目前移动市场最大的终端系统,拥有着广阔的市场价值,因此,作为一名开发者,深入了解Android是很有必要。其实,Android的本质就是在标准的Linux系统上增加了Java虚拟机Dalvik/ART,为了方便开发,以及生态建设,谷歌又在Java虚拟机Dalvik/ART这一层上搭建了一个JAVA的application framew...原创 2020-04-25 15:54:53 · 1773 阅读 · 0 评论