<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[主营Android，副营Flutter、前端]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/Android_Programmer</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; Android_Programmer]]></copyright><item><title><![CDATA[源解 Glide V4.10.0]]></title><link>https://blog.youkuaiyun.com/Android_Programmer/article/details/138118794</link><guid>https://blog.youkuaiyun.com/Android_Programmer/article/details/138118794</guid><author>Android_Programmer</author><pubDate>Tue, 23 Apr 2024 11:45:53 +0800</pubDate><description><![CDATA[Glide是一个快速高效的Android图片加载库，注重于平滑的滚动。Glide提供了易用的API，高性能、可扩展的图片解码管道（decode pipeline），以及自动的资源池技术。]]></description><category></category></item><item><title><![CDATA[Android电量/功耗优化指南]]></title><link>https://blog.youkuaiyun.com/Android_Programmer/article/details/136622114</link><guid>https://blog.youkuaiyun.com/Android_Programmer/article/details/136622114</guid><author>Android_Programmer</author><pubDate>Mon, 11 Mar 2024 13:58:34 +0800</pubDate><description><![CDATA[电能 = 电压 * 电流 * 时长模块电量(mAh) = 模块电流(mA) * 时长(h)系统电量优化红线规则华为电量优化红线规则。]]></description><category></category></item><item><title><![CDATA[人工智能与大语言模型攻略]]></title><link>https://blog.youkuaiyun.com/Android_Programmer/article/details/136338395</link><guid>https://blog.youkuaiyun.com/Android_Programmer/article/details/136338395</guid><author>Android_Programmer</author><pubDate>Wed, 28 Feb 2024 10:07:12 +0800</pubDate><description><![CDATA[通常使用深度学习技术，如神经网络，来训练大量的文本数据。大语言模型能够理解和生成人类语言，具有强大的语言结构理解和生成能力。规模大：大量数据生成大量的参数。（大语言模型中，参数通常指神经网络中的权重和偏置）上下文学习：能够记住之前的对话或文本片段，并据此生成连贯且相关的回应或输出。遵循用户的指令：根据给定的提示或命令来生成相应的文本。循序渐进推理：能够根据一系列的提示或指令，逐步推导出最后的答案或结论。]]></description><category></category></item><item><title><![CDATA[frp 内网穿透搭建指南]]></title><link>https://blog.youkuaiyun.com/Android_Programmer/article/details/136230486</link><guid>https://blog.youkuaiyun.com/Android_Programmer/article/details/136230486</guid><author>Android_Programmer</author><pubDate>Thu, 22 Feb 2024 12:22:01 +0800</pubDate><description><![CDATA[公司没有自建内网 VPN，项目出现问题只能来公司解决非常不方便。由于家里和公司都是使用的 Mac 电脑，所以只要实现内网穿透就可以直接使用 vnc 远程控制公司电脑了。目前市面上有很多内网穿透产品，例如：frp、ngrok、natapp、花生壳等。正好前段时间买了台腾讯云服务器，下面就来记录下如何搭建 frp 来实现内网穿透。]]></description><category></category></item><item><title><![CDATA[Android 监听网络状态变化（无切换中间态版）]]></title><link>https://blog.youkuaiyun.com/Android_Programmer/article/details/135617852</link><guid>https://blog.youkuaiyun.com/Android_Programmer/article/details/135617852</guid><author>Android_Programmer</author><pubDate>Tue, 16 Jan 2024 10:19:30 +0800</pubDate><description><![CDATA[ConnectivityManager#registerNetworkCallback() 是监听所有网络变换的，监听范围广，但无法得知当前“系统默认网络”是什么，可以实现判断网络状态，但无法判断网络类型。广播监听 与 ConnectivityManager#registerDefaultNetworkCallback() 都是监听“系统默认网络”，所以可以实现网络状态与类型的判断，但都存在重复回调的情况，所以要做过滤处理，以及“系统默认网络”切换到普通网络时会有偶现短暂“无网络”状态，需要做延迟处理。]]></description><category></category></item><item><title><![CDATA[Flutter 混合开发 - aar打包]]></title><link>https://blog.youkuaiyun.com/Android_Programmer/article/details/135404114</link><guid>https://blog.youkuaiyun.com/Android_Programmer/article/details/135404114</guid><author>Android_Programmer</author><pubDate>Fri, 05 Jan 2024 10:56:26 +0800</pubDate><description><![CDATA[项目接入 Flutter 后有两种方式，一种是 module 引入开发，一种是 aar 依赖开发。当前项目中在 Debug 阶段为了方便调试采用 module 开发，在发版时（即 Release 阶段）采用 aar 依赖引入。为了配合这种模式就需要在 release 阶段将 aar 上传至公司 maven 仓库中，但目前 Flutter 仅提供本地发布，所以下面基于官方脚本修改，实现上传至公司 maven。]]></description><category></category></item><item><title><![CDATA[Android低功耗蓝牙开发总结]]></title><link>https://blog.youkuaiyun.com/Android_Programmer/article/details/135403974</link><guid>https://blog.youkuaiyun.com/Android_Programmer/article/details/135403974</guid><author>Android_Programmer</author><pubDate>Fri, 05 Jan 2024 10:45:38 +0800</pubDate><description><![CDATA[记住一个核心：蓝牙传输非常不稳定，指不定啥时候就没响应或丢包了。]]></description><category></category></item><item><title><![CDATA[Flutter 混合开发 - 动态下发 libflutter.so & libapp.so]]></title><link>https://blog.youkuaiyun.com/Android_Programmer/article/details/135340532</link><guid>https://blog.youkuaiyun.com/Android_Programmer/article/details/135340532</guid><author>Android_Programmer</author><pubDate>Tue, 02 Jan 2024 14:42:07 +0800</pubDate><description><![CDATA[明确只在打 release 包时才需要剔除（因为谁关心 debug 包包体积呀！确定剔除 Task 执行的时机。剔除要在 merge 所有 so 之后才行，通过查看 task 列表，发现 “mergeReleaseNativeLibs” 就是非常不错的时机。@Override//只在 release 变体下生效if (!//自定义 Gradle Task//指定自定义 Task 执行时机：mergeReleaseNativeLibs -> flutterSoDynamicRelease。]]></description><category></category></item><item><title><![CDATA[再见2023，你好2024]]></title><link>https://blog.youkuaiyun.com/Android_Programmer/article/details/135338861</link><guid>https://blog.youkuaiyun.com/Android_Programmer/article/details/135338861</guid><author>Android_Programmer</author><pubDate>Tue, 02 Jan 2024 13:51:21 +0800</pubDate><description><![CDATA[再次感叹，时间过得飞快，又一年过去了。本文写于 2023年12月24日。]]></description><category></category></item><item><title><![CDATA[MV*系列架构模型]]></title><link>https://blog.youkuaiyun.com/Android_Programmer/article/details/128588330</link><guid>https://blog.youkuaiyun.com/Android_Programmer/article/details/128588330</guid><author>Android_Programmer</author><pubDate>Sat, 07 Jan 2023 10:30:52 +0800</pubDate><description><![CDATA[浅谈对 MVC、MVP、MVVM、MVI 的理解]]></description><category></category></item><item><title><![CDATA[Android Studio 插件 — 开发工具类搜集]]></title><link>https://blog.youkuaiyun.com/Android_Programmer/article/details/126988449</link><guid>https://blog.youkuaiyun.com/Android_Programmer/article/details/126988449</guid><author>Android_Programmer</author><pubDate>Thu, 22 Sep 2022 11:22:37 +0800</pubDate><description><![CDATA[随着代码量的不断增加，为了开发方便，提取出了各种工具类/方法，但由于没有查询方式，往往只能是谁加的谁知道用，而其他人由于不知道已有该工具类/方法，所以无脑又新建了一个。这就导致项目体积增大，并且可维护性大大降低。举个例子，项目有单位的处理的工具方法(例如大于1000显示K()大写)，但其他人不知道又重新建了个方法，某天要求所有地方的单位都统一成k(小写)，只能挨个功能搜索看用的那个方法处理的，这就出现嘞无用功，而且还容易遗漏。]]></description><category></category></item><item><title><![CDATA[Jetpack 组件之 ViewModel 使用与浅析]]></title><link>https://blog.youkuaiyun.com/Android_Programmer/article/details/118056417</link><guid>https://blog.youkuaiyun.com/Android_Programmer/article/details/118056417</guid><author>Android_Programmer</author><pubDate>Sat, 19 Jun 2021 17:10:17 +0800</pubDate><description><![CDATA[ViewModel 是什么？
官方解释：

The ViewModel class is designed to store and manage UI-related data in a lifecycle conscious way. The ViewModel class allows data to survive configuration changes such as screen rotations.

个人理解： 
ViewModel 是 UI 和数据的桥接层，承担 UI 层(Activi]]></description><category></category></item><item><title><![CDATA[Jetpack 组件之 Lifecycle 使用与浅析]]></title><link>https://blog.youkuaiyun.com/Android_Programmer/article/details/117605973</link><guid>https://blog.youkuaiyun.com/Android_Programmer/article/details/117605973</guid><author>Android_Programmer</author><pubDate>Sat, 05 Jun 2021 21:25:42 +0800</pubDate><description><![CDATA[Lifecycle 是什么？
官方解释：

Lifecycle is a class that holds the information about the lifecycle state of a component (like an activity or a fragment) and allows other objects to observe this state.

个人理解：
Lifecycle 就是管理组件( Activity / Fragment )生命周期的一个工具(类），可以在其他]]></description><category></category></item><item><title><![CDATA[【设计模式】创建型(单例、工厂、建造)]]></title><link>https://blog.youkuaiyun.com/Android_Programmer/article/details/114376601</link><guid>https://blog.youkuaiyun.com/Android_Programmer/article/details/114376601</guid><author>Android_Programmer</author><pubDate>Thu, 04 Mar 2021 20:04:50 +0800</pubDate><description><![CDATA[修改记录
修改时间
备注




新建
20201.03.04
设计模式文章集合:   设计原则-SOLID、DRY、KISS、YAGNI、LOD


单例模式
饿汉式
在类加载期间，就已经将 instance 静态实现初始化好，可以保证 instance 实例的创建时线程安全的。不过也导致不支持延迟加载实例。
public class IdGenerator(){
    private IdGenerator(){}
    private AtomicLong id = new AtomicL...]]></description><category></category></item><item><title><![CDATA[【读书笔记】《软技能——代码之外的生存指南》]]></title><link>https://blog.youkuaiyun.com/Android_Programmer/article/details/113833014</link><guid>https://blog.youkuaiyun.com/Android_Programmer/article/details/113833014</guid><author>Android_Programmer</author><pubDate>Wed, 17 Feb 2021 12:32:29 +0800</pubDate><description><![CDATA[修改记录
修改时间
备注




新建
2021.02.17



1、将自己的职业当做一家企业
需要你思考并做到以下几点：


正在提供怎样的服务，以及如何营销


想方法提升服务


专注为哪一特定的客户或者行业提供服务


集中精力成为一位专家，专门为某一特定类型客户提供专业的整体服务


2、思考未来，设定目标


在心中树立一个足够清晰的大目标


将大目标分解成若干小目标


将大目标写在每天必经之地，每日三省吾身——我在追求什么


3、人际交往


每个人都希望感到自己很重要。不要轻...]]></description><category></category></item><item><title><![CDATA[【设计模式】设计原则-SOLID、DRY、KISS、YAGNI、LOD]]></title><link>https://blog.youkuaiyun.com/Android_Programmer/article/details/113730284</link><guid>https://blog.youkuaiyun.com/Android_Programmer/article/details/113730284</guid><author>Android_Programmer</author><pubDate>Sat, 06 Feb 2021 20:30:46 +0800</pubDate><description><![CDATA[修改记录
修改时间
备注




新建
2021.02.09
整理自极客时间-王争的设计模式之美(推荐购买学习)


1. SOLID原则
1.1 SRP(Single Responsibility Principle) 单一职责
1.1.1 定义：一个类或模块只负责完成一个功能。
理解：不要设计大而全的类，要设计粒度小、高性能单一的类。该原则的目的是为了实现代码高内聚、低耦合、提高代码复用性、可读性以及可维护性。
1.1.2 以下场景可能会出现类没有指责单一：

类中的代码行数、函数、属性是否过多...]]></description><category></category></item><item><title><![CDATA[【踩坑记录】多语言切换在Androidx失效]]></title><link>https://blog.youkuaiyun.com/Android_Programmer/article/details/112408274</link><guid>https://blog.youkuaiyun.com/Android_Programmer/article/details/112408274</guid><author>Android_Programmer</author><pubDate>Sat, 09 Jan 2021 21:30:40 +0800</pubDate><description><![CDATA[修改记录
修改时间




新建
2021.01.09


快速定位与修复
出现问题时的调用方式：
public class I18nBaseActivity extends AppCompatActivity {
    @Override
    protected void attachBaseContext(Context newBase) {
      	//切换多语言，然后将新生成的 context 覆盖给 attachBaseContext()
        Context con...]]></description><category></category></item><item><title><![CDATA[【踩坑记录】关于“保留两位小数”导致的Crash]]></title><link>https://blog.youkuaiyun.com/Android_Programmer/article/details/107576991</link><guid>https://blog.youkuaiyun.com/Android_Programmer/article/details/107576991</guid><author>Android_Programmer</author><pubDate>Sat, 25 Jul 2020 12:30:35 +0800</pubDate><description><![CDATA[最近在日常版本开发中，QA 发现某一功能国内版本没有问题，但是海外版本必现 Crash。当时收到Bug记录时一脸懵逼，同一套代码怎么会国内没问题，海外版本却必现 Crash 呢。找 QA 打印了 Crash 日志如下：
07-22 21:20:33.409 16542 16542 E AndroidRuntime: FATAL EXCEPTION: main
07-22 21:20:33.409 16542 16542 E AndroidRuntime: Process: com.xxx.xxxoverse]]></description><category></category></item><item><title><![CDATA[List 的 ForEach 可能导致 ConcurrentModificationException?]]></title><link>https://blog.youkuaiyun.com/Android_Programmer/article/details/104136132</link><guid>https://blog.youkuaiyun.com/Android_Programmer/article/details/104136132</guid><author>Android_Programmer</author><pubDate>Sat, 01 Feb 2020 17:32:10 +0800</pubDate><description><![CDATA[问题：
ConcurrentModificationException 问题多出现在 List 的 forEach 或者 Iterator 循环中，调用 List 中的方法操作数据。
例如：
//List Iterator 循环里操作数据
public static void main(String[] args) {
    ArrayList&lt;int&gt; list=new Array...]]></description><category></category></item><item><title><![CDATA[一文普及 Git 使用与常用命令整理]]></title><link>https://blog.youkuaiyun.com/Android_Programmer/article/details/99185784</link><guid>https://blog.youkuaiyun.com/Android_Programmer/article/details/99185784</guid><author>Android_Programmer</author><pubDate>Sun, 11 Aug 2019 13:47:50 +0800</pubDate><description><![CDATA[闲言碎语
 刚工作没几年，最开始使用的是 svn，感觉操作简单，就是多人开发的时候管理代码贼麻烦。后来换了新公司后使用 Git 管理代码，发现这玩意简直不要太好用，尤其是可以建分支，减少了工作中很多麻烦的操作。于是乎我变成了 Git 的忠实粉丝。我使用的是 Win 电脑，最开始不知道 Git 命令，也懒得去敲，所以一直使用 sourceTree 来操作（也推荐小白先用该工具理解操作的含义后再考虑用...]]></description><category></category></item></channel></rss>