自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(25)
  • 收藏
  • 关注

原创 Linux | cat显示指定行

cat 显示指定行

2022-01-21 09:10:12 12569

原创 ARM汇编-STR/LDR指令详细介绍

指令介绍【LDR】:从存储器中将一个32位的字数据传送到目的寄存器中。该指令通常用于从存储器中读取32位的字数据到通用寄存器,然后对数据进行处理。当程序计数器PC作为目的寄存器时,指令从存储器中读取的字数据被当作目的地址,从而可以实现程序流程的跳转// 格式:LDR{条件} 目的寄存器,<存储器地址>LDR R0,[R1] // 将存储器地址为R1的字数据读入寄存器R0LDR R0,[R1,R2] // 将存储器地址为R1+R2的字数据读入寄存器R

2021-12-24 17:49:35 20292

原创 Android APK打包流程

概述apk 全称是Android应用程序包(Android application package),一种能被Android系统识别并运行的文件格式。apk 文件基于 zip 文件格式,它与 jar 文件的构造方式相似。在总结 apk 的打包流程之前,先要了解一下一个 apk包 究竟有哪些文件:classes.dex 文件:java源文件经过编译和转换后生成的二进制的字节码文件。resource.arsc 文件:经过 aapt 编译后的二进制的资源文件。AndroidManifest.xml 文

2021-12-13 15:54:43 1383

原创 CodeBlocks 关闭语法纠错功能(红色波浪线)

菜单栏 Plugins(插件) —— Manage plugins —— SpellChecker,将它设置为 disable

2021-12-09 09:28:11 1044

原创 Linux/Ubuntu | 压缩/解压缩文件/文件夹命令

压缩/解压缩命令

2021-11-24 20:42:31 1685

原创 C语言stat()函数:获取文件状态

相关函数:fstat, lstat, chmod, chown, readlink, utime头文件:#include <sys/stat.h> #include <uninstd.h>定义函数:int stat(const char * file_name, struct stat *buf);函数说明:stat()用来将参数file_name所指的文件状态, 复制到参数buf 所指的结构中。下面是struct stat 内各参数的说明:struct stat

2021-09-27 20:06:15 913

转载 2.7 深入理解ContentProvider

第7章 深入理解ContentProvider7.1 概述本章重点分析ContentProvider、SQLite、Cursor query、close函数的实现及ContentResolver openAssetFileDescriptor函数。为了帮助读者进一步理解本章的知识点,笔者特意挑选了四条分析路线。第一条:以客户端进程通过MediaStore.Images.Media类的静态函数query来查询MediaProvider中Image相关信息为入口点,分析系统如何创建和启动Media.

2021-08-14 15:53:50 819

转载 2.6 深入理解ActivityManagerService

# 第6章 深入理解ActivityManagerService6.1 概述相信绝大部分读者对本书提到的ActivityManagerService(以后简称AMS)都有所耳闻。AMS是Android中最核心的服务,主要负责系统中四大组件的启动、切换、调度及应用进程的管理和调度等工作,其职责与操作系统中的进程管理和调度模块相类似,因此它在Android中非常重要。AMS是本书碰到的第一块难啃的骨头[①],涉及的知识点较多。为了帮助读者更好地理解AMS,本章将带领读者按五条不同的线来分析它。第一条

2021-08-11 21:48:02 513

转载 2.5 深入理解PowerManagerService

第5章 深入理解PowerManagerService5.1 概述PowerManagerService负责Andorid系统中电源管理方面的工作。作为系统核心服务之一,PowerManagerService与其他服务及HAL层等都有交互关系,所以PowerManagerService相对PackageManager来说,其社会关系更复杂,分析难度也会更大一些。先来看直接与PowerManagerService有关的类家族成员,如图5-1所示图5-1 PowerManagerService.

2021-08-11 18:52:34 1253

转载 2.4 深入理解PackageManagerService

第4章 深入理解PackageManagerService4.1 概述PackageManagerService是本书分析的第一个核心服务,也是Android系统中最常用的服务之一。它负责系统中Package的管理,应用程序的安装、卸载、信息查询等。图4-1展示了PackageManagerService及客户端的类家族。图4-1 PackageManagerService及客户端类家族由图4-1可知:IPackageManager接口类中定义了服务端和客户端通信的业务函数,还定义了内.

2021-08-10 13:01:13 1258

转载 2.3 深入理解SystemServer

# 第3章 深入理解SystemServer3.1 概述SystemServer是什么?它可是Android Java世界的两大支柱之一。另外一个支柱是专门负责孵化Java进程的Zygote。这两大支柱倒了任何一根,都会导致Android Java世界的崩溃(所有由Zygote孵化的Java进程都会被销毁。SystemServer就是由Zygote孵化而来)。崩溃之后,幸好Linux系统中的天字号进程init会重新启动它们以重建Java世界。[①]SystemServer正如其名,和系统服务有着重

2021-08-02 09:51:23 744

转载 2.2 深入理解Java Binder和MessageQueue

第9章 深入理解Vold和Rild9.1 概述本章将分析Android系统中两个比较重要的程序,它们分别是:· Vold:Volume Daemon,用于管理和控制Android平台外部存储设备的后台进程,这些管理和控制,包括SD卡的插拔事件检测、SD卡挂载、卸载、格式化等。· Rild:Radio Interface Layer Daemon,用于智能手机的通讯管理和控制的后台进程,所有和手机通讯相关的功能,例如接打电话、收发短信/彩信、GPRS等都需要Rild的参与。Vold和Rild都

2021-07-30 21:32:08 303

转载 1.10 深入理解MediaScanner

第10章 深入理解MediaScanner10.1 概述多媒体系统,是Android平台中非常庞大的一个系统。不过由于篇幅所限,本章只介绍多媒体系统中的重要一员MediaScanner。MediaScanner有什么用呢?可能有些读者还不是很清楚。MediaScanner和媒体文件扫描有关,例如,在Music应用程序中见到的歌曲专辑名、歌曲时长等信息,都是通过它扫描对应的歌曲而得到的。另外,通过MediaStore接口查询媒体数据库,从而得到系统中所有媒体文件的相关信息也和MediaScanner有

2021-07-22 23:10:02 940

转载 1.9 深入理解Vold和Rild

第9章 深入理解Vold和Rild9.1 概述本章将分析Android系统中两个比较重要的程序,它们分别是:Vold:Volume Daemon,用于管理和控制Android平台外部存储设备的后台进程,这些管理和控制,包括SD卡的插拔事件检测、SD卡挂载、卸载、格式化等。Rild:Radio Interface Layer Daemon,用于智能手机的通讯管理和控制的后台进程,所有和手机通讯相关的功能,例如接打电话、收发短信/彩信、GPRS等都需要Rild的参与。Vold和Rild都是Nat

2021-07-20 21:29:59 1064

原创 创建型模式——工厂模式(Factory)

概述工厂模式(Factory Pattern)是 Java 中最常用的设计模式之一。 这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。使用示例比如说我们开了一家超市,需要采购辣条,于是我们找到了辣条工厂来采购辣条。 我们并不需要知道辣条是怎么生产出来的,只需要提供所需要的种类,他们生产出来就行了。实现首先创建一个辣条类public interface HotStrip {

2021-07-17 11:17:23 82

原创 创建型模式——单例模式(Singleton)

概述Singleton(单例模式)是一种常用的设计模式。 在Java应用中,单例对象能保证在一个JVM中,该对象只有一个实例存在。这种类型的设计模式属于创建型模式,它提供了一种创建对象的最佳方式。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问,不需要实例化该类的对象。常用方式一、饿汉式public class Singleton { private final static Singleton inst

2021-07-17 09:51:07 192

转载 Android Binder 设计篇

Android Binder 设计篇关键字:Binder Android IPC Linux 内核 驱动摘要Binder是Android系统进程间通信(IPC)方式之一。Linux已经拥有管道,system V IPC,socket等IPC手段,却还要倚赖Binder来实现进程间通信,说明Binder具有无可比拟的优势。深入了解Binder并将之与传统IPC做对比有助于我们深入领会进程间通信的实现和性能优化。本文将对Binder的设计细节做一个全面的阐述,首先通过介绍Binder通信模型和Bind.

2021-07-12 21:44:35 310

转载 1.8 深入理解Surface系统

第8章 深入理解Surface系统8.1 概述Surface是继Audio系统后要破解第二个复杂的系统。它的难度和复杂度远远超过了Audio。基于这种情况,本章将集中精力打通Surface系统的“任督二脉”,这任督二脉分别是:· 任脉:应用程序和Surface的关系。· 督脉:Surface和SurfaceFlinger之间的关系。当这二脉打通后,我们就可以自行修炼更高层次的功夫了。图8-1显示了这二脉的关系:图8-1 Surface系统的任督二脉其中,左图是任脉,右图是督脉。·

2021-07-08 23:44:44 1015

转载 1.7 深入理解Audio系统

第7章 深入理解Audio系统7.1 概述Audio系统是Android平台的重要组成部分,它主要包括三方面的内容:· AudioRcorder和AudioTrack:这两个类属于Audio系统对外提供的API类,通过它们可以完成Android平台上音频数据的采集和输出任务。· AudioFlinger:它是Audio系统的工作引擎,管理着系统中的输入输出音频流,并承担音频数据的混音,以及读写Audio硬件以实现数据的输入输出等工作。· AudioPolicyService,它是Audi.

2021-07-07 23:30:42 1879

转载 1.6 深入理解binder

第6章 深入理解Binder6.1 概述Binder是Android系统提供的一种IPC(进程间通信)机制。由于Android是基于Linux内核的,因此,除了Binder外,还存在其他的IPC机制,例如管道和socket等。Binder相对于其他IPC机制来说,就更加灵活和方便了。对于初学Android的朋友而言,最难却又最想掌握的恐怕就是Binder机制了,因为Android系统基本上可以看作是一个基于Binder通信的C/S架构。Binder就像网络一样,把系统各个部分连接在了一起,因此它是非常

2021-07-06 23:20:59 554 3

转载 1.5 深入理解常见类

5.1 综述初次接触Android源码,最多见到的一定是sp和wp。如果你只是沉迷于Java世界,那么Looper和Handler也是避不开的。本章的目的,就是把经常碰见的这些内容中的“拦路虎”一网打尽,将它们彻底搞懂。至于弄明白它们有什么好处,就是仁者见仁,智者见智了。我个人觉得,可能Looper和Handler会相对更实用一些。5.2 以“三板斧”揭秘RefBase、sp和wpRefBase是Android中所有对象的始祖,类似MFC中的CObject及Java中的Object对象。在Andr

2021-07-04 23:36:18 215

转载 1.4 深入理解Zygote

4.1 概述读者可能已经知道,Android系统存在着两个完全不同的世界:Java世界,Google放出的SDK主要就是针对这个世界的。在这个世界中运行的程序都是基于Dalvik虚拟机的Java程序。Native世界,也就是用Native语言C或C++开发的程序,它们组成了Native世界。初次接触Android的人,可能会有几个疑问:Android是基于Linux内核构建的,它最早存在的肯定是Native世界,那么Java世界是什么时候创建的呢?我们都知道,程序运行时一定要有一个进程,

2021-07-04 12:15:30 726

转载 1.3 深入理解init

版权声明:本文为CSDN博主「阿拉神农」的原创文章,遵循CC 4.0 BY-SA版权协议原文链接:https://blog.csdn.net/Innost/article/details/47204675 第3章 深入理解init3.1 概述init是一个进程,确切地说,它是Linux系统中用户空间的第一个进程。由于Android是基于Linux内核的,所以init也是Android系统中用户空间的第一个进程,它的进程号是1。作为天字第一号的进程,init被赋予了很多极其重要的工作职责,本章将.

2021-07-03 13:49:23 714

转载 1.2 深入理解JNI

目录2.1 JNI概述二级目录三级目录2.1 JNI概述JNI,是Java Native Interface的缩写,中文为Java本地调用。通俗地说,JNI是一种技术,通过这种技术可以做到以下两点:· Java程序中的函数可以调用Native语言写的函数,Native一般指的是C/C++编写的函数。· Native程序中的函数可以调用Java层的函数,也就是在C/C++程序中可以调用Java的函数。在平台无关的Java中,为什么要创建一个和Native相关的JNI技术呢?这岂不是破坏了Java

2021-07-02 00:14:24 668

原创 Android快速入门

Android项目的目录结构Activity:应用被打开时显示的界面src:项目代码R.java:项目中所有资源文件的资源idAndroid.jar:Android的jar包,导入此包方可使用Android的apilibs:导入第三方jar包assets:存放资源文件,比方说mp3、视频文件bin:存放编译打包后的文件res:存放资源文件,存放在此文件夹下的所有资源文件都会生成资源i

2016-03-28 14:28:23 168

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除