<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[itTalmud的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/itTalmud</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; itTalmud]]></copyright><item><title><![CDATA[Android Jetpack | DataBinding]]></title><link>https://blog.youkuaiyun.com/itTalmud/article/details/150851542</link><guid>https://blog.youkuaiyun.com/itTalmud/article/details/150851542</guid><author>itTalmud</author><pubDate>Tue, 26 Aug 2025 12:56:24 +0800</pubDate><description><![CDATA[当数据发生变化时，UI 自动更新；当用户与 UI 交互时，数据自动同步；Databinding数据驱动UI的更新的核心我们可以根据下图来做一个总结。如图：被观察者有一个管家PropertyChangeRegistry mCallbacks，该管家对注册的监听进行管理，监听是间接的持有ViewDatabinding的引用；当被观察者发生改变，并不是像传递的观察者模式一样，直接持有观察者的引用去进行通知，而是通知管家，让管家将注册的监听进行全部遍历，]]></description><category></category></item><item><title><![CDATA[Android Jetpack | Hilt]]></title><link>https://blog.youkuaiyun.com/itTalmud/article/details/150619579</link><guid>https://blog.youkuaiyun.com/itTalmud/article/details/150619579</guid><author>itTalmud</author><pubDate>Fri, 22 Aug 2025 22:30:48 +0800</pubDate><description><![CDATA[用一句话概括，大体就是：“不要自己内部创建依赖，而是让外部提供的方式来完成”；核心思想是将程序的控制权从应用程序代码本身转移给一个外部容器或框架；3.2.5中使用到了Singleton注解，这个是作用域注解，作用是为依赖项提供生命周期管理；作用域必须与Component的作用域匹配，组件跟作用域关系如下：作用域注解绑定到的组件生命周期@Singleton应用级别（整个应用生命周期）Activity 生命周期Fragment 生命周期View 生命周期。]]></description><category></category></item><item><title><![CDATA[Android Jetpack | ViewModel]]></title><link>https://blog.youkuaiyun.com/itTalmud/article/details/150551231</link><guid>https://blog.youkuaiyun.com/itTalmud/article/details/150551231</guid><author>itTalmud</author><pubDate>Wed, 20 Aug 2025 12:23:46 +0800</pubDate><description><![CDATA[本文重点对ViewModel的复用原理的详细细节展开了分析，分两种情况，带SavedStateHandle的情况下与不带SavedStateHandle的情况。其中，前者即使应用因内存不足导致进程被杀掉后重建，虽然重建前后的ViewModel不是同一个，但ViewModel依旧可以复用，其底层依赖于Bundle，而因配置文件改变的重建，复用的是同一个ViewModel；而后者在应用进程被杀掉的情况下是不能实现复用的，因配置改变重建是可以实现复用的，重建前后复用的是同一个ViewModel；]]></description><category></category></item><item><title><![CDATA[Android Jetpack | Livedata]]></title><link>https://blog.youkuaiyun.com/itTalmud/article/details/150473763</link><guid>https://blog.youkuaiyun.com/itTalmud/article/details/150473763</guid><author>itTalmud</author><pubDate>Sun, 17 Aug 2025 22:12:15 +0800</pubDate><description><![CDATA[本文通过对Livedata的核心原理以及粘性事件产生跟处理和递归调用的容错处理的逻辑进行讲解。合理使用Livedata在Mvvm架构中有助于写出更易于维护和管理的代码。]]></description><category></category></item><item><title><![CDATA[Android Jetpack | Lifecycle]]></title><link>https://blog.youkuaiyun.com/itTalmud/article/details/150447800</link><guid>https://blog.youkuaiyun.com/itTalmud/article/details/150447800</guid><author>itTalmud</author><pubDate>Sat, 16 Aug 2025 15:52:02 +0800</pubDate><description><![CDATA[结合源码分析，代码执行流程大体如下Activity里面lifecycle事件的分发会根据API的不同其实现有差异，大于等于29是采用注册的回调的方式，低于29是使用无UI的ReportFragment来实现lifecycle事件的分发；宿主的每一个生命周期发生变化的时候会发送一个事件，根据事件推导宿主的状态，所有的观察者根据宿主的状态进行升级或降级以保持同步；]]></description><category></category></item><item><title><![CDATA[Android音视频探索之旅 | Webrtc 1对1音视频通话核心流程分析]]></title><link>https://blog.youkuaiyun.com/itTalmud/article/details/149450562</link><guid>https://blog.youkuaiyun.com/itTalmud/article/details/149450562</guid><author>itTalmud</author><pubDate>Fri, 18 Jul 2025 17:55:55 +0800</pubDate><description><![CDATA[本文重点梳理了使用WebRTC实现1对1音视频通话端对端的基本流程，流程分为三部分：媒体协商（交换SDP信息）、candidate交换（建立网络连接）、数据传输。同时对Android端引入Webrtc，其核心类的讲解。]]></description><category></category></item><item><title><![CDATA[Android音视频探索之旅 | C++层使用OpenGL ES实现音频渲染]]></title><link>https://blog.youkuaiyun.com/itTalmud/article/details/149298703</link><guid>https://blog.youkuaiyun.com/itTalmud/article/details/149298703</guid><author>itTalmud</author><pubDate>Sat, 12 Jul 2025 19:18:10 +0800</pubDate><description><![CDATA[项目代码可以在码云上面进行下载，6.0以上的设备需要手动开启动态权限，这部分代码没有写在项目里面。通过OpenGL ES来渲染音频也是很有必要要熟练掌握的。]]></description><category></category></item><item><title><![CDATA[Android音视频探索之旅 | C++层使用OpenGL ES实现视频渲染]]></title><link>https://blog.youkuaiyun.com/itTalmud/article/details/149296253</link><guid>https://blog.youkuaiyun.com/itTalmud/article/details/149296253</guid><author>itTalmud</author><pubDate>Sat, 12 Jul 2025 16:28:06 +0800</pubDate><description><![CDATA[*** @创建者 Jack* @创建时间 2025-07-12 12:40* @描述*///适配Android8.0及以上 无法正常渲染视频的问题@Override@Override@Override@Override@Override@Override@Override//注意：需要手动开启存储权限并在MainActivity中引入使用项目代码可以在码云上面进行下载，6.0以上的设备需要手动开启动态权限，这部分代码没有写在项目里面。]]></description><category></category></item><item><title><![CDATA[Android音视频探索之旅 | CMake基础语法 && 创建支持Ffmpeg的Android项目]]></title><link>https://blog.youkuaiyun.com/itTalmud/article/details/149095858</link><guid>https://blog.youkuaiyun.com/itTalmud/article/details/149095858</guid><author>itTalmud</author><pubDate>Thu, 03 Jul 2025 15:52:39 +0800</pubDate><description><![CDATA[本篇文章记录了最常用的CMake语法，以及在Android项目的使用。]]></description><category></category></item><item><title><![CDATA[Android NDK探索之旅（一）]]></title><link>https://blog.youkuaiyun.com/itTalmud/article/details/149052387</link><guid>https://blog.youkuaiyun.com/itTalmud/article/details/149052387</guid><author>itTalmud</author><pubDate>Tue, 01 Jul 2025 18:22:26 +0800</pubDate><description><![CDATA[本文从整理的角度来讲解Android NDK。包含必要的概念了解，并将“典型的JNI多线程实现”案例进行剖析，展示了Java层调用Native层以及如何安全地从Native线程回调Java层。在细节方面：如Native方法中JNIEnv的相关api的使用以及CMakeLists.txt的语法等并未进行展开，这块的内容要在实际开发中逐步积累。对Android NDK有了全局的认识，细节方面的累计只是时间问题，当然Native的代码学习少不了C/C++的基础。]]></description><category></category></item><item><title><![CDATA[使用SRS（Simple RTMP Server）搭建RTMP流媒体服务器]]></title><link>https://blog.youkuaiyun.com/itTalmud/article/details/148951784</link><guid>https://blog.youkuaiyun.com/itTalmud/article/details/148951784</guid><author>itTalmud</author><pubDate>Fri, 27 Jun 2025 13:58:56 +0800</pubDate><description><![CDATA[细节很重要，比如：端口号被占用及其安全组和防火墙设置，安全组相对容易想到，但容易疏忽的是防火墙设置。]]></description><category></category></item><item><title><![CDATA[Uniapp 使用Android studio进行离线打包]]></title><link>https://blog.youkuaiyun.com/itTalmud/article/details/147288111</link><guid>https://blog.youkuaiyun.com/itTalmud/article/details/147288111</guid><author>itTalmud</author><pubDate>Wed, 16 Apr 2025 22:27:04 +0800</pubDate><description><![CDATA[经过以上步骤就可以实现uniapp使用Android studio进行离线打包，当更改了BuilderX的内容，重复步骤6和9即可，如果需要使用离线打包的Apk来上架，还得要把图标以及应用名称等进行设置才行（这块不做记录，自行查询即可）。]]></description><category></category></item><item><title><![CDATA[Android studio打包uniapp插件]]></title><link>https://blog.youkuaiyun.com/itTalmud/article/details/147079152</link><guid>https://blog.youkuaiyun.com/itTalmud/article/details/147079152</guid><author>itTalmud</author><pubDate>Tue, 08 Apr 2025 22:38:59 +0800</pubDate><description><![CDATA[按照上方流程则可以实现uniapp调用安卓原生插件。]]></description><category></category></item><item><title><![CDATA[Uniapp打包H5端弱网络环境下存在页面UI渲染错乱问题方案实现]]></title><link>https://blog.youkuaiyun.com/itTalmud/article/details/146113652</link><guid>https://blog.youkuaiyun.com/itTalmud/article/details/146113652</guid><author>itTalmud</author><pubDate>Sat, 08 Mar 2025 11:46:38 +0800</pubDate><description><![CDATA[通过以上两个方面的处理，弱网络环境下出现的页面UI渲染错乱问题有个较好的解决。]]></description><category></category></item><item><title><![CDATA[Uniapp打包H5端实现图片缓存方案]]></title><link>https://blog.youkuaiyun.com/itTalmud/article/details/146064132</link><guid>https://blog.youkuaiyun.com/itTalmud/article/details/146064132</guid><author>itTalmud</author><pubDate>Thu, 06 Mar 2025 11:59:47 +0800</pubDate><description><![CDATA[只需要将步骤二中的js文件复制到项目中，然后按照使用说明就可以快速地实现H5端的离线缓存。对于清除旧的缓存的方法可以改成LRU方案，每一个缓存下来的图片增加一个时间标记，同时有新缓存时检查一下缓存大小是否超过阈值，然后更改清除旧的缓存的逻辑即可；而APP端的离线缓存建议使用插件市场中的组件，可以选择；]]></description><category></category></item><item><title><![CDATA[Uniapp打包H5端实现微信分享好友、微信朋友圈]]></title><link>https://blog.youkuaiyun.com/itTalmud/article/details/145589033</link><guid>https://blog.youkuaiyun.com/itTalmud/article/details/145589033</guid><author>itTalmud</author><pubDate>Wed, 12 Feb 2025 11:49:31 +0800</pubDate><description><![CDATA[Uniapp打包H5端实现微信分享好友、微信朋友圈的需求实现重点在于细节，希望能给初次接触该需求的同学节省时间，若有疑问，欢迎留言。]]></description><category></category></item><item><title><![CDATA[Flutter实战记录-协作开发遇到的问题]]></title><link>https://blog.youkuaiyun.com/itTalmud/article/details/138544233</link><guid>https://blog.youkuaiyun.com/itTalmud/article/details/138544233</guid><author>itTalmud</author><pubDate>Tue, 07 May 2024 20:23:02 +0800</pubDate><description><![CDATA[报错信息如截图所示
根据报错信息可以知道，是因为flutter模块下的.android文件夹不存在。尝试在提交代码时候，将flutter的.gitignore中的.android/和.ios/不要进行配置，可以处理问题A；+初步推测，跟Flutter sdk等有关系；环境统一，估计该问题就可以解决；针对类似的场景，以上两个问题，可以通过一个命令来进行解决，在flutter模块下执行命令：flutter create .未执行命令前：
执行命令后:]]></description><category></category></item><item><title><![CDATA[Android FrameWork探索之旅（一）]]></title><link>https://blog.youkuaiyun.com/itTalmud/article/details/138447829</link><guid>https://blog.youkuaiyun.com/itTalmud/article/details/138447829</guid><author>itTalmud</author><pubDate>Sat, 04 May 2024 18:56:41 +0800</pubDate><description><![CDATA[1.7.创建aosp文件夹，使用命令:makdir ~/aosp,将下载好的文件移动到aosp中。1.8.安装解压工具，命令：sudo apt-get install p7zip。1.9.因为内存不足的原因，为保险起见，设置一下交换空间，1.11.启动模拟器出现报错。]]></description><category></category></item><item><title><![CDATA[Kali2022.3虚拟机编译AOSP（从Kali安装到完成Aosp编译详细记录）]]></title><link>https://blog.youkuaiyun.com/itTalmud/article/details/132787536</link><guid>https://blog.youkuaiyun.com/itTalmud/article/details/132787536</guid><author>itTalmud</author><pubDate>Sun, 10 Sep 2023 08:34:07 +0800</pubDate><description><![CDATA[Kali虚拟机编译AOSP]]></description><category></category></item><item><title><![CDATA[Rxjava框架学习总结]]></title><link>https://blog.youkuaiyun.com/itTalmud/article/details/131761394</link><guid>https://blog.youkuaiyun.com/itTalmud/article/details/131761394</guid><author>itTalmud</author><pubDate>Mon, 17 Jul 2023 10:57:34 +0800</pubDate><description><![CDATA[本文选取了Single的使用来分析了Rxjava的核心原理，同时在最后使用了Rxjava3和Retrofit2封装成网络模块，提供了简易的Api提供给外界使用（新项目中网络部分使用的是协程对Jetpack的支持库结合Retrofit以及Flow来进行封装的，这部分知识会逐步在上方项目中进行实现）。]]></description><category></category></item></channel></rss>