<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[mantouzai的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/mantouzai</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; mantouzai]]></copyright><item><title><![CDATA[我本地有自己的gmscore项目，我现在需要升级项目中的microg版本，旧版本的microg导致google账号登陆失败]]></title><link>https://blog.youkuaiyun.com/mantouzai/article/details/158432273</link><guid>https://blog.youkuaiyun.com/mantouzai/article/details/158432273</guid><author>mantouzai</author><pubDate>Thu, 26 Feb 2026 21:55:20 +0800</pubDate><description><![CDATA[结合你此前的使用背景和西安地区网络环境，‌最稳妥、最有效的解决方案是：在保留你本地项目结构的前提下，将 GmsCore 模块升级至官方最新稳定版 v0.3.13.250932，并同步更新其依赖签名与服务配置‌，而非盲目编译或替换文件。签名不匹配‌    应用提示“无法验证 Google 账户”、“登录失败，请重试”    官方 APK 使用与 Google Play 服务一致的签名密钥，自编译版本默认使用调试签名，无法通过 Google 认证。必须‌逐模块比对并替换‌，避免引入不必要的权限或冲突服务。]]></description><category></category></item><item><title><![CDATA[安卓计时器CountDownTimer]]></title><link>https://blog.youkuaiyun.com/mantouzai/article/details/148436140</link><guid>https://blog.youkuaiyun.com/mantouzai/article/details/148436140</guid><author>mantouzai</author><pubDate>Wed, 04 Jun 2025 22:25:48 +0800</pubDate><description><![CDATA[CountDownTimer类比较简单，总共就一个构造和4个方法。内部是通过handler实现CountDownTimer(long time,long interval)：参数time是总时间（毫秒），interval是间隔时间（毫秒）start()：开始倒计时的方法cancel()：取消倒计时的方法onTink(longtime)：抽象方法，每个间隔时间一到就会调用一次，需要自己实现。参数time是指剩下的时间onFinish()：抽象方法，倒计时完成的方法@Override。]]></description><category></category></item><item><title><![CDATA[Activity & Fragment 生命周期]]></title><link>https://blog.youkuaiyun.com/mantouzai/article/details/148435938</link><guid>https://blog.youkuaiyun.com/mantouzai/article/details/148435938</guid><author>mantouzai</author><pubDate>Wed, 04 Jun 2025 22:09:56 +0800</pubDate><description><![CDATA[Fragment 的生命周期与 Activity 的生命周期类似，但也有其独特之处。]]></description><category></category></item><item><title><![CDATA[安卓开发之Jeptpack 数据流 —— Flow、LiveData、StateFlow、MutableStateFlow、SharedFlow、MutableSharedFlow]]></title><link>https://blog.youkuaiyun.com/mantouzai/article/details/148435875</link><guid>https://blog.youkuaiyun.com/mantouzai/article/details/148435875</guid><author>mantouzai</author><pubDate>Wed, 04 Jun 2025 22:07:17 +0800</pubDate><description><![CDATA[MutableSharedFlow 是 SharedFlow 的可变版本，允许发出事件，MutableSharedFlow是一种可变的、用于创建共享流的类。它是热流（hot stream），可以在没有观察者时仍然发出数据，是一种可以向多个订阅者广播事件的流。观察者1从一开始就订阅，而观察者2在3秒后订阅，观察者2不会接收到观察者1在订阅之前已经接收的事件。它是一种状态流，专门用于表示状态的持久化和变化。它是 StateFlow 的一个接口，持有一个最新的状态值，并且对它的所有收听者都可以提供这个状态。]]></description><category></category></item><item><title><![CDATA[安卓开发之ViewTreeObserver]]></title><link>https://blog.youkuaiyun.com/mantouzai/article/details/148435834</link><guid>https://blog.youkuaiyun.com/mantouzai/article/details/148435834</guid><author>mantouzai</author><pubDate>Wed, 04 Jun 2025 22:03:10 +0800</pubDate><description><![CDATA[OnGlobalLayoutListener 适用于需要在布局变化时执行操作的场景。OnPreDrawListener 适用于需要在即将进行绘制之前执行操作的场景。二者结合使用可以在不同的阶段对视图进行管理和调整。确保在不再使用时移除监听器，以避免内存泄漏和不必要的调用。]]></description><category></category></item><item><title><![CDATA[线程(Thread)、协程(Coroutines)]]></title><link>https://blog.youkuaiyun.com/mantouzai/article/details/148435685</link><guid>https://blog.youkuaiyun.com/mantouzai/article/details/148435685</guid><author>mantouzai</author><pubDate>Wed, 04 Jun 2025 21:55:15 +0800</pubDate><description><![CDATA[#线程与协程区别。]]></description><category></category></item><item><title><![CDATA[安卓背景background之shape属性介绍]]></title><link>https://blog.youkuaiyun.com/mantouzai/article/details/148412710</link><guid>https://blog.youkuaiyun.com/mantouzai/article/details/148412710</guid><author>mantouzai</author><pubDate>Wed, 04 Jun 2025 00:20:37 +0800</pubDate><description><![CDATA[通过使用 Shape Drawable，您可以方便地创建具有各种样式的背景，增强应用的视觉效果。]]></description><category></category></item></channel></rss>