自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

陈德山

开心

  • 博客(146)
  • 资源 (3)
  • 收藏
  • 关注

原创 进程启动后到加载Activity的流程源码解析(基于安卓版本28)

zygote进程fork之后,系统会 启动ActivityThread的入口函数main()。ActivityThread准备一个ApplicationThread类,用于和AMS进行通讯。Activity与AMS通讯时通过binder机制进行的。

2023-05-22 23:46:23 552

原创 Protobuf语法解释

先来看一个非常简单的例子。假设你想定义一个“搜索请求”的消息格式,每一个请求含有一个查询字符串、你感兴趣的查询结果所在的页数,以及每一页多少条查询结果。文件的第一行指定了你正在使用proto3语法:如果你没有指定这个,编译器会使用proto2。这个指定语法行必须是文件的非空非注释的第一个行。SearchRequest消息格式有3个字段,在消息中承载的数据分别对应于每一个字段。其中每个字段都有一个名字和一种类型。

2023-05-17 13:42:09 891

原创 Android之大图加载BitmapRegionDecoder

BitmapRegionDecoder是Android中的一个类,用于在不加载整个图像的情况下,仅加载图像的一部分。这对于处理大型图像或需要动态加载图像的应用程序很有用。第一个示例加载整个图像,而第二个示例仅加载图像的一部分。一旦整个图像被加载,您可以使用BitmapRegionDecoder加载图像的一部分。要使用BitmapRegionDecoder加载图像的一部分,您需要首先加载整个图像。这里我们使用了一个InputStream来加载图像,但您也可以使用其他方法来加载图像。3.加载图像的一部分。

2023-05-16 13:19:26 374

原创 车载之-自定义系统服务

SystemServiceRegistry用于给客户端获取服务的类,有一个static块 执行了registerService用于注册.#配置自定义服务selinux角色。#允许所有app使用自定义服务。用户:角色:类型:安全级别。#配置自定义服务类型的权限。

2023-04-13 12:04:07 503

原创 jetpack之Navigation

当前Android开发中使用Fragment来开发页面已经成为主流做法。Fragment轻量、可控性强等优点让人感觉很香。但是Fragment也有自己的硬伤,那就是回退栈与页面参数传递。

2023-04-12 15:05:31 573

原创 车载-串口通讯

与RS-232标准不同,RS-422标准使用两条平衡传输线(A线和B线)传输差分信号,其中A线为正极信号,B线为负极信号,信号传输距离可达1200米。在串口通信中,RXD通常是数据传输的被动方。因此,在将串口信号接口与TTL电路连接时,需要使用电平转换器或者逻辑电平转换器,将RS-232或RS-485电平转换成TTL电平,从而实现串口与TTL电路之间的数据传输。与RS-232标准不同,RS-485标准采用差分信号传输,即使用两个相互反向的信号线(A和B)来传输数据,其中A线为正极性,B线为负极性。

2023-03-30 17:50:16 1579

原创 安卓进阶系列-系统基础

因此,在高性能计算机和嵌入式系统中,人们使用了一些改进的结构来克服这个问题,如缓存和流水线等。此外,由于指令和数据存储在不同的存储器中,可能会导致一些困难,例如在程序中传递指针时,需要将指针的值从数据存储器中传递到指令存储器中。它是基于套接字(Socket)技术实现的,与网络套接字不同的是,Unix Domain Socket不需要通过网络协议栈,而是直接在内核中进行进程间通信。哈弗结构与冯·诺依曼结构不同之处在于它使用了两个独立的存储器,一个用于存储指令,另一个用于存储数据,这两个存储器可以同时访问。

2023-03-17 11:26:27 756

原创 IdleHandler解析

IdleHandler的源码解析

2023-03-16 18:06:42 251

原创 车载系统-开机动画

车载系统开机动画定制。

2023-03-15 18:03:53 1867

原创 Java中的AQS

java中的同步

2023-03-10 18:08:33 2109

原创 ClassLoader详解

ClassLoader讲解,以及java与Android的对比。

2023-02-28 15:12:28 515

原创 C++命名空间

c++的命名空间讲解。

2023-02-26 10:18:17 112

原创 指针常量与常量指针

指针常量与常量指针。

2023-02-25 20:22:02 392

原创 c的内存模型

c语言的内存模型。

2023-02-25 19:25:54 197

原创 指针数组与数组指针

指针数组与数组指针

2023-02-25 18:56:03 533

原创 指针函数与函数指针

c语言中的指针函数与函数指针的区别。

2023-02-25 18:44:09 68

原创 typedef在c语言中的作用

typedef在c语言中的作用。

2023-02-25 18:40:07 2904

原创 AndroidX版本不统一问题

主要解决AndroidX版本不统一,报错的问题。

2023-01-06 10:20:46 217

原创 Android实现动态换肤-原理篇

在安卓中工作中,又是我们会遇到换肤的需求,虽然我们可以使用策略模式以及在app中保存多套UI的方式实现此功能,但是并不能通过网络请求拿到资源包来动态换肤,今天讲的这种方式时支持插件化的方式动态实现换肤的。

2022-11-16 09:29:32 852

原创 AndroidStudio历史版本下载

主要记录下载as链接

2022-10-27 09:52:41 210

原创 Java中的反射用法

android很多第三方框架都用到了动态代理的技术,并且反射更常见,比如hook ams做集中登录,Retrofit根据接口直接实现请求方法等,所以学习反射对于通往高级android是一个必经之路。

2022-09-21 23:55:09 2525

原创 android中输入系统之内核到InputManagerService过程(源码)

这是一个系列的文章,今天先分析内核到ims的过程,以后有时间分析ims到wms以及从wms到viewRoot的过程。

2022-09-07 23:25:32 1044

原创 Android中注解处理器系列之-简单使用

安卓中很多框架都用到apt技术,虽然我们平时开发中很少用到apt技术,但是我们以后可能转为架构师,对代码进行架构设计等场景时,会用到apt。

2022-09-05 23:44:03 665

原创 android崩溃系列-崩溃原理分析

Android中Crash原理分析。

2022-09-04 23:29:07 1127 2

原创 IntentService的使用以及源码解析

主要讲解IntentService 的使用以及源码解析,虽然IntentService已经过时,但是明白其原理是必要的,如果以后有时间我再补充JobService 的使用。

2022-09-04 00:18:33 137

原创 Android中Spi机制的使用及源码原理解析

spi的加载机制,以及原理解析。

2022-09-01 22:30:58 583

原创 ams启动过程以及App的启动过程

主要讲解ams的启动以及app的启动流程(待完善时序图)。

2022-08-31 14:11:34 943

原创 安卓Handler机制重要知识点汇总(必知必会)

handler中有很多小细节,也容容易在面试中会被问到,这些是自己在平常中积累的一些知识点,自认为比较全面,拿来与读者分享,谢谢。

2022-08-25 23:13:26 263

原创 Android中获取唯一的id

由于android的版本更新,无法获取mac以及Imme号,也没有官方固定的api来获取唯一Id,所以需要一个工具类来获取设备唯一的id,但是此工具类并无法做到百分百唯一,但是可以在应用中使用。

2022-08-24 10:04:00 3755

原创 Android Gradle依赖汇总

依赖配置目前 Gradle 版本支持的依赖配置有(Android Studio 3.0及以上版本,Gradle Version在4.1及以上版本,Android Plugin Version在 3.0及以上版本。):implementation、api、compileOnly、runtimeOnly 和 annotationProcessor。已经废弃的配置有:compile、provided、apk、providedCompile。各配置项具体作用如下[括号后面为对应的已废弃的配置]:impl

2022-05-13 07:29:01 1452

原创 AndroidStudio本地依赖aar

文章目录高版本依赖aar低版本依赖网络库中依赖高版本依赖aargradle使用是gradle 4.1,对应Android Studio gradle 3.0.1插件。高版本gradle上使用aar本地依赖很简单,基本上与jar的依赖方式一致。将所需要的aar包copy到应用所在module的libs目录下在应用所在module里的build.gradle里添加:compile fileTree(dir: 'libs', include: ['*.jar','*.aar'])低版本依赖低版

2022-05-06 14:28:33 2371

原创 Android启动流程概述

文章目录启动流程总体启动流程ServiceManager进程启动Binder线程初始化Activity的启动流程启动流程Android启动是一个比较复杂的过程,今天只是粗略罗列一下Android的整体的启动流程,之后会详细就每个流程进行分析。每天进步一点点。总体启动流程开机按钮引导程序BootLoaderLinux内核启动启动init进程查找init.rc文件,并解析。Zygote进程启动SystemServer进程启动Binder线程池开启SystemServiceManage

2022-04-26 21:51:35 1377

原创 Android之Zygote和SystemServer启动过程

文章目录总体时序init启动流程init进程的启动三个阶段入口函数property_inithandle_property_setinit.rc文件解析init.rcAndroidRuntime总体时序先概述一下总体运行流程,当按电源键,首先是加载系统引导程序BootLoader,然后启动linux内核,再启动init进程,最后Zygote进程启动完成。理论上Android系统中的所有应用程序理论上都是由Zygote启动的。init启动流程用户空间的第一个进程,进程号为1(在《深入理解安卓内核思

2022-04-21 22:30:53 2303

原创 Android中强制指定库依赖版本

多个版本依赖出现问题。configurations.all { resolutionStrategy { force 'androidx.core:core:1.0.0'//强制指定的版本 }}

2022-04-21 17:42:00 3334

原创 Glide适配AndroidX

Glide适配AndroidX后,出现注解报错的问题,修改依赖方式如下: implementation 'com.github.bumptech.glide:glide:4.9.0' annotationProcessor 'com.github.bumptech.glide:compiler:4.9.0' annotationProcessor 'androidx.annotation:annotation:1.0.0'...

2022-04-21 17:07:51 1150

原创 Execution failed for task解决办法

AS 编译出现 Compilation error. See log for more detailsorg.gradle.api.tasks.TaskExecutionException: Execution failed for task ‘:xxx:compileDebugKotlin’在AS Terminnal 中输入命令:gradlew compileDebugKotlin --stacktrace既可以看到具体的错误,然后修改就好了...

2022-03-03 21:32:27 12029

原创 Android中的尺寸:densityDpi,heightPixels,widthPixels,scaledDensity,xdpi,ydpi

文章目录尺寸类型真机测试尺寸类型以下尺寸来自Android类DisplayMetrics下,描述摘自源码描述。densityDpi:The screen density expressed as dots-per-inch. May be either 120,160 or 240xdpi:The exact physical pixels per inch of the screen in the X dimension.ydpi:The exact physical pixels per

2021-12-09 09:27:19 2887

原创 Android路径

Environment.getDataDirectory() = /dataEnvironment.getDownloadCacheDirectory() = /cacheEnvironment.getExternalStorageDirectory() = /storage/emulated/0Environment.getExternalStoragePublicDirectory(“test”) =/storage/emulated/0/testEnvironment.getRootDirec

2021-06-17 14:25:56 90

转载 OpenGL ES 缩放/灵魂出窍/抖动/闪白/毛刺效果滤镜

https://www.jianshu.com/p/994925b21d5e

2021-05-26 12:37:16 300

原创 Android中的阿里云仓库

AndroidStudio中经常遇到下载不成功的问题,添加阿里云仓库多半能解决问题。 maven { url "http://maven.aliyun.com/nexus/content/groups/public/"} maven { url 'https://maven.aliyun.com/repository/jcenter' } maven { url 'https://maven.aliyun.com/repository/gradle-plugin' }

2020-12-23 21:21:12 2561

Android中二维码扫描的实现

主要对二维码扫描功能的实现,在Zxing库的基础上进行开发,主要是对相机类的调用。

2017-10-23

自定义锁屏

在用户锁屏的情况下,类似qq音乐似的,弹出锁屏,方便用户查看信息。

2017-07-31

空空如也

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

TA关注的人

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