自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(33)
  • 资源 (7)
  • 收藏
  • 关注

原创 Zygote如何启动SystemServer进程?

我们知道了Zygote进程负责启动Systemserver进程的。在这篇文章中,我们具体讲讲Zygote启动SystemServer进程时,经历了什么?SystemServer主要是用来创建各种系统服务的,像AMS、PMS、WMS等常见的系统服务,都是在SystemServer进程里创建的,它们并没有属于自己的一个进程。

2023-07-28 16:12:22 124

原创 Android屏幕自动适配

在Android开发中,碎片化比较严重,不同机器设备,有千奇百怪的分辨率,而如果想要我们的UI,在不同分辨率的设备上显示比例一致的话,就要去适配不同的分辨率。所以就出现了多种UI尺寸的适配方案。

2023-07-19 11:37:17 239

原创 解析zygote启动过程

在Android系统中,Dalvik虚拟机或者是ART,应用程序进程,还有运行系统的关键服务(比如SystemServer等)进程都是由zygote来创建的,zygote通过fork来创建子进程。。通过,我们能知道zygote进程是由init进程启动时创建而成的。这里有个小知识点:起初zygote进程的名称并不是叫“zygote”,在源码中能看到它修改进程名为zygote的地方,代码(frameworks/base/cmds/app_process/

2023-07-17 12:14:49 152

原创 解析init.rc文件

在中,我们知道了init进程启动后,会去解析init.rc配置文件,然后会去启动zygote进程。这篇文章我们就来简单分析下init.rc文件是如何被解析并启动zygote的。以下分析的源码版本号:Android 8.0。

2023-07-17 12:13:28 226

原创 Android系统启动流程

本篇文章我们不会涉及到源码,只是对Android系统的启动流程做一个简单的介绍;注意:该篇文章并不会很详细地去讲到系统启动的各个环节,只会涉及到几个重要的点而已。

2023-07-17 12:11:12 279

原创 简单讲下Android LeakCanary的原理

简单讲下Android LeakCanary的原理

2023-04-07 11:33:14 349

原创 崩溃优化之Java层crash原理分析

崩溃优化之Java层crash原理分析

2023-01-17 11:18:31 957

原创 Kotlin中的reified关键字

reified关键字

2022-12-06 17:55:53 2886

原创 Kotlin的object关键字

kotlin的object关键字

2022-12-05 18:11:54 736

原创 Kotlin和Java中的字符串比较

字符串比较

2022-12-05 15:27:53 163

原创 kotlin反引号中的函数名

kotlin反引号中的函数名

2022-12-05 14:26:00 172

原创 Kotlin的Nothing类型

Kotlin的Nothing类型

2022-12-05 12:24:45 1029

原创 Kotlin的Unit函数讲解

Unit函数讲解

2022-12-05 12:17:46 752

原创 Kotlin中的step、downTo、until和..

Kotlin中的step、downTo、until和..

2022-12-05 12:10:29 552

原创 Kotlin中的编译时常量

Kotlin中的编译时常量、const val

2022-12-05 11:52:38 347

原创 Android动画总结

Android动画使用总结

2022-11-22 09:52:54 242

原创 Android AIDL的使用及源码分析

Android aidl 的原理及使用

2022-11-17 11:42:21 805

原创 retrofit、okhttp3在Android4.4报NoSuchMethodError、Expected Android API level 21+ but was 19错误的解决方法

retrofit、okhttp3在Android4.4报NoSuchMethodError错误的解决方法;retrofit、okhttp3适配Android4.4

2022-10-25 15:47:44 1901

原创 使用profiler+MAT来检测内存泄露

使用profiler+MAT来检测内存泄露

2022-09-27 09:51:20 94

原创 setContentView内部是如何加载View数据的?

setContentView内部原理

2022-09-14 12:18:09 108

原创 首次启动App,Activity的onCreate方法是如何被调用的?

首次启动App,Activity的onCreate方法是如何被调用的?

2022-09-14 10:30:07 363

原创 首次启动App,Application里的onCreate方法是如何被调用到的?

我们知道onCreate是Activity的第一个生命周期,但是为什么它是第一个呢,它是怎么被触发调用的?在这里就调用了app的onCreate方法。

2022-09-13 17:00:54 1172

原创 kotlin类初始化顺序

kotlin类初始化顺序

2022-08-25 17:55:24 758

原创 kotlin的先决条件函数

kotin里的先决条件函数的整理

2022-08-25 10:30:54 900

原创 kotlin中的内联函数inline

kotlin的内联函数-inline

2022-08-24 16:45:13 662

原创 Android事件分发的底层原理

在Android中,Touch事件的分发分服务端和应用端。在服务端由WindowManagerService(借助InputManagerService)负责采集和分发的,在应用端则是由ViewRootImpl(内部有一个mView变量指向View树的根,负责控制View树的UI绘制和事件消息的分发)负责分发的。当输入设备可用时,比如触屏,Linux内核会在/dev/input中创建对应的设备节点。IMS(InputManagerService)所做的工作...

2022-02-27 14:14:11 2133

原创 关于RecyclerView的缓存

RecyclerView有4级缓存如下:层级 缓存变量 缓存名 容量 数据结构 缓存用途 1 mChangeScrap 可见缓存 x(无限制) ArrayList 快速知道哪个可见的View被移除还是被添加 2 mCachedViews 缓存列表 2 ArrayList 用于移除屏幕的View的回收和复用 3 mViewCacheExtension 自定义缓存 x 一般不

2022-02-26 17:23:30 4177

原创 kotlin中的var和val与编译时常量

我们都知道,在kotlin中,var定义的变量是可读可变的,而val定义的变量是只读不可变的,这是为什么呢?这里我们来看下面的代码:class Player{ val name = "jack" var age = 11}这里我简单的定义了一个Playerl类,里面有个val定义的变量name,还有一个var定义的变量age,我们把这段Kotlin代码转换为java代码来看下:这是转换后的java代码,这下我们就知道了,但我们用var定义的变量时,编译器会自动帮我们写好.

2021-12-06 15:43:25 2360

原创 Android Jetpack Navigation的使用

Navigation可用于Fragment之间的跳转第一步:先建立好两个fragment第二步:在res文件夹下,新建一个navigation的文件夹,并创建文件第三步:打开刚才建好的的nav.xml,加入前面建好的两个fragment,并建立连接...

2021-09-16 09:51:26 271

原创 JetPack Compose简单介绍

它是2019 年 I/O 大会上公布的新的 UI 库,在今年下半年会发布它的正式版。既然它是一个UI库,那就要和我们传统写UI的方式作对比了。①传统写UI的方式:就是先在建立一个xml文件,在里面写好布局好,再回到Java文件(或者是Kotlin文件)里去把控件实例化出来后,再去调用。②Compose这个库:或者说它是一个框架,它重新定义了Android UI的写法,不再使用xml文件了,而是直接在Kotlin文件(只支持Kotlin)里,写布局的代码。官方对Compose的评价是“让困

2021-06-29 11:17:43 6899 6

原创 Android 布局优化

尽量删除无用的控件和层级;如果布局中既可以使用LinearLayout,也可以使用RelativeLayout,那么就采用LinearLayout,因为RelativeLayout的功能比较复杂,它的布局过程需要花费更多的CPU时间。FrameLayout和LinearLayout一样都是一种简单高效的ViewGroup。...

2021-06-21 10:29:33 102 2

原创 Android App打包流程

简单总结下app打包的流程:

2021-06-21 09:25:41 3234

原创 Android的控件绑定----ViewBinding

在Android开发中,控件的绑定是开发者无法绕开的一道程序。是Android开发中最原始,也是最基础的一种获取View的方法。在一个复杂布局的页面时,我们要一个个控件去调用findViewById方法去绑定,代码量会增多。那有什么方法能让我们findView更简单些呢,也让我们的代码能变得更加简洁,请往下看:·ViewBindingViewBinding是Google在2019年I/O大会上公布的一款Android视图绑定工具,也是Google强烈推荐我们使用的。原理:Google在Andro

2021-05-18 22:52:13 3293

ScrollView+ListView 解决滑动冲突

使用外部拦截法 、内部拦截法解决ScrollView+ListView 解决滑动冲突

2022-11-21

Android Aidl的简单demo

Android Aidl的简单demo,资源包括服务端和客户端的代码

2022-11-17

Android音视频通话例子

Android音视频通话例子

2022-05-13

基于socket实现的android实时投屏(涉及H264、265编解码)

基于socket实现的android实时投屏(涉及H264、265编解码)

2022-05-13

android录屏代码简单例子

android录屏代码简单例子

2022-05-12

H264player播放器

H264player播放器

2022-05-11

检测卡顿的代码(利用ChoreographerHelper、BlockCanary)

检测卡顿的代码(利用ChoreographerHelper、BlockCanary)

2022-05-09

操作组合键来响应某个动作,安卓组合键

这是一个安卓组合键的demo。在做Tv端的apk时,有时候需要操作组合键来响应某个动作,这个demo,实现了这个功能

2021-09-01

PlayVideoTest2.rar

android studio下的项目,可以简单的实现播放sd卡里的视频,利用VIdeoVIew实现的,实现过程比较简单,看代码一般可以理解

2020-08-25

空空如也

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

TA关注的人

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