<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[ffengz的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/ffengz</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; ffengz]]></copyright><item><title><![CDATA[MVC MVP MVVP Android端构建个人总结]]></title><link>https://blog.youkuaiyun.com/ffengz/article/details/112658543</link><guid>https://blog.youkuaiyun.com/ffengz/article/details/112658543</guid><author>ffengz</author><pubDate>Fri, 15 Jan 2021 19:18:49 +0800</pubDate><description><![CDATA[黑发不知勤学早，白首方悔读书迟。



MVC

MVC (Model-View-Controller, 模型-视图-控制器)Trygve Reenskaug在1978年提出(维基百科)：

模型（Model） - 程序员编写程序应有的功能（实现算法等等）、数据库专家进行数据管理和数据库设计(可以实现具体的功能)。
	视图（View） - 界面设计人员进行图形界面设计。
	控制器（Controller）- 负责转发请求，对请求进行处理。
君生我未生，永不过时的经典软件架构模式。

对应于Android开..]]></description><category></category></item><item><title><![CDATA[Sonatype Nexus Repository Manager 3.+版本 上传aar、jar]]></title><link>https://blog.youkuaiyun.com/ffengz/article/details/109489788</link><guid>https://blog.youkuaiyun.com/ffengz/article/details/109489788</guid><author>ffengz</author><pubDate>Wed, 04 Nov 2020 14:59:57 +0800</pubDate><description><![CDATA[引

Android做组件化，项目aar包需要上传到Maven仓库，项目之间还存在互相依赖的情况。网上找了很多：通过AS直接配置gradle，直接在build上传，不适用互相依赖的情况，或许是还有其他的配置；直接通过Sonatype Nexus上传，也有问题，几乎都是2.+版本的搜索结果，界面的改动相当大，所以做个简单的笔记。

正

1.直接上传单个文件

进入某个仓库，点击upload component进入上传页面：



上传成功后文件的目录结构大致如下：



2通过pom文件上传

我这里是为了]]></description><category></category></item><item><title><![CDATA[jar文件内部包名编辑]]></title><link>https://blog.youkuaiyun.com/ffengz/article/details/109475460</link><guid>https://blog.youkuaiyun.com/ffengz/article/details/109475460</guid><author>ffengz</author><pubDate>Tue, 03 Nov 2020 18:28:10 +0800</pubDate><description><![CDATA[引

将项目做为模块嵌入到别人的系统，发现jar文件包名冲突，双方改动比较麻烦，就直接通过修改.jar文件的包名的方式解决了。

工具下载地址：google jar工具下载

实现：

将下载的工具jarjar-1.4.jar和要替换的xx.jar放在一个目录。
	该目录下新建rule.txt 内容：rule com.android_print_sdk.** com.aiyin_print_sdk.@1
	运控控制台输入：
	
java -jar jarjar-1.4.jar process rule.t.]]></description><category></category></item><item><title><![CDATA[Databinding使用·记]]></title><link>https://blog.youkuaiyun.com/ffengz/article/details/109464488</link><guid>https://blog.youkuaiyun.com/ffengz/article/details/109464488</guid><author>ffengz</author><pubDate>Tue, 03 Nov 2020 11:47:42 +0800</pubDate><description><![CDATA[韶华不为少年留，恨悠悠，几时休。



基础用法：

1. gradle 配置支持dataBinding


// gradle 支持dataBinding

android{

/.../

dataBinding {

    enabled = true;

}

}


2. 选中根目录 alt+回车 生成对应格式，简单的绑定。







3. 实现绑定：dataBean extends BaseObservable 配合notifyChange()和notifyPropertyC...]]></description><category></category></item><item><title><![CDATA[Android Studio优雅的看源码]]></title><link>https://blog.youkuaiyun.com/ffengz/article/details/88558195</link><guid>https://blog.youkuaiyun.com/ffengz/article/details/88558195</guid><author>ffengz</author><pubDate>Thu, 14 Mar 2019 18:29:57 +0800</pubDate><description><![CDATA[正常情况看源码：

下载了默认就可以看了，不做赘述。

看源码出现了问题，下载了看不到?

1.找到AS安装目录 AndroidStudio3.1 -&amp;gt; options -&amp;gt; jdk.table.xml 打开修改对应数据：



但是28的源码始终看不了，不知道为什么。。。。。其他版本没问题。

类报红，看不到hide类



https://github.com/anggrayudi...]]></description><category></category></item><item><title><![CDATA[MVP+Retrofit+Rxjava+Dagger2 Architecture]]></title><link>https://blog.youkuaiyun.com/ffengz/article/details/86673370</link><guid>https://blog.youkuaiyun.com/ffengz/article/details/86673370</guid><author>ffengz</author><pubDate>Mon, 28 Jan 2019 15:16:03 +0800</pubDate><description><![CDATA[地址

https://github.com/meybeBlank/FengArchitecture

前言

Android做了两三年，每次都是用的别人的架构，中途也抽时间看过项目的框架的东西，一知半解，虎头蛇尾。自己没有从0到1的过程，能力没法引起质变，始终还是半吊子，年初打定主意把热门的Retrofit之类全都系统的亲手敲一遍。由经历了找工作遇到坑，再找工作安定下来的一言难尽，最后弄完已经到...]]></description><category></category></item><item><title><![CDATA[Android 7.0+ 文件权限 相机调用问题]]></title><link>https://blog.youkuaiyun.com/ffengz/article/details/85100368</link><guid>https://blog.youkuaiyun.com/ffengz/article/details/85100368</guid><author>ffengz</author><pubDate>Wed, 19 Dec 2018 16:38:48 +0800</pubDate><description><![CDATA[ 

情景

Android 24之后，加强了文件访问权限控制，调用相机、图片裁剪等情况就会报错。之前遇到过懒得记，再次遇到简单记一下。

处理

1.Manifests文件注册


&amp;lt;application&amp;gt;
        &amp;lt;provider
            android:name=&quot;android.support.v4.content.FileProvider&quot;
...]]></description><category></category></item><item><title><![CDATA[Dagger-android 量身定做的Dagger]]></title><link>https://blog.youkuaiyun.com/ffengz/article/details/84974311</link><guid>https://blog.youkuaiyun.com/ffengz/article/details/84974311</guid><author>ffengz</author><pubDate>Wed, 12 Dec 2018 18:11:41 +0800</pubDate><description><![CDATA[目录

0. 为什么定制？

1. 2.10版本复杂的方式

1.0 导包

1.1 依赖创建

1.2 依赖注入

1.3 让这一切被Dagger所知晓

1.4 源码看了一下 结合 生成的代码

2. 2.11版本@ContributesAndroidInjector

0. 为什么定制？

从 Dagger2入门 了解到，Dagger2的一个坑就是：


Component inject(c...]]></description><category></category></item><item><title><![CDATA[Dagger2学习入门]]></title><link>https://blog.youkuaiyun.com/ffengz/article/details/83826995</link><guid>https://blog.youkuaiyun.com/ffengz/article/details/83826995</guid><author>ffengz</author><pubDate>Tue, 13 Nov 2018 18:03:50 +0800</pubDate><description><![CDATA[ 

目录

前置：

几个明显的坑：

三种常用的依赖注入方式：

构造器注入：

setter方法注入：

接口注入：

 

Dagger简单注入：

1.依赖创建：构造方法提供依赖

1.依赖创建：Module类提供依赖

2.依赖注入位置：属性注入 User注入

2.依赖注入位置：方法注入 User2注入

3.让dagger知道从哪儿获取依赖，注入依赖到哪儿：构造方法提供依赖

3....]]></description><category></category></item><item><title><![CDATA[RxJava学习指南]]></title><link>https://blog.youkuaiyun.com/ffengz/article/details/83619626</link><guid>https://blog.youkuaiyun.com/ffengz/article/details/83619626</guid><author>ffengz</author><pubDate>Fri, 02 Nov 2018 15:11:58 +0800</pubDate><description><![CDATA[目录

基础用法

single

Completable

Maybe

Flowable

线程调度

关键字

create

map

flatMap/concatMap

timer

interval/intervalRange

zip

concat/merge

distinct

filter

buffer

skip/skipLast

take/takeLast

...]]></description><category></category></item><item><title><![CDATA[Retrofit简单使用]]></title><link>https://blog.youkuaiyun.com/ffengz/article/details/83544405</link><guid>https://blog.youkuaiyun.com/ffengz/article/details/83544405</guid><author>ffengz</author><pubDate>Tue, 30 Oct 2018 16:50:22 +0800</pubDate><description><![CDATA[目录

一次简单完整的网络请求处理

0.前置工作：添加依赖、权限    

1.创建返回数据Model

2.创建请求参数接口

3.创建Retrofit对象，初始化配置

4.获取网络请求实例，发送网络请求，并异步处理返回数据

添加请求头

拦截器 Interceptor 方式

Retrofit 注解方式

retrofit官方文档

retrofit github

非官方：OkHttp...]]></description><category></category></item><item><title><![CDATA[MVP简单架构]]></title><link>https://blog.youkuaiyun.com/ffengz/article/details/83537424</link><guid>https://blog.youkuaiyun.com/ffengz/article/details/83537424</guid><author>ffengz</author><pubDate>Tue, 30 Oct 2018 11:02:56 +0800</pubDate><description><![CDATA[MVC --&amp;gt; MVP ：

将Activity的View和Controller双重职责分离，Activity单纯负责View逻辑，Presenter层处理Model和View层的所有逻辑，Model层处理纯数据。

换言之，MVP类似于MVC++，解决分离不彻底的问题。

同时MVP也有一些值得讨论的地方：

Presenter层与View层是通过接口进行交互，接口粒度控制存在问题。粒度小...]]></description><category></category></item><item><title><![CDATA[并发编程]]></title><link>https://blog.youkuaiyun.com/ffengz/article/details/83502338</link><guid>https://blog.youkuaiyun.com/ffengz/article/details/83502338</guid><author>ffengz</author><pubDate>Mon, 29 Oct 2018 11:26:27 +0800</pubDate><description><![CDATA[进程：运行在他自己的地址空间的自包容程序。

线程：进程中的单一顺序控制流、子任务。

daemon后台线程：非后台线程结束，杀死所有后台线程，并结束整个程序。

 

变量实例对象存于主存；每个线程私有一个工作内存，同时只能操作自身工作内存，不能访问其他线程的工作内存。

由此引发，并发编程三个常见问题。

 

原子性

一个操作或者多个操作，要么都执行，要么都不执行，且中途无法打断。

可见...]]></description><category></category></item><item><title><![CDATA[APT 编译期处理注解]]></title><link>https://blog.youkuaiyun.com/ffengz/article/details/83414394</link><guid>https://blog.youkuaiyun.com/ffengz/article/details/83414394</guid><author>ffengz</author><pubDate>Fri, 26 Oct 2018 15:29:56 +0800</pubDate><description><![CDATA[APT：Annotation Processing Tools。编译期处理注解工具。

对源代码文件进行检测找出其中的Annotation，Annotation处理器在处理Annotation时可以根据源文件中的Annotation生成额外的源文件和其它的文件,APT还会编译生成的源文件和原来的源文件，将它们一起生成class文件。

简单的说：不影响性能的情况下，自动生成代码。

常用的Butt...]]></description><category></category></item><item><title><![CDATA[面向对象理解]]></title><link>https://blog.youkuaiyun.com/ffengz/article/details/83379251</link><guid>https://blog.youkuaiyun.com/ffengz/article/details/83379251</guid><author>ffengz</author><pubDate>Thu, 25 Oct 2018 16:03:05 +0800</pubDate><description><![CDATA[1.万物皆对象

编程实际是从现实问题建模转变为程序问题的一种具体实现，编程思想也脱胎于现实世界。

 

2.类-对象的统称，对象-类的具体实例

类：具有相同特性的所有对象的抽象，如同：鸟类、人类

对象：具体的某个类的实实在在存在的东西，如同：树上的那一只鸟，面前叫张三的人

但类并不是具体的存在与实际空间中，是一个抽象的概念性名词。

对应到程序中，类也并没有实际的存在于内存空间，真实存在...]]></description><category></category></item><item><title><![CDATA[常用命令合集]]></title><link>https://blog.youkuaiyun.com/ffengz/article/details/82755020</link><guid>https://blog.youkuaiyun.com/ffengz/article/details/82755020</guid><author>ffengz</author><pubDate>Tue, 18 Sep 2018 11:31:50 +0800</pubDate><description><![CDATA[获取当前Activity信息
adb shell &amp;amp;amp;quot;dumpsys window w | grep name=&amp;amp;amp;quot;

关联本地git到github
git remote add origin http:xxxx

删除远程仓库
git remote rm origin


]]></description><category></category></item><item><title><![CDATA[Java四种引用类型、RefrenceQueue简单理解]]></title><link>https://blog.youkuaiyun.com/ffengz/article/details/80567448</link><guid>https://blog.youkuaiyun.com/ffengz/article/details/80567448</guid><author>ffengz</author><pubDate>Mon, 04 Jun 2018 15:02:54 +0800</pubDate><description><![CDATA[

情景
强引用 StrongRefrence
软引用 SofrRefrence
弱引用 WeakRefrence
虚引用 PhantomRefrence
RefrenceQueue
WeakHashMap







情景

处理Android内存泄漏的时候发现引用类型的使用，这里简单理解。



强引用 StrongRefrence

具有强引用的对象，永远不会被GC回收，Android常见...]]></description><category></category></item><item><title><![CDATA[Java GC简单理解]]></title><link>https://blog.youkuaiyun.com/ffengz/article/details/80566647</link><guid>https://blog.youkuaiyun.com/ffengz/article/details/80566647</guid><author>ffengz</author><pubDate>Mon, 04 Jun 2018 14:16:10 +0800</pubDate><description><![CDATA[

情景
Java运行时内存划分
程序计数器 Program Counter Register
虚拟机栈 Java Stack
本地方法栈 Native Method Stack
堆区 Heap
方法区


Java内存分配机制
年轻代 Young Generation
Eden
Survivor


年老代 Old Generation
永久代/方法区
算法具体分析









情景

做...]]></description><category></category></item><item><title><![CDATA[Android内存泄漏测试、定位]]></title><link>https://blog.youkuaiyun.com/ffengz/article/details/80246894</link><guid>https://blog.youkuaiyun.com/ffengz/article/details/80246894</guid><author>ffengz</author><pubDate>Tue, 08 May 2018 23:06:41 +0800</pubDate><description><![CDATA[工具
使用
导入LeakCanary
AS获取heap dump文件 hprof
MAT分析内存泄漏原因工具
Android Studio下载
MAT（Memory Analyzer Tools）下载
Leakcanary 项目地址
使用导入LeakCanary在项目的gradle文件导入LeakCanary，具体操作见leakcanary当项目出现内存泄漏，通过LeakCanary定位具体的Act]]></description><category></category></item><item><title><![CDATA[共享元素]]></title><link>https://blog.youkuaiyun.com/ffengz/article/details/80233027</link><guid>https://blog.youkuaiyun.com/ffengz/article/details/80233027</guid><author>ffengz</author><pubDate>Mon, 07 May 2018 22:51:31 +0800</pubDate><description><![CDATA[情景
效果
使用情景推出“材料设计”同时5.0附带的“廉价”Android动画，让页面的跳转对用户更加指引性，也让页面的跳转通过“Shared Element”联系起来。效果使用一、跳转前的RecyclerView的item布局如下。 
重点在：transitionName，后面的String全局唯一<?xml version="1.0" encoding="utf-8"?>
<LinearLayo]]></description><category></category></item></channel></rss>