<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[IT_Android的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/IT_Android</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; IT_Android]]></copyright><item><title><![CDATA[如何应对 Android 面试官 -＞ 玩转 RxJava （基础使用）]]></title><link>https://blog.youkuaiyun.com/IT_Android/article/details/150933714</link><guid>https://blog.youkuaiyun.com/IT_Android/article/details/150933714</guid><author>IT_Android</author><pubDate>Wed, 27 Aug 2025 19:09:35 +0800</pubDate><description><![CDATA[本文介绍了RxJava的核心思想及其应用场景。RxJava采用响应式编程模式，通过链式调用实现从事件起点到终点的流式处理。文章以图片下载为例，对比传统方式（线程+Handler）与RxJava实现，展示了RxJava通过Observable和Observer的订阅关系，结合map、subscribeOn等操作符实现异步处理和线程切换的优势。重点讲解了RxJava的卡片式编程思想，允许在事件流中任意插入处理逻辑（如添加水印、日志等），保持代码结构清晰且易于扩展。通过下载示例详细说明了RxJava执行流程的U型]]></description><category></category></item><item><title><![CDATA[如何应对 Android 面试官 -＞ 运用 Jetpack 写一个音乐播放器（五）完结]]></title><link>https://blog.youkuaiyun.com/IT_Android/article/details/150385306</link><guid>https://blog.youkuaiyun.com/IT_Android/article/details/150385306</guid><author>IT_Android</author><pubDate>Thu, 14 Aug 2025 10:51:47 +0800</pubDate><description><![CDATA[这篇文章介绍了如何用Jetpack组件开发音乐播放器，重点讲解了协程替代RxJava实现网络请求的方法。主要内容包括： 协程实现：通过suspend关键字改造Retrofit API接口，简化线程切换 ViewModel中使用viewModelScope启动协程，实现主线程与异步线程的切换 展示了登录功能的协程实现示例 开始构建搜索模块，提供了fragment_search.xml布局代码片段 文章还列出了前期关于音乐播放器基础搭建、列表展示、播放功能、登录注册等系列文章链接。]]></description><category></category></item><item><title><![CDATA[如何应对 Android 面试官 -＞ 运用 Jetpack 写一个音乐播放器（四）登录注册]]></title><link>https://blog.youkuaiyun.com/IT_Android/article/details/150264562</link><guid>https://blog.youkuaiyun.com/IT_Android/article/details/150264562</guid><author>IT_Android</author><pubDate>Tue, 12 Aug 2025 10:19:18 +0800</pubDate><description><![CDATA[本文介绍了如何使用Jetpack组件和RxJava完善音乐播放器的用户注册功能。通过DataBinding实现布局与ViewModel的双向绑定，展示了注册页面的XML布局设计，包含用户名、密码输入框和注册按钮。重点介绍了RegisterViewModel的构建，使用MutableLiveData实现对用户输入数据的响应式处理，为后续登录功能开发奠定基础。这是音乐播放器系列教程的第四部分，前文已介绍基础搭建、音乐列表和播放功能实现。]]></description><category></category></item><item><title><![CDATA[如何应对 Android 面试官 -＞ 运用 Jetpack 写一个音乐播放器（三）播放能力]]></title><link>https://blog.youkuaiyun.com/IT_Android/article/details/150212443</link><guid>https://blog.youkuaiyun.com/IT_Android/article/details/150212443</guid><author>IT_Android</author><pubDate>Mon, 11 Aug 2025 12:41:27 +0800</pubDate><description><![CDATA[本文介绍了如何使用Jetpack完善音乐播放器的播放功能。主要包含两个核心组件：PlayerManager和PlayerService。PlayerManager基于开源播放器库实现，封装了播放控制逻辑（播放/暂停/切歌/模式切换等）和播放状态管理，采用单例模式确保全局唯一。PlayerService则负责实现后台播放能力，处理电话来电等中断场景，通过PlayerCallHelper与PlayerManager交互。文中详细展示了PlayerManager的完整实现代码，包括初始化、播放控制、状态获取等方法]]></description><category></category></item><item><title><![CDATA[如何应对 Android 面试官 -＞ 运用 Jetpack 写一个音乐播放器（二）音乐列表]]></title><link>https://blog.youkuaiyun.com/IT_Android/article/details/149940493</link><guid>https://blog.youkuaiyun.com/IT_Android/article/details/149940493</guid><author>IT_Android</author><pubDate>Tue, 05 Aug 2025 16:30:09 +0800</pubDate><description><![CDATA[本文介绍了如何使用Jetpack组件结合MVVM架构和Kotlin开发音乐播放器应用。主要内容包括： 数据填充部分，通过SharedViewModel实现状态管理，包含播放控制、菜单开关等功能的LiveData封装 MainActivity的初始化过程，包括ViewModel和DataBinding的绑定设置 使用BindingAdapter实现自定义XML属性，如DrawerLayout的开关控制 MainFragment的布局结构，采用CoordinatorLayout+AppBarLayout实现折叠]]></description><category></category></item><item><title><![CDATA[如何应对 Android 面试官 -＞ 运用 Jetpack 写一个音乐播放器（一）基础搭建]]></title><link>https://blog.youkuaiyun.com/IT_Android/article/details/149725588</link><guid>https://blog.youkuaiyun.com/IT_Android/article/details/149725588</guid><author>IT_Android</author><pubDate>Mon, 28 Jul 2025 21:14:03 +0800</pubDate><description><![CDATA[本文介绍了一个基于Jetpack组件的音乐播放器开发框架，采用MVVM架构和Kotlin语言实现。核心设计采用单Activity+多Fragment模式，通过Navigation组件管理页面导航。MainActivity作为唯一Activity，集成了DrawerLayout实现侧滑菜单和SlidingUpPanelLayout实现上下滑动面板，包含三个主要导航区域：主界面、底部播放条和侧边菜单。使用ViewModel实现数据管理，确保横竖屏切换时数据不丢失。框架充分利用了Jetpack组件，遵循Googl]]></description><category></category></item><item><title><![CDATA[如何应对 Android 面试官 -＞ 玩转 Jetpack Paging]]></title><link>https://blog.youkuaiyun.com/IT_Android/article/details/149582502</link><guid>https://blog.youkuaiyun.com/IT_Android/article/details/149582502</guid><author>IT_Android</author><pubDate>Wed, 23 Jul 2025 21:17:20 +0800</pubDate><description><![CDATA[Paging分页组件摘要 Paging是Jetpack提供的分页组件，用于在RecyclerView中优雅地分页加载数据，减少网络和系统资源消耗。核心优势包括： 增量加载数据，避免一次性加载过多 数据更新时仍保持流畅响应 高效利用资源，按需加载 核心使用步骤 定义数据源DataSource（PositionalDataSource/PageKeyedDataSource/ItemKeyedDataSource） 创建数据工厂DataSource.Factory 使用PagedListAdapter替代Rec]]></description><category></category></item><item><title><![CDATA[如何应对 Android 面试官 -＞ 玩转 Jetpack WorkManager]]></title><link>https://blog.youkuaiyun.com/IT_Android/article/details/149515096</link><guid>https://blog.youkuaiyun.com/IT_Android/article/details/149515096</guid><author>IT_Android</author><pubDate>Mon, 21 Jul 2025 20:46:15 +0800</pubDate><description><![CDATA[WorkManager是Android Jetpack提供的后台任务管理组件，适用于需要保证执行的非即时性任务。它能够自动选择最佳执行方式（JobScheduler/Firebase JobDispatcher/AlarmManager），确保任务在应用退出或设备重启后仍能执行。主要特点包括跨API版本兼容、电量优化和任务管理，但不支持保活操作。使用步骤包括：1）继承Worker类实现任务逻辑；2）通过WorkManager.enqueue()启动任务。支持Activity与Worker之间的双向数据传递：]]></description><category></category></item><item><title><![CDATA[如何应对 Android 面试官 -＞ 玩转 Jetpack Navigation]]></title><link>https://blog.youkuaiyun.com/IT_Android/article/details/149395471</link><guid>https://blog.youkuaiyun.com/IT_Android/article/details/149395471</guid><author>IT_Android</author><pubDate>Wed, 16 Jul 2025 12:44:25 +0800</pubDate><description><![CDATA[本文介绍了Android Navigation框架的基础使用。Navigation是用于在应用内不同目标（如Fragment、Activity）之间导航的框架。文章展示了一个简单示例，包含三个Fragment的跳转流程：MainPageFragment1通过按钮点击导航到MainPageFragment2，后者又提供返回或跳转到MainPageFragment3的选项。关键实现包括：1）添加Navigation依赖；2）创建Fragment布局文件；3）使用Navigation.findNavControl]]></description><category></category></item><item><title><![CDATA[如何应对 Android 面试官 -＞ 玩转 Jetpack Room]]></title><link>https://blog.youkuaiyun.com/IT_Android/article/details/149275242</link><guid>https://blog.youkuaiyun.com/IT_Android/article/details/149275242</guid><author>IT_Android</author><pubDate>Fri, 11 Jul 2025 15:16:59 +0800</pubDate><description><![CDATA[Room: Android官方ORM框架简化SQLite操作 摘要：Room是Android Jetpack中的官方ORM框架，相比传统SQLiteOpenHelper具有编译期SQL检查、减少模板代码、API友好等优势。使用Room涉及三个核心组件：Entity(数据表实体)、DAO(数据访问对象)和Database(数据库入口)。通过注解方式声明Entity类定义表结构，使用@Dao接口定义CRUD操作，@Database抽象类整合管理。Room结合APT技术自动生成实现类，极大简化了SQLite操作流]]></description><category></category></item><item><title><![CDATA[如何应对 Android 面试官 -＞ 玩转 Jetpack ViewModel]]></title><link>https://blog.youkuaiyun.com/IT_Android/article/details/149243846</link><guid>https://blog.youkuaiyun.com/IT_Android/article/details/149243846</guid><author>IT_Android</author><pubDate>Thu, 10 Jul 2025 10:23:25 +0800</pubDate><description><![CDATA[本文介绍了Android开发中ViewModel的基础使用和原理。ViewModel作为数据容器，可以在配置变化时保持数据稳定，减轻Activity负担，并在多个组件间共享数据。文章通过一个拨号键盘Demo展示了ViewModel结合LiveData、DataBinding和Lifecycle的使用方式：继承ViewModel类存储数据，通过ViewModelProvider获取实例，在布局文件中绑定数据，实现数据持久化和界面更新。Demo还演示了ViewModel如何保存拨号状态，并通过系统API实现拨号]]></description><category></category></item><item><title><![CDATA[如何应对 Android 面试官 -＞ 玩转 Jetpack DataBinding]]></title><link>https://blog.youkuaiyun.com/IT_Android/article/details/149205278</link><guid>https://blog.youkuaiyun.com/IT_Android/article/details/149205278</guid><author>IT_Android</author><pubDate>Tue, 08 Jul 2025 19:44:49 +0800</pubDate><description><![CDATA[本文介绍了Android DataBinding的基本概念及使用方式。DataBinding本质是实现双向绑定，解决MVP模式中的&quot;回调地狱&quot;问题，适用于界面更新频繁的业务场景。文章详细讲解了如何启用DataBinding（在build.gradle中配置）、定义可观察数据模型（继承BaseObservable并使用@Bindable注解）、编写绑定布局文件（使用&lt;layout&gt;标签和@{}语法）。同时演示了单向绑定（Model→View）的实现，以及如何通过BaseObse]]></description><category></category></item><item><title><![CDATA[如何应对 Android 面试官 -＞ 玩转 JetPack ViewBinding]]></title><link>https://blog.youkuaiyun.com/IT_Android/article/details/149171013</link><guid>https://blog.youkuaiyun.com/IT_Android/article/details/149171013</guid><author>IT_Android</author><pubDate>Mon, 07 Jul 2025 13:30:37 +0800</pubDate><description><![CDATA[ViewBinding 基础使用与原理 ViewBinding 是 Android 官方推荐的视图绑定方案，用于替代 findViewById 和 ButterKnife。启用方法是在模块的 build.gradle 中配置 viewBinding { enabled true }，系统会自动生成绑定类（如 ActivityMainBinding）。使用时只需调用 inflate() 方法绑定布局，即可直接访问视图控件（如 mainBinding.tv1.setText()）。 相比 Kotlin 的合成绑]]></description><category></category></item><item><title><![CDATA[如何应对 Android 面试官 -＞ 玩转 JetPack LiveData]]></title><link>https://blog.youkuaiyun.com/IT_Android/article/details/149092665</link><guid>https://blog.youkuaiyun.com/IT_Android/article/details/149092665</guid><author>IT_Android</author><pubDate>Thu, 03 Jul 2025 13:54:22 +0800</pubDate><description><![CDATA[LiveData核心原理与使用总结 LiveData是一种具有生命周期感知能力的可观察数据容器，能够自动感知Activity、Fragment等组件的生命周期状态，仅在组件活跃时更新UI，避免内存泄漏和崩溃风险。 基础使用： 通过MutableLiveData创建数据源 observe()方法注册观察者，使用lambda或Observer接口 主线程用setValue()更新数据，子线程用postValue() 特性验证： 前台更新：仅在前台时触发UI更新 数据粘性：先修改后订阅仍能收到最新数据 实现原理：]]></description><category></category></item><item><title><![CDATA[如何应对 Android 面试官 -＞ 玩转 JetPack Lifecycle]]></title><link>https://blog.youkuaiyun.com/IT_Android/article/details/149044773</link><guid>https://blog.youkuaiyun.com/IT_Android/article/details/149044773</guid><author>IT_Android</author><pubDate>Tue, 01 Jul 2025 13:26:03 +0800</pubDate><description><![CDATA[本文介绍了Jetpack中的Lifecycle组件，用于监听Activity/Fragment生命周期变化。Lifecycle通过观察者模式实现，包含LifecycleOwner（如Activity/Fragment）和LifecycleObserver（观察者）。基础使用包括添加依赖库，通过实现LifecycleObserver接口或DefaultLifecycleObserver来监听生命周期事件。示例展示了如何在Presenter中监听Activity的生命周期变化，无需手动调用生命周期方法。该组件可]]></description><category></category></item><item><title><![CDATA[如何应对 Android 面试官 -＞ 玩转 JetPack Hilt]]></title><link>https://blog.youkuaiyun.com/IT_Android/article/details/148921127</link><guid>https://blog.youkuaiyun.com/IT_Android/article/details/148921127</guid><author>IT_Android</author><pubDate>Thu, 26 Jun 2025 11:10:09 +0800</pubDate><description><![CDATA[Hilt依赖注入框架在Android开发中的应用 Hilt是Google与Dagger团队合作开发的Android专属依赖注入框架，相比Dagger2更加简单易用。它通过APT注解处理器和ASM字节码插桩实现依赖注入，支持Application、Activity、Fragment等多种Android组件的注入。 基础配置需在项目中添加Hilt插件和依赖。使用步骤包括： 声明被注入类 通过@Module和@Provides提供对象 在目标Activity使用@AndroidEntryPoint和@Inject]]></description><category></category></item><item><title><![CDATA[如何应对 Android 面试官 -＞ 手写 APM 核心实现]]></title><link>https://blog.youkuaiyun.com/IT_Android/article/details/148894641</link><guid>https://blog.youkuaiyun.com/IT_Android/article/details/148894641</guid><author>IT_Android</author><pubDate>Wed, 25 Jun 2025 11:03:02 +0800</pubDate><description><![CDATA[本文介绍了如何手写一个APM（应用性能监控）框架，重点关注稳定性、网络、电量、内存等核心指标。首先补充了SO动态加载的常见问题及解决方案ReLinker框架，然后详细阐述了APM框架的设计思路。通过定义ITracker接口和ActivityLifecycleCallbacks抽象类规范各模块采集逻辑，并以电量检测为例，展示了具体实现方式：利用BroadcastReceiver获取电量信息，在Activity生命周期回调中采集数据并回调。整体架构参考了ArgusAPM和Matrix等开源项目，为开发高性能应用]]></description><category></category></item><item><title><![CDATA[如何应对 Android 面试官 -＞ 包体积如何优化？]]></title><link>https://blog.youkuaiyun.com/IT_Android/article/details/148425804</link><guid>https://blog.youkuaiyun.com/IT_Android/article/details/148425804</guid><author>IT_Android</author><pubDate>Wed, 04 Jun 2025 14:06:16 +0800</pubDate><description><![CDATA[包体积优化]]></description><category></category></item><item><title><![CDATA[如何应对 Android 面试官 -＞ 电量如何优化？]]></title><link>https://blog.youkuaiyun.com/IT_Android/article/details/147247440</link><guid>https://blog.youkuaiyun.com/IT_Android/article/details/147247440</guid><author>IT_Android</author><pubDate>Tue, 15 Apr 2025 12:52:27 +0800</pubDate><description><![CDATA[本章主要讲解下『电量』如何优化；]]></description><category></category></item><item><title><![CDATA[如何应对 Android 面试官 -＞ 网络如何优化？]]></title><link>https://blog.youkuaiyun.com/IT_Android/article/details/147041529</link><guid>https://blog.youkuaiyun.com/IT_Android/article/details/147041529</guid><author>IT_Android</author><pubDate>Mon, 07 Apr 2025 12:58:57 +0800</pubDate><description><![CDATA[本章节主要讲解下 网络如何进行优化；]]></description><category></category></item></channel></rss>