自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

dawN4get的博客

记录行走的脚步,每天进步一点点。

  • 博客(33)
  • 收藏
  • 关注

原创 装饰者模式

介绍装饰者模式,结构型设计模式之一,其使用一种对客户端透明的方式来动态的扩展对象的功能,同时它也是继承关系的一种替代方式,且更为灵活。类图Android源码中的模式实现Context类在Android中被称作“上帝对象”,它本质上是一个抽象类,其在我们装饰者模式中就相当于抽象组件,而在内部定义了大量的抽象方法,比如startActivity方法。public abstract clas...

2019-02-02 14:47:35 394

原创 自定义Gradle插件和AspectJ实战

生成gradle插件步骤create new Module select Android Library 把生成的module(例如:plugin)里面的东西都删除(除了build.gradle,但是要被gradle里面的所有内容删除)在plugin里面新增一个“src”文件夹,往src文件夹新增main文件夹,再往main文件夹新增groovy和resources文件夹。resou...

2018-05-03 09:00:04 2590

原创 AspectJ入门

AspectJ的作用:在不侵入原有代码的基础上,增加新的代码AspectJ之Join PointsJoin Points,简称JPoints,是AspectJ的核心思想之一,它就像一把刀,把程序的整个执行过程切成了一段段不同的部分。例如,构造方法调用、调用方法、方法执行、异常等等,这些都是Join Points,实际上,也就是你想把新的代码插在程序的哪个地方,是插在构造方法中,...

2018-05-03 08:54:48 570

原创 MVP封装

穷人版MVP结构图M <–> P <–> M内存泄漏若M层还在请求数据的时候,Activity或Fragment关闭了,由于V层持有P层的引用,P层又持有M层的引用,从而导致了内存泄漏。如果请求到的数据是在展现在View上的,那么还有空指针异常。解决方案一: 让presenter绑定Activity的生命周期,让它写一个绑定和解绑的方法,在Activit...

2018-04-27 16:57:38 356

原创 RxJava线程切换原理

这篇文章跟上一篇的RxJava执行流程有关联性,没阅读上一篇的先瞅一下。怎么进行线程切换的subscribeOn(Schedulers.io())首先了解下Scheduler.io()方法,它返回的是一个Scheduler,Scheduler是一个抽象方法,我们知道抽象方法是不能被实例化的,那么返回的肯定是它的实现类: public static Scheduler i...

2018-04-27 08:46:26 1345

原创 RxJava执行流程

核心问题: - 为甚是被观察者订阅观察者 - RxJava执行的流程为甚是被观察者订阅观察者Observable.subscribe(Observer); 从字面上的理解是被观察者订阅观察者,比如报纸订阅了读者。但从开发者的角度来理解,就很正常 了。RxJava这样设置的目的是为了流式Api的设计,还有就是Android中的观察者模式都是这样的写法,比如Vie...

2018-04-26 17:01:29 1636

原创 github上传时出现error: src refspec master does not match any解决办法

大前提:你已经安装好了git1、在github上创建项目2、clone到本地 :git clone https://github.com/xxxxxxx/yyy.git3、把项目粘贴到yyy目录(git帮你创建好的目录)4、git add . (将改动添加到暂存区,过程中需要那你填写你github的信息)5、git commit -m “提交说明”6、git push

2018-02-06 21:45:49 897

原创 Builder模式

Builder模式主要用于复杂对象的构造,通过使用Builder模式可以减少构造器或方法调用传入的参数数量。这对有很多个配置参数进行初始化的对象来说尤其适用。

2018-01-04 17:00:06 258

原创 WebView截取长图

现在好多APP的分享多了个“长图文分享”,自己在开发中也遇到了这个需求,正好作个记录吧

2018-01-03 14:54:24 669

原创 吃火锅版Dagger2

dagger2基础应用

2017-12-25 17:54:07 345

翻译 OkHttp拦截器(简译)

OkHttp-wiki 拦截器

2017-11-27 10:28:48 349

原创 RxJava之Subject和Single

RxJava之Subject和Single

2017-11-22 17:22:29 471

转载 Android代码规范(转)

Android程序员们的必须课——Android代码规范

2017-09-12 10:25:34 491

原创 TCP基础知识

TCP三次握手和4次挥手

2017-08-08 17:11:41 377

原创 RxLifecycle源码学习

使用RxJava引起的内存泄漏RxJava很好用,但是随着订阅的增多内存开销也会随之增大,尤其是在配合使用网络请求的时候,当页面被finish,此时订阅逻辑还未完成,如果没有及时取消订阅,就会导致Activity/Fragment无法被回收,从而引发内存泄漏

2017-08-03 18:29:50 689

原创 LeakCanary源码学习

OOM是开发中很常见的一个异常,其凶手就是内存泄漏。square公司为我们开源了一个神兵利器——LeakCanary,在开发中为我们提供了很大的方便,让我们能够及时发现和处理代码中的内存泄漏问题。作为一个程序员,本着知其然及只其所以然的态度,就很有必要学习下这款开源框架的思想

2017-07-31 22:33:08 991

原创 APP被强杀,怎么办?

应用在后台运行时很容易被强杀,这很正常,但是回到前台时,很容易出现空指针的情况。怎么解决这样的问题?

2017-07-13 15:30:36 1196

原创 面试题:两个Activity之间如何传递参数?

在Android应用中,Activity占有极其重要的地位,Activity间的跳转更是加常便饭。即然跳转(界面切换)不可避免,那么在两个Activity之间传递参数就是一个常见的需求。大多数时候,我们也就传递一些简单的int,String类型的数据,实际中也有看到传递List和Bitmap的。那么我们先回答这个题,如何传递参数:使用Intent的Bundle协带参数,就是我们常用的Intent.p

2017-07-12 17:43:59 945

转载 最易懂的自定义View原理系列(1)

转自这里前言自定义View原理是Android开发者必须了解的基础;在了解自定义View之前,你需要有一定的知识储备;本文将全面解析关于自定义View中的所有知识基础。

2017-06-21 16:10:23 326

转载 巧用Android多进程,微信,微博等主流App都在用

为什么要使用多进程,一个进程不就可以了吗?

2017-06-19 11:52:19 812

转载 WebView性能优化

页面加载速度优化影响页面加载速度的因素有非常多,我们在对 WebView 加载一个网页的过程进行调试发现,每次加载的过程中都会有较多的网络请求,除了 web 页面自身的 URL 请求,还会有 web 页面外部引用的JS、CSS、字体、图片等等都是个独立的 http 请求。这些请求都是串行的,这些请求加上浏览器的解析、渲染时间就会导致 WebView 整体加载时间变长,消耗的流量也对应的真多。接下来我

2017-06-18 22:17:35 563

原创 代理模式

静态代理、动态代理

2017-06-03 10:08:15 338

原创 RxJava1.x从入门到放弃再到RxJava 2.x(四)

Zip通过一个函数将多个Observable发送的事件结合到一起,然后发送这些组合到一起的事件. 它按照严格的顺序应用这个函数。它只发射与发射数据项最少的那个Observable一样多的数据

2017-05-21 22:44:22 358

原创 在Android Studio上魅族手机、华为手机无法打印Log

今天突然遇到这两台国产神机集体抽风,让我一度怀疑人生(重装Android Studio,重配Gradle等等,折腾了半天)。最后在同事的帮助下在度娘找到了解决方案。在此记录下解决的过程,方便以后查阅。

2017-05-19 16:19:29 469

原创 Retrofit自定义CONVERTERS(fastjson)

Retortfit使用fastJson作为converter

2017-05-14 23:25:01 528

原创 RxJava1.x从入门到放弃再到RxJava 2.x(三)

概述RxJava提供了对事件顺序进行变换的支持,这是它的核心功能之一。本节主要学习map()和flatMap()这两个操作符。

2017-05-07 22:15:29 439

转载 Serializable和Parcelable的区别

1、作用Serializable是一种标记接口,作用是为了保存对象的属性到本地文件、数据库、网络流、rmi以方便数据传输,当然这种传输可以是程序内的也可以是两个程序间的。而Android的Parcelable的设计初衷是因为Serializable效率过慢(使用反射),为了在程序内不同组件间以及不同Android程序间(AIDL)高效的传输数据而设计,这些数据仅在内存中存在。

2017-05-05 23:58:16 604

原创 RxJava1.x从入门到放弃再到RxJava 2.x(二)

前言RxJava1.x从入门到放弃再到RxJava 2.x(一) 这篇文章讲解了最简单的入门,本节我们将会一起学习RxJava的线程调度。

2017-04-23 12:08:34 553

原创 greenDAO 报错: UNIQUE constraint fail(code 1555)的解决方法纪实

这个报错说的是insert的时候id出现重复。

2017-04-22 23:35:15 3706

原创 读书笔记——面向对象的六大原则

本文的大部分内容是基于《Android源码设计模式解析与实战》这本书。大家一起学习面向对象的六大原则吧。

2017-04-20 22:53:53 344

原创 RxJava1.x从入门到放弃再到RxJava 2.x(一)

从2016.3出来实习的时候,就听到这个流行的框架,那时候偶尔看看博客的介绍,没深入学习与使用,故而什么也没学到。如今借助公司项目重构这个机会,在框架上使用到了RxJava。所以,算是一个再学习的机会吧。由于RxJava2.0已经发布了大半年了,我们就直接学习RxJava 2.0啦,go ,go ,go。

2017-04-19 23:30:41 643

原创 Butterknife源码学习

Butterknife是一个android视图快速注入库,在项目中使用得挺多的,也很方便。至于它是怎么实现的呢?一起来学习下吧。

2017-04-18 23:12:46 629

原创 Android Studio多渠道打包

1、 假设我需要分2个渠道:一个是国内的应用市场,一个是google play的, 需要 在app module下的build.gradle里添加如下代码:android { ... productFlavors { cooby {} google {} productFlavors.all { flavor ->

2017-04-16 15:15:54 369

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除