<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[wolf0706的专栏]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/wolf0706</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; wolf0706]]></copyright><item><title><![CDATA[Android ChipGroup 使用说明]]></title><link>https://blog.youkuaiyun.com/wolf0706/article/details/159731755</link><guid>https://blog.youkuaiyun.com/wolf0706/article/details/159731755</guid><author>wolf0706</author><pubDate>Thu, 10 Sep 2026 10:52:13 +0800</pubDate><description><![CDATA[ChipGroup 用于展示标签列表，支持单选/多选筛选与折叠展开。通过 RecyclerView 动态渲染，结合 removeAllViews() 避免重复添加。展示型标签设为不可点击，筛选模式启用 singleSelection 与 setOnCheckedStateChangeListener。折叠逻辑按阈值控制显示数量，仅在状态变化时刷新。建议数据变更时对比更新，避免频繁重建，提升性能。]]></description><category></category></item><item><title><![CDATA[Linux 服务器配置 Gradle 多版本环境]]></title><link>https://blog.youkuaiyun.com/wolf0706/article/details/161801625</link><guid>https://blog.youkuaiyun.com/wolf0706/article/details/161801625</guid><author>wolf0706</author><pubDate>Thu, 10 Sep 2026 10:52:11 +0800</pubDate><description><![CDATA[本文介绍在Linux服务器上配置Gradle多版本环境的三种方法：通过source脚本临时切换（方法一）、创建多版本命令（如gradle74、gradle80）实现灵活管理（推荐，方法二），以及永久设置单一版本（方法三）。推荐使用方法二，通过在~/bin目录下创建带版本标识的包装脚本，并加入PATH，实现多版本共存与快速切换。关键点包括使用exec和"$@"确保参数传递与性能优化，适用于多项目兼容场景。]]></description><category></category></item><item><title><![CDATA[Git 删除远程文件、本地保留并取消跟踪]]></title><link>https://blog.youkuaiyun.com/wolf0706/article/details/163162496</link><guid>https://blog.youkuaiyun.com/wolf0706/article/details/163162496</guid><author>wolf0706</author><pubDate>Wed, 09 Sep 2026 10:51:47 +0800</pubDate><description><![CDATA[本文介绍如何在不删除本地文件的前提下，从 Git 仓库中移除远程文件并取消跟踪。通过将文件加入 .gitignore，使用 git rm --cached 从暂存区移除，再提交并推送，即可实现远程删除、本地保留。关键在于 --cached 参数仅影响暂存区，不修改工作区文件。注意：若涉及敏感信息，需清除历史提交；团队协作时需提前沟通，避免他人误删文件。]]></description><category></category></item><item><title><![CDATA[AIDL 接口中间插入方法导致第三方调用异常]]></title><link>https://blog.youkuaiyun.com/wolf0706/article/details/162296657</link><guid>https://blog.youkuaiyun.com/wolf0706/article/details/162296657</guid><author>wolf0706</author><pubDate>Wed, 09 Sep 2026 10:51:42 +0800</pubDate><description><![CDATA[AIDL 接口新增方法若插入已有方法间，会导致 transaction code 错位，引发第三方调用异常。因 AIDL 通过方法声明顺序分配编号，中间插入会使后续方法映射错乱。修复关键：新方法必须追加至接口末尾，严禁插入或修改已有方法顺序与签名，确保向后兼容。]]></description><category></category></item><item><title><![CDATA[Maven 坐标系统说明]]></title><link>https://blog.youkuaiyun.com/wolf0706/article/details/163165910</link><guid>https://blog.youkuaiyun.com/wolf0706/article/details/163165910</guid><author>wolf0706</author><pubDate>Tue, 08 Sep 2026 09:54:30 +0800</pubDate><description><![CDATA[<think>我们只需要根据内容生成一个简短摘要，不超过150字。内容介绍Maven坐标系统，包含groupId、artifactId、version，以及存储路径和引用方式。摘要需简洁概括核心要点。</think>Maven坐标系统用groupId、artifactId和version唯一标识依赖，格式为groupId:artifactId:version。仓库按路径groupId(点转斜杠)/artifactId/version/artifactId-version.packaging存储，并在Grad]]></description><category></category></item><item><title><![CDATA[Mermaid 与 Mermaid Live Editor 介绍]]></title><link>https://blog.youkuaiyun.com/wolf0706/article/details/163340146</link><guid>https://blog.youkuaiyun.com/wolf0706/article/details/163340146</guid><author>wolf0706</author><pubDate>Tue, 08 Sep 2026 09:54:20 +0800</pubDate><description><![CDATA[<think>我们只需要根据内容生成≤150字的摘要。内容是关于Mermaid和Mermaid Live Editor的介绍。需要简洁概括主要信息。</think>Mermaid是开源JavaScript图表库，用文本语法绘制流程图、时序图等，便于版本控制。Mermaid Live Editor为官方在线编辑器，支持实时预览、多格式导出与分享。可在Markdown、网页中集成，相比draw.io等工具更轻量，被GitHub原生支持。]]></description><category></category></item><item><title><![CDATA[Python应用打包指南]]></title><link>https://blog.youkuaiyun.com/wolf0706/article/details/163759105</link><guid>https://blog.youkuaiyun.com/wolf0706/article/details/163759105</guid><author>wolf0706</author><pubDate>Mon, 07 Sep 2026 09:30:52 +0800</pubDate><description><![CDATA[<think>我们根据用户的要求，需要根据给定的内容生成摘要，不超过150字。内容是关于Python应用打包的知识，重点是PyInstaller的打包方式，包括OneFile和OneDir模式对比，参数等。摘要应简洁概述主要要点。注意字数限制。</think>本指南介绍了Python应用打包的主流工具，重点讲解PyInstaller的两种打包模式：OneFile单文件与OneDir单目录。对比了两者在启动速度、体积、分发便利性、稳定性及适用场景上的差异，并列举常用参数及资源路径处理等高级技巧，帮助开发者选择]]></description><category></category></item><item><title><![CDATA[Android applicationIdSuffix 详解]]></title><link>https://blog.youkuaiyun.com/wolf0706/article/details/164361980</link><guid>https://blog.youkuaiyun.com/wolf0706/article/details/164361980</guid><author>wolf0706</author><pubDate>Mon, 07 Sep 2026 09:29:58 +0800</pubDate><description><![CDATA[<think>我们需要根据用户提供的文章内容生成一个≤150字的摘要。文章标题是“Android applicationIdSuffix 详解”，内容很多，需要提炼核心要点。摘要应该涵盖applicationIdSuffix的作用、用法、效果和注意事项。注意字数限制。 思路：先概述概念和用途，再提基本用法和效果，最后点出注意事项。控制在150字以内。 草稿：applicationIdSuffix用于在Application ID后添加后缀，使同一代码库构建出不同包名的应用变体，实现多版本共存。可在build]]></description><category></category></item><item><title><![CDATA[Android Camera预览设置缓冲区大小和修改 SurfaceTexture]]></title><link>https://blog.youkuaiyun.com/wolf0706/article/details/154536761</link><guid>https://blog.youkuaiyun.com/wolf0706/article/details/154536761</guid><author>wolf0706</author><pubDate>Sat, 28 Feb 2026 16:20:50 +0800</pubDate><description><![CDATA[本文对比了setDefaultBufferSize()和修改TextureView尺寸的区别：前者设置SurfaceTexture内部缓冲区大小，控制相机输出的实际图像分辨率；后者调整TextureView显示尺寸，只影响UI显示效果。关键区别在于：缓冲区大小决定数据分辨率，必须在创建Surface前设置；视图尺寸控制显示大小，可随时修改。两者可独立设置，系统会自动缩放图像适配视图。典型应用场景包括保持特定比例和匹配相机输出分辨率。文章还通过数据流示意图说明1920x1080图像如何缩放显示到1568x93]]></description><category></category></item><item><title><![CDATA[while 循环中的continue、break、return]]></title><link>https://blog.youkuaiyun.com/wolf0706/article/details/153683401</link><guid>https://blog.youkuaiyun.com/wolf0706/article/details/153683401</guid><author>wolf0706</author><pubDate>Sat, 28 Feb 2026 16:18:12 +0800</pubDate><description><![CDATA[Kotlin中while循环提供了三种控制语句：continue跳过当前迭代，break跳出整个循环，return退出整个方法。continue适用于过滤特定条件的数据处理，break用于找到目标后停止搜索，return用于遇到错误或完成目标时退出。这些控制语句能提升代码可读性和执行效率，在嵌套循环中可使用标签明确控制对象。合理使用这些语句可以优化程序逻辑流程。]]></description><category></category></item><item><title><![CDATA[Android AIDL RemoteCallbackList使用]]></title><link>https://blog.youkuaiyun.com/wolf0706/article/details/157512285</link><guid>https://blog.youkuaiyun.com/wolf0706/article/details/157512285</guid><author>wolf0706</author><pubDate>Wed, 11 Feb 2026 11:30:35 +0800</pubDate><description><![CDATA[《RemoteCallbackList 使用指南》摘要 RemoteCallbackList是Android专为跨进程回调管理设计的工具类，解决了传统回调管理中的四大痛点：进程死亡检测、内存泄漏、回调异常和线程安全。其核心机制是通过Binder的linkToDeath自动监听客户端进程状态，并在finishBroadcast()时清理死亡回调。主要API包括register()/unregister()注册回调、beginBroadcast()/finishBroadcast()配对使用的广播机制，以及自动]]></description><category></category></item><item><title><![CDATA[Android WebSocket 使用步骤说明和使用示例]]></title><link>https://blog.youkuaiyun.com/wolf0706/article/details/153635423</link><guid>https://blog.youkuaiyun.com/wolf0706/article/details/153635423</guid><author>wolf0706</author><pubDate>Thu, 13 Nov 2025 11:06:24 +0800</pubDate><description><![CDATA[Android WebSocket实现指南 本文介绍了在Android应用中实现WebSocket通信的方法，主要基于OkHttp库。核心内容包括： 配置步骤： 添加OkHttp依赖 申请网络权限 实现WebSocketManager管理类： 封装连接建立过程 处理消息收发 提供重连机制 管理连接状态 使用示例： 在Activity中初始化WebSocket 处理连接状态变更 实现消息接收回调 提供消息发送接口 该方案提供了稳定可靠的WebSocket实现，包含自动重连、心跳维持等增强功能，适用于各种实时通]]></description><category></category></item><item><title><![CDATA[Thread.join() 方法说明]]></title><link>https://blog.youkuaiyun.com/wolf0706/article/details/153682132</link><guid>https://blog.youkuaiyun.com/wolf0706/article/details/153682132</guid><author>wolf0706</author><pubDate>Thu, 13 Nov 2025 11:06:01 +0800</pubDate><description><![CDATA[Java/Kotlin线程join()方法详解 join()是Thread类的关键方法，用于同步线程执行。它提供三种形式：无限等待、毫秒级超时和更精确的纳秒级超时。调用线程会被阻塞，直到目标线程完成或超时。典型应用包括主线程等待子线程结束、带超时的线程同步等。使用时需注意死锁风险、中断异常处理及性能影响，且只能对已启动的线程调用。合理使用join()能有效控制多线程执行顺序，但过度阻塞可能降低程序响应性。]]></description><category></category></item><item><title><![CDATA[Android 使用MediaMuxer+MediaCodec编码MP4视频异步方案]]></title><link>https://blog.youkuaiyun.com/wolf0706/article/details/152078038</link><guid>https://blog.youkuaiyun.com/wolf0706/article/details/152078038</guid><author>wolf0706</author><pubDate>Wed, 12 Nov 2025 10:55:00 +0800</pubDate><description><![CDATA[本文介绍了Android中使用MediaMuxer+MediaCodec编码MP4视频的异步实现方案。核心改进包括： 采用异步架构设计：使用两个线程池分别处理帧输入和编码输出，通过LinkedBlockingQueue实现生产者-消费者模式 完善回调机制：新增AsyncEncoderCallback接口提供编码状态和错误处理的异步通知 实现非阻塞操作：feedFrame()方法仅将帧数据加入队列后立即返回，编码处理在后台线程执行 该方案具有三大性能优势： 主线程不阻塞 支持输入输出并行处理 队列机制平滑处理]]></description><category></category></item><item><title><![CDATA[Kotlin withTimeout]]></title><link>https://blog.youkuaiyun.com/wolf0706/article/details/151965209</link><guid>https://blog.youkuaiyun.com/wolf0706/article/details/151965209</guid><author>wolf0706</author><pubDate>Wed, 12 Nov 2025 10:54:54 +0800</pubDate><description><![CDATA[Kotlin协程中的withTimeout和withTimeoutOrNull用于为挂起代码设置超时限制。withTimeout在超时时会抛出TimeoutCancellationException，而withTimeoutOrNull会返回null。它们适用于网络请求、数据库操作等需要强制超时的场景，可确保结构化并发取消。使用时需注意：1）内部应使用挂起函数而非阻塞操作；2）超时会取消所有子协程；3）根据需求选择合适API。还提供了Android ViewModel和Flow的实用示例代码。]]></description><category></category></item><item><title><![CDATA[Kotlin Data类实现序列化]]></title><link>https://blog.youkuaiyun.com/wolf0706/article/details/151751873</link><guid>https://blog.youkuaiyun.com/wolf0706/article/details/151751873</guid><author>wolf0706</author><pubDate>Tue, 11 Nov 2025 10:34:35 +0800</pubDate><description><![CDATA[Kotlin Data类实现序列化的步骤：1. 添加kotlin-parcelize插件依赖；2.导入Parcelable相关类；3. 使用@Parcelize注解数据类并实现Parcelable接口；4. 注意支持和不支持的数据类型；5. 可通过Intent或Bundle传递序列化对象。该方法自动生成代码、类型安全且性能优于Serializable，是Android开发中数据传递的高效解决方案。]]></description><category></category></item><item><title><![CDATA[MutableSharedFlow 参数详解]]></title><link>https://blog.youkuaiyun.com/wolf0706/article/details/151613279</link><guid>https://blog.youkuaiyun.com/wolf0706/article/details/151613279</guid><author>wolf0706</author><pubDate>Tue, 11 Nov 2025 10:34:30 +0800</pubDate><description><![CDATA[摘要：Kotlin协程中的MutableSharedFlow是处理高频事件的热数据流构建器，关键参数包括：1) replay设置历史数据缓存量；2) extraBufferCapacity提供额外缓冲容量；3) onBufferOverflow定义缓冲区满时的处理策略（DROP_OLDEST/DROP_LATEST/SUSPEND）。示例展示了温度传感器场景下的应用，通过tryEmit非阻塞发送数据，结合不同消费速率的仪表盘和警报系统，演示了数据流的高效处理机制。]]></description><category></category></item><item><title><![CDATA[Android开发创建多个桌面图标]]></title><link>https://blog.youkuaiyun.com/wolf0706/article/details/151403771</link><guid>https://blog.youkuaiyun.com/wolf0706/article/details/151403771</guid><author>wolf0706</author><pubDate>Mon, 10 Nov 2025 10:58:29 +0800</pubDate><description><![CDATA[本文介绍了两种在Android应用中创建快捷方式的方法：代码方式和Activity Alias方式。代码方式针对不同Android版本采用不同实现：Android 8.0+使用ShortcutManager创建固定快捷方式，低版本使用广播方式，并包含错误处理和降级机制。Activity Alias方式通过在manifest中定义多个activity-alias实现多图标。两种方式都能通过intent参数区分启动来源，为特殊处理提供可能。代码方式具有更好的兼容性和灵活性，而Activity Alias方式实现]]></description><category></category></item><item><title><![CDATA[Android图像渲染：SurfaceView与GLSurfaceView多格式图片加载实现方案]]></title><link>https://blog.youkuaiyun.com/wolf0706/article/details/150762472</link><guid>https://blog.youkuaiyun.com/wolf0706/article/details/150762472</guid><author>wolf0706</author><pubDate>Mon, 10 Nov 2025 10:58:17 +0800</pubDate><description><![CDATA[摘要： 本文对比了Android开发中SurfaceView和GLSurfaceView两种图像渲染方案。SurfaceView通过OpenCV实现多格式图片（灰度图、BGR、YUV420等）转换，但存在帧率不稳（30fps时单帧耗时50-80ms）和CPU占用高（达70%）的问题。GLSurfaceView利用GPU加速显著提升性能。详细给出了SurfaceView的实现步骤：①OpenCV环境初始化；②SurfaceHolder生命周期管理；③建立阻塞队列控制内存；④OpenCV格式转换（如YUV420]]></description><category></category></item><item><title><![CDATA[Android 使用MediaMuxer+MediaCodec编码MP4视频]]></title><link>https://blog.youkuaiyun.com/wolf0706/article/details/149744027</link><guid>https://blog.youkuaiyun.com/wolf0706/article/details/149744027</guid><author>wolf0706</author><pubDate>Thu, 28 Aug 2025 10:49:13 +0800</pubDate><description><![CDATA[摘要：该代码实现了一个基于Android MediaCodec和MediaMuxer的YUV420转MP4编码工具类。主要功能包括：初始化编码器参数（宽高、帧率、比特率）、准备编码环境、接收YUV420帧数据并编码、输出MP4文件。通过状态机管理编码过程（IDLE/PREPARED/ENCODING/STOPPED），支持时间戳计算和缓冲区管理，实现了高效的视频编码流程。关键点包括H.264编码配置、输入输出缓冲区处理、时间戳同步以及资源释放机制。]]></description><category></category></item></channel></rss>