<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[Is_Poson的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Is_Poson</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Is_Poson]]></copyright><item><title><![CDATA[[协程]-[详解]-[协程作用域]-lifecycleScope]]></title><link>https://blog.youkuaiyun.com/Is_Poson/article/details/158922431</link><guid>https://blog.youkuaiyun.com/Is_Poson/article/details/158922431</guid><author>Is_Poson</author><pubDate>Thu, 12 Mar 2026 22:52:27 +0800</pubDate><description><![CDATA[可以发现, lifecycleScope 通过CAS自旋保证多线程下的单例构建, 并预设协程上下文为 SupervisorJob() + Dispatchers.Main.immediate, 既保证子协程崩溃不影响父协程, 也保证了任务能最快速执行, 最后再通过执行 LifecycleCoroutineScopeImpl.register() 向 Lifecycle 注册生命周期监听, 保证能在 Lifecycle 销毁时取消协程.又是怎么感应 LifecycleOwner 的 destroyed?]]></description><category></category></item><item><title><![CDATA[[协程]-[详解]-[协程作用域]-viewModelScope]]></title><link>https://blog.youkuaiyun.com/Is_Poson/article/details/158922549</link><guid>https://blog.youkuaiyun.com/Is_Poson/article/details/158922549</guid><author>Is_Poson</author><pubDate>Thu, 12 Mar 2026 22:51:59 +0800</pubDate><description><![CDATA[摘要：viewModelScope是ViewModel的扩展属性，本质是CloseableCoroutineScope对象，实现了自动取消机制。它通过synchronized锁安全构建，并将作用域存入ViewModel的mBagOfTags集合中。当ViewModel执行clear()时，会遍历该集合并调用Closeable对象的close()方法，从而取消关联的协程作用域。这种机制确保了协程在ViewModel销毁时自动取消，避免了内存泄漏问题。与LifecycleScope不同，viewModelSco]]></description><category></category></item><item><title><![CDATA[[协程]-[详解]-launch与async]]></title><link>https://blog.youkuaiyun.com/Is_Poson/article/details/158922689</link><guid>https://blog.youkuaiyun.com/Is_Poson/article/details/158922689</guid><author>Is_Poson</author><pubDate>Thu, 12 Mar 2026 22:49:08 +0800</pubDate><description><![CDATA[Kotlin协程中launch和async的核心机制解析：两者都继承自AbstractCoroutine，通过newCoroutineContext合并上下文（参数上下文＞父上下文＞默认调度器），并使用attachChild实现父子协程绑定。关键区别在于：launch返回Job用于无结果任务，异常立即传播；async返回Deferred用于有结果任务，异常在await时抛出.]]></description><category></category></item><item><title><![CDATA[[协程]-[详解]-[上下文]-CoroutineExceptionHandler]]></title><link>https://blog.youkuaiyun.com/Is_Poson/article/details/158921641</link><guid>https://blog.youkuaiyun.com/Is_Poson/article/details/158921641</guid><author>Is_Poson</author><pubDate>Wed, 11 Mar 2026 11:22:57 +0800</pubDate><description><![CDATA[摘要：Kotlin协程通过CoroutineExceptionHandler处理运行时异常，需在根协程中定义。协程代码经编译脱糖为invokeSuspend方法，由BaseContinuationImpl.resumeWith调用并用try-catch包裹。异常通过协程层级传递至根协程，最终由自定义CoroutineExceptionHandler或JVM处理。默认情况下，子协程异常由父协程的处理器处理，根协程未定义则导致应用崩溃。]]></description><category></category></item><item><title><![CDATA[[协程]-[详解]-[上下文]-[Job]-SupervisorJob]]></title><link>https://blog.youkuaiyun.com/Is_Poson/article/details/158921009</link><guid>https://blog.youkuaiyun.com/Is_Poson/article/details/158921009</guid><author>Is_Poson</author><pubDate>Wed, 11 Mar 2026 11:06:09 +0800</pubDate><description><![CDATA[除了官方提供的supervisor协程作用域, 我们也可以自己自定义// 定义异常处理器 (不自定义, App依旧会崩溃)Log.e("xiaoma", "捕获到未处理异常: ${throwable.message}")// 自定义作用域：SupervisorJob 是核心// 任务异常不会影响 supervisorScope 启动的其他任务throw RuntimeException("网络请求失败") // 模拟崩溃println("兄弟, 你崩吧, 我活的很好!")]]></description><category></category></item><item><title><![CDATA[[协程]-[详解]-[上下文]-[Job]]]></title><link>https://blog.youkuaiyun.com/Is_Poson/article/details/158920069</link><guid>https://blog.youkuaiyun.com/Is_Poson/article/details/158920069</guid><author>Is_Poson</author><pubDate>Wed, 11 Mar 2026 10:49:10 +0800</pubDate><description><![CDATA[Job 是协程的句柄。使用 launch 或 async 创建的每个协程都会返回一个 Job 实例，该实例是相应协程的唯一标识并管理其生命周期。val job = scope.launch { // 启动一个协程// 协程任务块if (...) job.cancel() // 取消协程核心职责状态查询: 查看协程是在运行、已取消还是已完成生命周期控制: 手动取消协程或等待协程执行完毕层级维护: 建立父子协程的关系。]]></description><category></category></item><item><title><![CDATA[[协程]-框架拆解]]></title><link>https://blog.youkuaiyun.com/Is_Poson/article/details/158919374</link><guid>https://blog.youkuaiyun.com/Is_Poson/article/details/158919374</guid><author>Is_Poson</author><pubDate>Wed, 11 Mar 2026 10:23:13 +0800</pubDate><description><![CDATA[本文摘要： Kotlin协程框架解析主要介绍了suspend函数、协程作用域和协程上下文三大核心概念。suspend函数通过状态机实现非阻塞执行，但需注意避免滥用；协程作用域包括GlobalScope、lifecycleScope、viewModelScope等，各有适用场景和生命周期管理方式；自定义作用域需合理选择Job和调度器。协程上下文通过&quot;+&quot;运算符组合调度器、异常处理器等元素，遵循继承规则。文章还分析了DEFAULT、LAZY等四种启动模式的特点及适用场景，为开发者正确使用协程]]></description><category></category></item><item><title><![CDATA[[协程]-简单入门]]></title><link>https://blog.youkuaiyun.com/Is_Poson/article/details/158919032</link><guid>https://blog.youkuaiyun.com/Is_Poson/article/details/158919032</guid><author>Is_Poson</author><pubDate>Wed, 11 Mar 2026 09:54:44 +0800</pubDate><description><![CDATA[Kotlin协程是一种轻量级并发机制，具有非阻塞式挂起和结构化并发特性。它通过挂起函数、协程作用域、上下文等框架实现线程间高效切换。在UI开发中，可使用lifecycleScope.launch创建协程，通过withContext切换线程执行耗时操作，最后自动返回主线程。这种同步代码风格的异步实现方式比回调嵌套更优雅，且能自动管理生命周期，避免内存泄漏。]]></description><category></category></item><item><title><![CDATA[Android触摸事件-深度剖析]]></title><link>https://blog.youkuaiyun.com/Is_Poson/article/details/157302176</link><guid>https://blog.youkuaiyun.com/Is_Poson/article/details/157302176</guid><author>Is_Poson</author><pubDate>Sat, 24 Jan 2026 00:18:54 +0800</pubDate><description><![CDATA[Android事件分发机制详解：从硬件层到应用层的完整流程。事件分发主要包括硬件输入、Native层处理、Java层分发三个阶段。在Java层，事件通过dispatchTouchEvent、onInterceptTouchEvent和onTouchEvent三个核心方法协作完成分发。硬件层事件通过InputDispatcher跨进程传递到应用进程，DOWN事件快速直达，MOVE事件采用批处理+VSYNC机制解决采样率与刷新率不匹配问题。ViewGroup通过mFirstTouchTarget记录消费DOWN]]></description><category></category></item><item><title><![CDATA[Handler的深度剖析]]></title><link>https://blog.youkuaiyun.com/Is_Poson/article/details/157301272</link><guid>https://blog.youkuaiyun.com/Is_Poson/article/details/157301272</guid><author>Is_Poson</author><pubDate>Sat, 24 Jan 2026 00:06:46 +0800</pubDate><description><![CDATA[Android的Handler机制是线程间通信的核心，通过Looper、MessageQueue和Handler协同工作实现消息传递。关键点包括：1）子线程需按序执行Looper.prepare()、创建Handler和Looper.loop()；2）主线程Looper由系统自动初始化；3）消息按when时间排序存入队列，Looper循环处理；4）支持同步屏障和异步消息实现UI绘制优先处理；5）Message对象池化优化性能（最大50个）。HandlerThread简化了子线程使用流程，而主线程Looper]]></description><category></category></item><item><title><![CDATA[ANR的深层剖析]]></title><link>https://blog.youkuaiyun.com/Is_Poson/article/details/157301184</link><guid>https://blog.youkuaiyun.com/Is_Poson/article/details/157301184</guid><author>Is_Poson</author><pubDate>Fri, 23 Jan 2026 23:56:20 +0800</pubDate><description><![CDATA[从Native到Java, 深度剖析ANR]]></description><category></category></item><item><title><![CDATA[使用Ijkplayer播放flv资源]]></title><link>https://blog.youkuaiyun.com/Is_Poson/article/details/148638669</link><guid>https://blog.youkuaiyun.com/Is_Poson/article/details/148638669</guid><author>Is_Poson</author><pubDate>Fri, 13 Jun 2025 18:29:02 +0800</pubDate><description><![CDATA[github上jcenter引用方式失效，转而使用阿里镜像依赖]]></description><category></category></item><item><title><![CDATA[Mac安装jd-gui 保姆级 含问题处理]]></title><link>https://blog.youkuaiyun.com/Is_Poson/article/details/148634668</link><guid>https://blog.youkuaiyun.com/Is_Poson/article/details/148634668</guid><author>Is_Poson</author><pubDate>Fri, 13 Jun 2025 16:32:35 +0800</pubDate><description><![CDATA[JAVA_HOME全部成: /Users/makele/workspace/github/jdk1.8.0_451.jdk/Contents/Home。下载jd-gui-osx-1.6.6.tar即可，下载后放到对应位置，解压。解决办法是下载Jdk 1.8 ，让jd-gui使用该版本。两种安装方式都有各自的坑，废话少说，咱们开始吧。即可，下载后找个好点的地方解压，不需要dmg的。解压后，开始让jd-gui使用这个版本。保存，点击打开jd-gui，大功告成！右键应用jd-gui如下。第二种：下载代码安装。]]></description><category></category></item><item><title><![CDATA[[Adb]-操作命令大全]]></title><link>https://blog.youkuaiyun.com/Is_Poson/article/details/148588926</link><guid>https://blog.youkuaiyun.com/Is_Poson/article/details/148588926</guid><author>Is_Poson</author><pubDate>Wed, 11 Jun 2025 18:43:06 +0800</pubDate><description><![CDATA[用于在计算机（Windows、macOS、Linux）和连接的 Android 设备（手机、平板、电视、模拟器等）之间建立通信桥梁。它允许开发者直接与设备交互，执行各种调试、管理、文件传输等操作。是 Android 开发工具包（SDK）中一个功能强大的。]]></description><category></category></item><item><title><![CDATA[[安卓-Android]-服务端字段混淆]]></title><link>https://blog.youkuaiyun.com/Is_Poson/article/details/148582781</link><guid>https://blog.youkuaiyun.com/Is_Poson/article/details/148582781</guid><author>Is_Poson</author><pubDate>Wed, 11 Jun 2025 12:04:27 +0800</pubDate><description><![CDATA[解决安卓马甲包，服务端字段容易被GooglePlay检测出的问题]]></description><category></category></item><item><title><![CDATA[Kotlin $字符怎么实现字符串拼接]]></title><link>https://blog.youkuaiyun.com/Is_Poson/article/details/147949133</link><guid>https://blog.youkuaiyun.com/Is_Poson/article/details/147949133</guid><author>Is_Poson</author><pubDate>Wed, 14 May 2025 11:30:21 +0800</pubDate><description><![CDATA[Java中一个String就是一个对象，通过➕拼接会重新构建一个String对象，所以尽量避免在循环中进行String拼接，那怎么进行拼接呢？StringBuilder拼接时不会构建新String对象，平时一般使用StringBuilder进行拼接即可。了解完Java中的String相关，那Kotlin中一般怎么进行字符串拼接的呢？看一下，我们拼上都用$进行字符串拼接，那Kotlin内部怎么实现的？Java 8下，使用的是StringBuilder拼接。Java17下，使用的String拼接。]]></description><category></category></item><item><title><![CDATA[Apk瘦身脚本 - 无用代码剔除]]></title><link>https://blog.youkuaiyun.com/Is_Poson/article/details/137335118</link><guid>https://blog.youkuaiyun.com/Is_Poson/article/details/137335118</guid><author>Is_Poson</author><pubDate>Wed, 03 Apr 2024 10:44:53 +0800</pubDate><description><![CDATA[【代码】Apk瘦身脚本 -]]></description><category></category></item><item><title><![CDATA[ConcurrentModifcationException 的 what、why、how]]></title><link>https://blog.youkuaiyun.com/Is_Poson/article/details/137281232</link><guid>https://blog.youkuaiyun.com/Is_Poson/article/details/137281232</guid><author>Is_Poson</author><pubDate>Wed, 03 Apr 2024 10:43:23 +0800</pubDate><description><![CDATA[ConcurrentModifcationException、Fast-Fail、快速失败检查机制、List并发操作]]></description><category></category></item><item><title><![CDATA[Apk瘦身脚本 - res资源可用性检查]]></title><link>https://blog.youkuaiyun.com/Is_Poson/article/details/137241992</link><guid>https://blog.youkuaiyun.com/Is_Poson/article/details/137241992</guid><author>Is_Poson</author><pubDate>Mon, 01 Apr 2024 18:12:19 +0800</pubDate><description><![CDATA[在一些大一点的项目，Lint在执行之后会Run很长时间，且只是给你找出问题点。在瘦身时可能存在一定量的res需要剔除，用Lint检查起来就会相对慢一些，且有些Code删除之后我们也需要重新检查其是否有引用哪些layout、drawable等，这些也是可以一并检查删除的。Lint可以帮我们检索项目中可能存在错误的地方，平时功能代码写完后，也建议大家用其检查一下代码，帮助我们提高代码的健壮性。下面是脚本代码，实现起来相对简单暴力，直接放在Android项目下运行即可。]]></description><category></category></item><item><title><![CDATA[Apk瘦身脚本 - 图片批量压缩]]></title><link>https://blog.youkuaiyun.com/Is_Poson/article/details/137241130</link><guid>https://blog.youkuaiyun.com/Is_Poson/article/details/137241130</guid><author>Is_Poson</author><pubDate>Mon, 01 Apr 2024 17:54:44 +0800</pubDate><description><![CDATA[Apk初级瘦身神器 - 图片批量压缩脚本]]></description><category></category></item></channel></rss>