自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 Android(Kotlin) 委托(by) 封装 SharedPreferences

使用委托可以提高代码的灵活性和可读性,减少样板代码的编写,提高代码的复用性和可维护性。

2024-04-08 18:33:22 355 2

原创 Android RecycleView 异步缓存 itemView 提升滑动性能

最近在做性能检测的过程当中,设置了多布局的 RecyclerView 在快速滑动中会有一些卡顿,所以将解决方案在此文记录一下

2024-04-01 17:10:46 435

原创 Android ANR 日志分析定位

/data/anr/ 路径只有 root 权限才能够进行访问,在非 root 权限的情况下需要 adb 命令导出相关的日志文件后筛选查看 ANR 的日志信息

2024-03-01 17:53:33 741

原创 Android TextView.setText() 引发的卡顿问题

最近在检测性能中,发现 RecycleView 在滑动过程中的TextView.setText() 有一些耗时,从主观上体验也会有一点卡顿,然后进入源码看看是怎么回事

2024-02-21 12:00:23 1251

原创 Android String.format() 引发的卡顿问题

最近在检测应用的性能时,发现在短时间内大量调用 String.format() 时会引发卡顿,所以马上进入源码看看有没有哪里能够优化的

2024-01-31 14:47:59 503

原创 Android Studio 下载安装配置使用入门【2024年最新】

Android Studio 是谷歌官方提供的主要集成开发环境(IDE),专为 Android 平台应用开发而设计。

2024-01-29 21:48:44 1497

原创 Android imageView.setImageXXX() 引发的卡顿问题

最近在检测应用的性能时,发现 imageView 在加载图片竟有一些耗时,于是进入源码来看看这几个给 imageView 设置图片的方法都有什么区别

2024-01-29 16:27:17 662

原创 Java 四大引用

Java 中的四大引用类型是指 JVM 提供的四种不同生命周期的引用类型,这些引用类型主要用于帮助我们更好地控制对象的生命周期,尤其是在内存管理和垃圾回收方面。

2024-01-23 15:30:52 388

原创 Android Traceview 定位卡顿问题

Traceview 可以通过图形化界面查看应用程序的代码执行细节,包括每个方法的调用次数、方法调用的时间消耗、方法调用堆栈等信息。

2024-01-15 11:51:32 598

原创 Android readelf 工具查找函数符号

readelf 是一个用于显示 ELF 文件的信息的工具,它可以显示 ELF 文件的各个部分的详细信息,例如头部信息、节(section)表、符号表、动态重定位表等。

2024-01-08 12:19:40 795

原创 Android 收集崩溃(crash)日志并输出到本地

通过设置自己的异常处理器来替换默认的处理器,以实现自定义的异常处理逻辑

2024-01-04 17:30:37 1020

原创 Android RecyleView 使用 Gilde 加载图片引发的卡顿问题

尽管 Glide 是一个非常优秀的图片加载框架,但是在RecyleView 上使用 Glide 加载图片还需注意性能问题

2024-01-04 14:22:53 775

原创 Android Kotlin 协程作用域执行特性

通过协程作用域,可以更好地组织和管理协程的执行,提供更好的代码结构和可维护性。

2023-12-28 12:01:34 764

原创 Android 主线程绑定 CPU 大核(提升应用整体性能)

通过绑定,主线程可以充分利用大核的计算能力,提升程序的运行速度和响应性能。

2023-12-18 16:30:57 1257

原创 Android Compose Transition 动画

通过使用 Compose 的 Transition API,您可以在应用中创建各种各样的动画效果,从而增强用户体验并提高应用的吸引力。

2023-12-14 11:44:58 250

原创 Android 滥用 SharedPreference 导致 ANR 问题

ANR(Application Not Responding) 指的是应用程序无法在规定的时间内响应用户输入事件,导致应用失去响应并无法继续正常运行。

2023-12-11 20:54:29 252

原创 Kotlin 操作集合的高阶函数

这些高阶函数都是 Kotlin 标准库中预定义的函数,可以直接在代码中使用。Kotlin 标准库提供了大量的高阶函数,从而让编程变得更加简洁、灵活和易于维护。

2023-11-01 16:00:15 796

原创 Kotlin 作用域函数(apply、also、run、let、takeIf)

在 Kotlin 中,作用域函数是一组用来在特定作用域中操作对象的函数。它们允许在给定作用域内对对象进行属性赋值、方法调用、转换等操作,并返回相应的结果。

2023-09-12 19:36:13 326

原创 Android FileObserver 的使用与简要原理

需要注意的是,FileObserver 在底层的实现使用了 Linux 的特定功能,因此只能在 Android 上使用,而不适用于其他操作系统或平台。

2023-09-01 16:56:45 916

原创 Android AccessibilityService 实现《李跳跳》功能

AccessibilityService(无障碍服务)是 Android 操作系统中的一个功能,旨在帮助用户具有视觉、听觉或运动上的障碍更轻松地使用设备。

2023-07-11 16:45:43 3165 1

原创 Android Retrofit 源码解析

在 Android 开发中,Retrofit 是一个非常流行的网络请求库。它是由 Square 开发的,用于简化 Android 应用程序与网络服务器之间的通信。

2023-07-07 15:31:29 651

原创 Android Okhttp3 分发器源码解析

在 OkHttp 中,分发器(Dispatcher)是负责调度和执行网络请求的组件。

2023-07-04 21:30:40 390

原创 Android Okhttp3 拦截器源码解析

在 OkHttp 中,拦截器(Interceptor)是一种强大的机制,用于在发送请求和接收响应的过程中,对请求和响应进行拦截、处理和修改。

2023-06-30 18:40:38 656

原创 Android Studio 配置 DCL 单例脚本

DCL(Double-Checked Locking)单例是一种用于创建单例对象的设计模式。单例模式是一种创建型模式,用于确保一个类只有一个实例,并提供全局访问点。

2023-06-26 10:47:12 780

原创 System.loadLibrary() 和 System.load() 的区别

System.loadLibrary() 和 System.load() 的区别

2023-06-19 12:56:29 1217

原创 Android LayoutInflater 监听单个控件渲染时长

通过调用 setFactory2() 方法并传递自定义的 Factory2 实例,可以拦截和修改 LayoutInflater 创建视图对象的过程。拦截后可以做任何想做的事,例如动态地改变视图的外观、行为或属性。

2023-06-14 11:33:19 357

原创 Android AsyncLayoutInflater 异步加载布局

AsyncLayoutInflater是 Android 提供的一个用于异步加载布局的工具类。可以在异步线程上加载布局文件,以避免在主线程上加载布局过于耗时而导致的 UI卡顿问题。

2023-06-13 17:55:59 2370

原创 Android FFmpeg 解码 OpenSL ES 播放音频

本篇文章仅仅是实现了 FFmpeg 和 OpenGL ES 配和播放媒体文件音频的功能,其中有非常多的细节没有去完善(比如函数错误返回值的处理、内存泄漏等等),因为我为了更好的阅读和理解 FFmpeg 和 OpenSL ES,对非主线代码做了删减,所以读者可以自行添加

2023-06-06 16:58:31 827 1

原创 Android 反编译工具 jadx-gui

jadx-gui是一种基于jadx项目的图形界面工具,用于反编译Android应用程序的工具。通过使用jadx-gui,开发人员可以打开APK(Android应用程序包)文件,并查看其反编译的源代码。

2023-06-05 14:20:41 2720

原创 FFmpeg 常用命令

调整比特率、调整视频帧率、调整视频分辨率、修改视频的宽高比

2023-05-31 15:40:28 2120

原创 FFmpeg 媒体文件播放 格式变化流程简述

YUV数据和PCM数据是解压缩后的视频和音频数据的常见表示形式,它们在多媒体应用中广泛使用。

2023-05-18 16:53:54 707

原创 Android ANativeWindow 渲染画面

通过使用 ANativeWindow 接口,开发人员可以直接与底层的图形系统交互,实现高性能的图像渲染和处理。它在游戏开发、图像处理和视频播放等领域中得到广泛应用。

2023-05-17 11:00:14 1304

原创 FFmpeg 安装和使用

此文仅说明 windows 系统下的安装和使用,适合新人小白

2023-05-09 17:35:46 1101

原创 Android APK 反编译后重新打包并签名

Apktool 是一个逆向android非常有用的工具,可以用来反编译apk文件,并且能在修改部分资源文件后,重新打包成一个新的apk。

2023-05-04 17:56:49 1822

原创 Android OpenGL 渲染相机预览画面显示体系

在 Android 当中,运用的是OpenGL ES,它是OpenGL的一个轻量级版本,专门用于在移动设备、游戏控制台、嵌入式系统等嵌入式环境中使用。

2023-04-23 17:39:29 1054

原创 C++ 面向对象、多继承

java 和 c++ 面向对象的区别

2023-04-14 16:21:20 565

原创 C/C++ 可变参数

相比 java 而言,C/C++ 的可变参数在使用上就有点复杂,在方法上定义参数的时候直接用 ... 代表可变参数。

2023-04-13 17:50:06 136 1

原创 C/C++ 常量指针、指针常量、常量指针常量

虽然使用常量指针或指针常量可以使程序更加安全和稳定,但是它们也可能会增加程序的复杂性,因此应该根据实际情况选择合适的指针类型。

2023-04-11 10:18:19 51

原创 C/C++ 指针传递的作用

所以,不管是二级指针还是三级指针,传递内存地址给函数的目的都可以这样子去理解

2023-04-06 14:48:34 326

原创 C/C++ 字符串的转换、比较、查找、拼接

手写完这些之后,深刻意识到,java 的底层就是 C 这一句话,因为这些功能 java 一行就搞定了的。

2023-04-04 18:21:44 152

空空如也

空空如也

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

TA关注的人

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