- 博客(118)
- 收藏
- 关注
原创 安卓开发用到的设计模式(1)创建型模式
本文介绍了在Android开发中常用的创建型设计模式及其应用场景。单例模式用于确保类只有一个实例,如系统服务和数据管理器;工厂模式通过隐藏创建逻辑来简化对象创建,如Fragment和IntentService的实例化;抽象工厂模式用于创建一系列相关对象,如主题系统和数据访问层;建造者模式通过分离构建过程与表示来创建复杂对象,如Dialog和Retrofit的配置;原型模式通过复制原型实例来创建新对象,如Intent的克隆和配置对象的复制。
2025-05-21 22:12:52
750
原创 驾驭数据洪流:大数据治理的全面解析与实战方案
未来,大数据治理将趋向AI驱动、主动式、数据网格、数据可观测性、隐私增强计算和实时治理。总之,大数据治理是组织在数字时代取得成功的关键,需持续改进以将数据转化为业务增长和创新的动力。
2025-05-14 10:13:04
1053
1
原创 基于Docker的Bitwarden的私有本地部署
本文介绍了如何在本地基于Docker部署Bitwarden密码管理工具,以实现更稳定和安全的服务。首先,作者选择在腾讯云应用服务器上安装宝塔面板和Docker,并拉取vaultwarden/server镜像,避免使用旧版或不兼容的镜像。接着,通过创建容器、配置端口映射、文件挂载和反向代理,确保服务正常运行。为了增强安全性,作者还配置了HTTPS证书,并关闭了注册功能,限制只有特定用户可以使用该服务。最终,用户可以通过浏览器访问配置的域名,创建账号并登录使用自托管的Bitwarden服务。
2025-05-11 23:28:17
325
原创 Android Compose 中 Side Effects 和 State 相关的 API 使用
理解 Side Effects 和 State 是构建复杂且响应迅速的 Android Compose 应用的关键。允许你在 Composable 的生命周期内安全地执行 Composable 范围之外的操作,并提供了各种 API 来处理不同类型的副作用,例如一次性操作 ()、生命周期绑定的协程 ()、引用最新状态 ()、资源清理 () 和异步状态生产 ().State是驱动 UI 更新的数据,Compose 提供了多种 API 来管理不同生命周期和复杂度的状态,包括简单的内部状态 (remember和。
2025-05-03 11:37:55
889
1
原创 安卓 Compose 相对传统 View 的优势
Jetpack Compose凭借声明式编程、Kotlin语法、智能重组、高效状态管理等核心优势,在开发效率、性能表现、可维护性、可测试性等方面全面超越传统View系统。尽管对于习惯传统开发模式的开发者而言,Compose存在一定学习曲线,但随着移动应用开发需求的不断升级,Compose所带来的长期价值和显著优势使其成为安卓UI开发的必然趋势,将引领安卓应用开发迈向新的高度。
2025-04-25 10:59:41
731
原创 音乐播放对接状态栏MediaSession控制
本文介绍了在 Android 应用中对接音视频播放与系统状态栏 MediaSession 控制的两种主要方式:使用和使用ExoPlayer。虽然可以实现基本的音频播放,但要对接系统通知栏和状态栏的播放控制,需要开发者手动创建和管理以及自定义通知栏,处理各种播放控制事件,实现较为复杂。ExoPlayer是 Google 官方推荐的更强大、更灵活的媒体播放库,并且与库中的和集成得更好。使用ExoPlayer和可以更简洁地实现状态栏和通知栏的播放控制,ExoPlayer会自动处理大部分与系统媒体控制的交互。
2025-04-18 11:03:49
924
原创 System 应用访问 Vendor 库的详细方案
SELinux 是 Android 的强制访问控制 (MAC) 系统,它通过安全策略规则来限制进程对系统资源的访问。每个进程和文件都有一个安全上下文(Security Context),SELinux 策略定义了不同安全上下文之间的交互规则。默认情况下,system应用的上下文和vendor库的上下文可能不允许直接访问。通过自定义 SELinux 策略,可以显式地允许特定的system应用访问特定的vendor库。详细配置方法:使用查找你的system应用进程的 SELinux 上下文。
2025-04-12 17:41:44
695
原创 详解 kotlin 相对 Java 特有的关键字及使用
Kotlin 在兼容Java的基础上,引入了许多特有的关键字,这些关键字为Kotlin带来了简洁、高效的编程体验。这些Kotlin特有的关键字为开发者提供了更丰富、灵活的编程方式,使得代码更加简洁、易读和高效。
2025-04-10 09:52:34
761
原创 安卓Compose中accompanist库使用详解
优势:Accompanist 显著简化了权限管理、复杂布局、动画过渡等场景的开发成本。注意事项:随着 Compose 版本更新,部分功能(如分页组件)可能迁移至官方库,建议定期查阅 官方迁移指南。最佳实践:通过模块化依赖管理(BoM)确保版本兼容性。通过合理使用这些库,开发者可大幅提升 Compose 开发效率,同时保持代码的简洁性与可维护性。
2025-03-12 15:22:36
1359
原创 2025年上海安卓发展机遇
安卓开发者应重点关注 车载系统、工业物联网、医疗健康应用、AR/VR交互 四大方向,结合上海产业政策红利,通过技术跨界(如AI+Android)和生态协作抢占先机。同时,及时跟进如鸿蒙原生适配、低空经济等新兴领域,拓展技术边界。
2025-03-02 19:59:13
587
原创 2025年如何实现安卓、iOS、鸿蒙跨平台开发
优先 ArkUI-X:若项目需深度集成鸿蒙特性(如多设备协同),且希望长期投入鸿蒙生态。选 Flutter/React Native:若团队已有经验,且需快速覆盖主流平台。混合开发:核心功能用原生(如鸿蒙分布式模块),其他部分用跨平台框架,平衡效率与体验。更多技术细节可参考华为开发者文档、Flutter 鸿蒙社区适配指南。
2025-02-28 12:45:44
2534
原创 Android 中音频焦点的使用场景及示例
通过以上示例,我们可以看到音频焦点在 Android 应用中的重要性及其实现方式。合理使用音频焦点可以让应用提供更好的用户体验,与其他应用和谐共存。在实际开发中,建议根据具体场景选择合适的实现方式,并注意版本兼容性处理。
2024-09-18 22:47:35
1214
原创 编程学习中的“知识宝库”打造秘籍
在编程学习的海洋中,一个高效的笔记记录和整理方法是我们不可或缺的工具。通过选择合适的工具、建立记录习惯、定期整理笔记、使用标签和索引以及建立知识图谱等方法,我们可以打造属于自己的编程学习“知识宝库”,为我们的编程之路提供有力的支持。让我们一起行动起来,用心记录每一个知识点,整理出属于自己的编程知识体系,在编程的世界里不断前行。
2024-08-25 00:03:35
393
原创 Kotlin 的优势:现代编程语言的卓越选择
简洁与优雅的语法空安全特性函数式编程,支持高阶函数、lambdaKotlin 内联函数与 Java 的互操作性强大的类型推断协程支持`lazy` 委托object 单例模式区间表达式现代的开发工具支持
2024-07-29 22:22:01
566
原创 安卓14中Zygote初始化流程及源码分析
日志抓取结合日志与源码分析systemServer zygote创建时序图一般应用 zygote 创建时序图向 zygote socket 发送数据时序图
2024-07-12 23:17:16
1139
1
原创 安卓Framework开发快速分析日志及定位源码
如何区分源码中 main system events 日志查看 Activity 生命周期日志分析 events 日志在源码中位置应用进程ID助分析具体应用ProtoLog 动态开关日志如何快速定位相关流程的代码位置
2024-07-01 11:59:48
925
原创 adb常用命令详解--提升开发效率利器
文件管理截屏与录屏logcat 使用dumpsys 相关ps 相关am 相关pm 相关wm 相关setprop 设置属性input 相关adb connect 远程无线调试
2024-06-17 14:00:18
1306
原创 Android 性能优化--APK加固(1)混淆
为什么要开启混淆如何开启代码混淆如何开启资源压缩代码混淆配置代码混淆后,Crash 问题定位
2024-02-29 13:25:57
1454
2
原创 安卓相机慢动作的软件实现要点
慢动作英文称呼SlowMotion,也就是高帧率录像,如果以正常30帧播放,就能看到慢动作效果,可以用来拍摄快速移动物体的瞬间,比如鱼儿的游动、终点冲刺结果等。本文主要介绍慢动作在安卓相机应用中如何实现
2024-02-25 16:21:41
1982
1
翻译 [译]Android性能优化-Kotlin优化isBlank
最近在优化 Jetpack Compose 运行时的部分时,偶然发现了一个看似无害的 API isBlank() 。如果调用的字符串为空或仅由空格字符组成,则此 API 将返回 true 。但它真的无害吗?让我们看一下 JVM 实现,以更好地了解它的作用
2024-02-23 10:55:53
226
原创 安卓OpenGL添加水印并录制(二)---抖音录制原理
通过 前文 我们知道了如何采集 Camera 视频,叠加水印、贴纸保存为MP4,但是录制视频并没有音频,本文进一步介绍添加音频录制实现。
2024-02-20 22:15:54
1396
2
原创 如何把手机平板变为电脑的屏幕
闲置的手机平板、触屏音箱等,均可作为电脑的扩展屏,为电脑增加一块显示屏,本文介绍如何使用免费的软件spacedesk实现。
2024-02-11 21:37:08
6903
1
原创 安卓SurfaceTexture中updateTexImage使用及源码分析
在Android系统中,SurfaceTexture 是一个特殊的类,它将来自硬件纹理缓冲区(如相机预览流或视频解码输出)的图像数据转换为 OpenGL ES 可以直接使用的纹理。updateTexImage() 方法是 SurfaceTexture 类的核心方法之一,此方法的主要作用是从 SurfaceTexture 内部持有的图像缓冲区中取出最新一帧,并将其内容复制到与 SurfaceTexture 关联的 OpenGL 纹理上。这对于实时图形渲染、视频播放以及从相机捕获并实时处理图像等场景至关重要。
2024-02-02 22:49:08
2188
2
原创 安卓MediaRecorder(4)视频采集编码写入详细源码分析
通过 文2 我们知道了 MediaRecorder 各个接口 Framework 中的实现。通过 文3 我们 知道了 MediaRecorder 底层音频的采集、编码、写入文件等详细流程。本文主要介绍 MediaRecorder 视频的采集、编码等相关流程。
2024-01-24 22:07:39
1632
1
原创 安卓MediaRecorder(3)音频采集编码写入详细源码分析
前言音频采集音频初始化AudioRecord 分析AudioSource 采集到音频音频编码音频编码后数据处理MPEG4Writer写入音频编码后数据到文件MPEG4Writer::Track 取编码后的音频编数据结语
2024-01-13 11:19:43
1735
1
原创 Intellij建议用String替换StringBuilder
本文探讨了在Java开发中字符串拼接的性能问题,特别是String与StringBuilder的使用场景。通过性能测试和字节码分析,文章指出在简单拼接场景下,String的+操作符由于JDK的底层优化,性能与StringBuilder相当,且代码更简洁。然而,在循环累加等复杂场景中,StringBuilder仍具有明显性能优势。文章建议根据具体场景选择合适的方式:简单拼接使用String,循环拼接使用StringBuilder,并提供了最佳实践建议。
2024-01-01 13:24:40
676
1
原创 安卓MediaRecorder(2)录制源码分析
JAVA new MediaRecorder() 源码分析android_media_MediaRecorder.cpp native_init()MediaRecorder.java postEventFromNativeandroid_media_MediaRecorder.cpp native_setup()MediaRecorder 参数设置MediaRecorder.prepare 分析MediaRecorder.start 分析MediaRecorder.stop 分析
2023-12-09 16:29:42
1741
2
原创 Android Bitmap 使用Vukan、RenderEffect、GLSL实现模糊
使用 Vukan 模糊使用 RenderEffect 模糊使用 GLSL 模糊RS、Vukan、RenderEffect、GLSL 效率对比
2023-11-27 22:43:03
2922
1
原创 安卓使用MediaRecorder(1)录制音频的详细使用
引言使用 MediaRecorder 的步骤常见问题及解决思路无法访问存储卡目录录制的音频文件没有声音录制过程中出现异常MediaRecorder无法正常启动录制的音质或者画质很差录制的文件无法播放结语
2023-11-26 19:11:39
4591
原创 Audacity 使用教程:轻松录制、编辑音频
本教程向大家介绍了如何使用 Audacity 进行音频录制和编辑。通过简单的操作,你可以轻松地录制和处理音频文件。无论你是音乐爱好者还是专业人士,Audacity 都能满足你的需求。快来尝试一下吧!
2023-10-01 12:07:31
11373
原创 Android 性能优化–Gradle 编译速度优化
编译速度优化1. 保持工具最新2. 使用 KSP 代替 kapt3. 避免编译不必要的资源4. 优化 repositories maven 排序5. 在调试构建中使用静态构建配置值6. 使用静态依赖版本7. 创建库模块8. 为自定义构建逻辑创建任务9. 将图像转换为 WebP10. 禁用 PNG 处理11. 挑选 JVM 垃圾收集器12. 增加 JVM 堆大小13. 使用非传递 R 类14. 使用非常量 R 类15. 禁用 Jetifier 标志16. 使用配置缓存
2023-08-16 07:00:00
1607
原创 Android 11 获取启动其他应用
如果应用以 Android 11(API 级别 30)或更高版本为目标平台,并查询与设备上已安装的其他应用相关的信息,则系统在默认情况下会过滤此信息。此过滤行为意味着您的应用无法检测设备上安装的所有应用,这有助于最大限度地减少您的应用可以访问但在执行其用例时不需要的潜在敏感信息。比如 queryIntentActivities()、getPackageInfo() 和 getInstalledApplications() 将无法获取到返回结果.NameNotFoundException
2023-08-08 21:50:40
669
原创 Android Compose Button defaultButtonColors
编译会出现异常 Unresolved reference: defaultButtonColors 新版本已经没有 ButtonConstants.defaultButtonColors 和 backgroundColor 可以使用 ButtonDefaults.buttonColors 替换
2023-07-01 16:09:46
696
原创 Android Studio Bot 下载使用
下载 Android Studio Hedgehog 找到Studio Bot: View->Tool Windows->Studio Bot 登录 Google 账号
2023-07-01 15:56:53
1101
3
原创 Android性能优化--Perfetto抓取trace
开启Android的trace跟踪服务;使用 adb 抓取;通过 perfetto 网页抓取;直接在手机上抓取;使用 record_android_trace 抓取;熟悉 perfetto 快捷键,会有事半功倍效果;
2023-04-17 13:00:15
3246
1
原创 安卓Camera2用ImageReader获取NV21源码分析
以前如何得到Camera预览流回调如何使用Camera2得到预览流的回调是否可以通过ImageReader直接得到NV21回调呢ImageReader数据流回调的流程源码分析
2023-02-12 16:22:57
2323
原创 Android性能优化--Perfetto分析native内存泄露
本文示例是windows,这里使用了python工具,在Linux和mac同样适用。这里只能抓到一次内存的快照,如果想连续记录多次内存的数据需要能Root手机。抓取一次某个应用的内存命令如下,注意提前关闭其它adb程序,如AS。可以看到第一个大块有内存一直上升,结合其中的栈堆,分析并解决即可。是解决问题后,抓取的tarce,可以看到问题已解决。这里我上传了一份自己抓的数据,下载地址。通过点击 方块,对比不用时刻的内存。下载 perfetto ,地址在。每执行一次,上一步会记录一次。连续抓取多次内存快照。
2022-12-21 20:38:16
4573
2
原创 Windows WSL Ubuntu Android 编译
安装ubuntu;替换换ubuntu20.04为阿里云源;下载 LineageOS 源码;repo安装使用项目配置;扩充wsl磁盘空间;迁移虚拟磁盘;Android编译依赖工具链;源码编译;
2022-08-21 18:00:37
1347
Android基于perfetto分析native内存泄露 Trace
2022-12-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人