<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ItsFated的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ItsFated</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ItsFated]]></copyright><item><title><![CDATA[一张图读懂OkHttp]]></title><link>https://blog.youkuaiyun.com/ItsFated/article/details/120404239</link><guid>https://blog.youkuaiyun.com/ItsFated/article/details/120404239</guid><author>ItsFated</author><pubDate>Tue, 21 Sep 2021 18:48:06 +0800</pubDate><description><![CDATA[主要内容

理解OKHttp和Http的关系
了解OkHttp的使用
理解OkHttp的宏观设计

源码示例
class OkHttpActivity : AppCompatActivity() {
    val TAG = "OkHttpActivity"
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.]]></description><category></category></item><item><title><![CDATA[一张图读懂Retrofit]]></title><link>https://blog.youkuaiyun.com/ItsFated/article/details/120398491</link><guid>https://blog.youkuaiyun.com/ItsFated/article/details/120398491</guid><author>ItsFated</author><pubDate>Tue, 21 Sep 2021 09:04:56 +0800</pubDate><description><![CDATA[如何读源码
三部曲：

寻找切入点，带着将源码整体化，结构化的意识，开始阅读

从切入点开始将代码一小步一小步的进行模块化的记忆
遇到无法切入时，可以先切换到另一个小模块进行挖掘
建议的切入点：使用中最接近逻辑开始的地方。如网络请求框架的开始请求的地方：retrofit2.Call.enqueue


阅读的过程中，时刻保持将代码尽心体系化，完整化的意识

每次将小模块完成之后，再进行下一个小块的完善，直到心中有一个完整的整体模块


时刻保持一个明确的目的进行阅读

阅读的过程中可能会出现需要纵向深入和横]]></description><category></category></item><item><title><![CDATA[Android Studio 同步配置（Settings）到GIt服务器]]></title><link>https://blog.youkuaiyun.com/ItsFated/article/details/116979514</link><guid>https://blog.youkuaiyun.com/ItsFated/article/details/116979514</guid><author>ItsFated</author><pubDate>Tue, 18 May 2021 11:12:53 +0800</pubDate><description><![CDATA[同步到码云

创建私有仓库，如下图

 2. 复制SSH地址到Android Studio的导出配置中如下：同步到自己的Git服务器第二步

同步到自己的Git服务器
搭建方式就不说了，自行百度。同步步骤如下：

创建Git仓库：git init --bare（如下图创建了一个临时仓库用于演示）

同步配置，URL的格式（ssh://用户@域名:端口/路径），比如我图中的就是如下URL：
ssh://jason@www.xxx.com:22/mnt/source/repositories/temp
开始使用]]></description><category></category></item><item><title><![CDATA[Android DataBinding 笔记四]]></title><link>https://blog.youkuaiyun.com/ItsFated/article/details/115379222</link><guid>https://blog.youkuaiyun.com/ItsFated/article/details/115379222</guid><author>ItsFated</author><pubDate>Thu, 01 Apr 2021 17:20:19 +0800</pubDate><description><![CDATA[这篇笔记主要记录绑定适配器和双向绑定的基本用法，这篇文章会包含完整的代码和运行效果。
绑定适配器
绑定适配器的作用就是给布局文件（xml）和特定方法之间起到相互绑定的作用的注解。 如下示例（其中invertColorBackground这个app的前缀是可以省略的，而且不省略AndroidStudio还会报警告：Application namespace for attribute app:colorValue will be ignored.）：
@BindingAdapter("invertColorB]]></description><category></category></item><item><title><![CDATA[Android DataBinding 笔记三]]></title><link>https://blog.youkuaiyun.com/ItsFated/article/details/115379170</link><guid>https://blog.youkuaiyun.com/ItsFated/article/details/115379170</guid><author>ItsFated</author><pubDate>Thu, 01 Apr 2021 17:18:59 +0800</pubDate><description><![CDATA[这篇笔记主要记录常见的应用场景和一些基础知识点

Activity和Fragment之间的交互（它们都有使用DataBinding）
定义自动生成的绑定类的名称
和ViewStub的搭配方法
View的ID会在绑定类中自动生成控件的成员变量

Activity视图内包含Fragment和ViewStub
在Activity中包含Fragment和ViewStub是很常见的操作，然而DataBinding可以让他们之间的关联代码减少很多。下面的代码用来演示他们之间通过DataBinding是如何来进行交互的。]]></description><category></category></item><item><title><![CDATA[Android DataBinding 笔记二]]></title><link>https://blog.youkuaiyun.com/ItsFated/article/details/115379061</link><guid>https://blog.youkuaiyun.com/ItsFated/article/details/115379061</guid><author>ItsFated</author><pubDate>Thu, 01 Apr 2021 17:16:53 +0800</pubDate><description><![CDATA[这篇用来介绍可被观察的数据，用来实现界面当数据改变时自动更新。
可被观察的数据
参考官网：使用可观察的数据对象。基础的可被观察的数据：

ObservableBoolean
ObservableChar
ObservableShort

等等……都是继承自androidx.databinding.BaseObservable，看下核心源码：
public class BaseObservable implements Observable {
    private transient PropertyCh]]></description><category></category></item><item><title><![CDATA[Android DataBinding 笔记一]]></title><link>https://blog.youkuaiyun.com/ItsFated/article/details/115378904</link><guid>https://blog.youkuaiyun.com/ItsFated/article/details/115378904</guid><author>ItsFated</author><pubDate>Thu, 01 Apr 2021 17:13:14 +0800</pubDate><description><![CDATA[官网介绍，DataBinding是用于将数据的和视图绑定在一起的支持库，特点是只需要在视图定义的xml中编写绑定信息，减少在代码中的视图于数据的交互逻辑。
这样可以分离数据和视图，减少这两个模块在代码层面上的耦合。
启用功能
在项目的build.gradle中添加如下代码即可：
android {
    ...
    dataBinding {
        enabled = true
    }
}

常见问题：

DSL element ‘android.dataBinding.enabled’]]></description><category></category></item><item><title><![CDATA[各版本 Android 的 SettingsProvider 数据保存位置]]></title><link>https://blog.youkuaiyun.com/ItsFated/article/details/115207675</link><guid>https://blog.youkuaiyun.com/ItsFated/article/details/115207675</guid><author>ItsFated</author><pubDate>Thu, 25 Mar 2021 14:26:31 +0800</pubDate><description><![CDATA[Android 6.0之前的所在位置：
data/data/com.android.providers.settings/databases
Android 6.0之后的所在位置：
/data/system/users/userid/settings_[system|global|secure].xml
一共三个xml文件用来存储系统设置。
参考：
https://stackoverflow.com/questions/51466177/where-is-the-sqlite-database-that-h]]></description><category></category></item><item><title><![CDATA[Android Hilt 笔记]]></title><link>https://blog.youkuaiyun.com/ItsFated/article/details/114664055</link><guid>https://blog.youkuaiyun.com/ItsFated/article/details/114664055</guid><author>ItsFated</author><pubDate>Thu, 11 Mar 2021 14:11:11 +0800</pubDate><description><![CDATA[官网介绍已经讲解的非常详细了，这里就不做过多的介绍，只是记录下核心的思想和步骤，让应用可以跑起来，并且用到核心的依赖注入功能。（建议不要使用Hilt，去用Koin，Koin比这个Hilt好用太多了，简洁明了。参考：Kotlin替换Dagger2/Hilt的依赖注入框架–Koin）
浅谈依赖注入
依赖注入是控制反转的一种实现方式，目的是：分离创建这个类的代码和使用这个类的代码分离创建这个类的代码和使用这个类的代码分离创建这个类的代码和使用这个类的代码。
为什么要分离呢？因为：一个类有特别多的依赖时，创建依赖的]]></description><category></category></item><item><title><![CDATA[Android APK 反编译的基本工具和步骤]]></title><link>https://blog.youkuaiyun.com/ItsFated/article/details/114444463</link><guid>https://blog.youkuaiyun.com/ItsFated/article/details/114444463</guid><author>ItsFated</author><pubDate>Sat, 06 Mar 2021 17:14:49 +0800</pubDate><description><![CDATA[准备材料

dex2jar Android .dex 文件和Java的.class文件的转换
ApkTool 反编译APK工具
Luyten 是Java反编译工具（procyon的GUI）

反编译步骤

用ApkTool反编译APK到指定目录：


]]></description><category></category></item><item><title><![CDATA[Android Studio Skills]]></title><link>https://blog.youkuaiyun.com/ItsFated/article/details/111397169</link><guid>https://blog.youkuaiyun.com/ItsFated/article/details/111397169</guid><author>ItsFated</author><pubDate>Fri, 18 Dec 2020 21:55:32 +0800</pubDate><description><![CDATA[Inotify Watches Limit
https://confluence.jetbrains.com/display/IDEADEV/Inotify+Watches+Limit

Add the following line to either /etc/sysctl.conf file or a new *.conf file (e.g. idea.conf) under /etc/sysctl.d/ directory:
fs.inotify.max_user_watches = 524288
]]></description><category></category></item><item><title><![CDATA[Android 常见解决方案记录]]></title><link>https://blog.youkuaiyun.com/ItsFated/article/details/111077395</link><guid>https://blog.youkuaiyun.com/ItsFated/article/details/111077395</guid><author>ItsFated</author><pubDate>Sat, 12 Dec 2020 17:38:15 +0800</pubDate><description><![CDATA[LinearLayout android:layout_weight=“1"失效
方案一：
参考——ScrollView中layout_weight无效
在 ScrollView中设置 android:fillViewport=“true”
方案二：
layout_weight=“1"下面的控件需要确定的宽高，如
android:layout_height=“59dp”
android:layout_height=”@dimen/height”

...]]></description><category></category></item><item><title><![CDATA[Android BLE 知识点]]></title><link>https://blog.youkuaiyun.com/ItsFated/article/details/111029834</link><guid>https://blog.youkuaiyun.com/ItsFated/article/details/111029834</guid><author>ItsFated</author><pubDate>Fri, 11 Dec 2020 10:15:43 +0800</pubDate><description><![CDATA[android蓝牙BLE 简书总结：
android蓝牙BLE（一） —— 扫描
android蓝牙BLE（二） —— 通信
android蓝牙BLE（三） —— 广播
android蓝牙BLE（四） —— 实战
android蓝牙BLE 问题总结：
Android BLE4.+ 蓝牙开发国产手机兼容性解决方案
android蓝牙BLE 知识点总结：
Bluetooth BR/EDR和BLE的区别

...]]></description><category></category></item><item><title><![CDATA[AndroidStudio配置Gradle的阿里云效仓库]]></title><link>https://blog.youkuaiyun.com/ItsFated/article/details/110953002</link><guid>https://blog.youkuaiyun.com/ItsFated/article/details/110953002</guid><author>ItsFated</author><pubDate>Thu, 10 Dec 2020 14:53:08 +0800</pubDate><description><![CDATA[参考：
https://www.cnblogs.com/bluestorm/p/12466860.html
阿里云效官网：
https://maven.aliyun.com/mvn/guide
阿里源Maven配置官网指导：
https://developer.aliyun.com/mirror/maven?spm=a2c6h.13651102.0.0.3e221b11EoKnus
我的配置：
        maven { url 'https://maven.aliyun.com/repository/]]></description><category></category></item><item><title><![CDATA[图解MVC、MVP和MVVM，简单对比]]></title><link>https://blog.youkuaiyun.com/ItsFated/article/details/109389160</link><guid>https://blog.youkuaiyun.com/ItsFated/article/details/109389160</guid><author>ItsFated</author><pubDate>Fri, 30 Oct 2020 21:16:50 +0800</pubDate><description><![CDATA[角色对比




模式
角色
作用
模式
角色
作用
模式
角色
作用




MVC
Model
保存数据
MVP
Model
保存数据
MVVM
Model
保存数据


-
View
用户界面
-
View
用户界面
-
View
用户界面


-
Controller
业务逻辑
-
Presenter
业务逻辑
-
ViewModel
数据绑定


从上表可知基本所有的模式，都是为了隔离数据、界面和业务逻辑，这三个部分。
交互对比
参考文章

阮一峰的网络日志——MVC，MVP 和 MVVM 的图示]]></description><category></category></item><item><title><![CDATA[Android 源码笔记（持续更新：2021年3月9日）]]></title><link>https://blog.youkuaiyun.com/ItsFated/article/details/109156277</link><guid>https://blog.youkuaiyun.com/ItsFated/article/details/109156277</guid><author>ItsFated</author><pubDate>Tue, 20 Oct 2020 09:36:21 +0800</pubDate><description><![CDATA[记录AOSP中各个目录的作用和文件的作用
目录篇
文件篇

]]></description><category></category></item><item><title><![CDATA[AOSP多个桌面应用，设置默认桌面，刷机第一次不提示选择默认桌面]]></title><link>https://blog.youkuaiyun.com/ItsFated/article/details/108981823</link><guid>https://blog.youkuaiyun.com/ItsFated/article/details/108981823</guid><author>ItsFated</author><pubDate>Fri, 09 Oct 2020 17:06:37 +0800</pubDate><description><![CDATA[思路
系统有多个桌面应用时，第一次刷机开机会弹出选择桌面的对话框。只需要直接跳过选择流程并选中目标应用即可。
实现
相关文件

frameworks/base/core/java/com/android/internal/app/ResolverActivity.java（选择默认桌面的界面）

参考链接：https://blog.youkuaiyun.com/wxd_csdn_2016/article/details/87708307
添加此函数，到frameworks/base/core/java/com/andr]]></description><category></category></item><item><title><![CDATA[在AOSP中添加jar包和aar包依赖]]></title><link>https://blog.youkuaiyun.com/ItsFated/article/details/108844860</link><guid>https://blog.youkuaiyun.com/ItsFated/article/details/108844860</guid><author>ItsFated</author><pubDate>Wed, 30 Sep 2020 15:26:39 +0800</pubDate><description><![CDATA[在AOSP中添加jar包和aar包依赖
Android源码中添加jar的方式比较简单，参考telephony-common.jar的手法，关键两步
ifneq ($(TARGET_BUILD_PDK), true)

LOCAL_PATH := $(call my-dir)

include $(CLEAR_VARS)

LOCAL_AIDL_INCLUDES := $(LOCAL_PATH)/src/java
LOCAL_SRC_FILES := $(call all-java-files-under, ]]></description><category></category></item><item><title><![CDATA[Windows10 同步AOSP 2018年]]></title><link>https://blog.youkuaiyun.com/ItsFated/article/details/82026304</link><guid>https://blog.youkuaiyun.com/ItsFated/article/details/82026304</guid><author>ItsFated</author><pubDate>Fri, 24 Aug 2018 22:38:14 +0800</pubDate><description><![CDATA[百度经验，参考： https://jingyan.baidu.com/article/597a064325b92c312b5243a4.html



准备材料：

1. cygwin： 具体有如何安装，和需要哪些操作参考百度经验，
    a. 如果出现cynwin的下载站点为空的情况，请自己到 https://cygwin.com/mirrors.html 这个网站选择一个可以访问的链接下载，...]]></description><category></category></item><item><title><![CDATA[Android应用内增量更新]]></title><link>https://blog.youkuaiyun.com/ItsFated/article/details/81905697</link><guid>https://blog.youkuaiyun.com/ItsFated/article/details/81905697</guid><author>ItsFated</author><pubDate>Tue, 21 Aug 2018 15:57:54 +0800</pubDate><description><![CDATA[Android 增量更新实现

原本来腾讯课堂中了解到了一些关于增量更新的知识 
 - 手机端实现 
 - 服务端实现]]></description><category></category></item></channel></rss>