- 博客(24)
- 资源 (4)
- 收藏
- 关注
原创 学习Android Architecture Blueprints(三)-contentproviders分支
1. 前言因为我项目中没用过Dagger2,所以todo-mvp-dagger分支就暂且放一放,先来看contentproviders分支.2. 架构图从中我们可以看到,比todo-mvp-loaders分支,在loader和model之间,多处了ContentProvider。而我们要用的就是Loader框架中的CursorLoader。CursorLoader 文档废话不多说,直接上代码。3.
2016-10-27 22:15:38 941
原创 学习Android Architecture Blueprints(二)-rxjava 和 loader 分支
1. 前言今天咱们继续,看下todo-mvp-rxjava分支与todo-mvp-loaders分支。rxjava分支引入了很火的rxjava。loaders分支引入了3.0就加入进来的Loader框架。2. rxjava分支不知道大家有没有用rxjava,rxjava用起来真的很不错,尤其是用rxandroid做线程调度的时候,配合上RxAndroid 全家桶,真的爽翻了。RxJava Esse
2016-10-26 21:58:48 1606
原创 学习Android Architecture Blueprints(一)-mvp分支
1. 前言在几个月前,google sample组织下,创建了一个叫做android-architecture的仓库,第一时间引爆了Android圈,这个项目在于指导使用不同的架构指导我们如何解决测试、维护以及扩展的难题,让我们一一学习下。项目地址2. todo-mvp分支在去年的时候,mvp火了起来,然而,在国内的文章当中,大多是的试讲m-v-p分开来写,我今年毕设使用这种模式,发现一个很严重的问
2016-10-25 23:17:54 2053
原创 走进设计模式(四)-行为型模式(下)
命令模式备忘录模式状态模式访问者模式中介者模式解释器模式0. 命令模式 将一个请求封装成一个对象,从而让用户使用不同的请求把客户端参数化,对请求排队或者记录请求日志,以及支持可撤销的奥做。Receiver 接受者角色 Command 命令类抽象接口 ConcreateCommand 具体命令角色 Invoker 请求者角色 Client 客户端public class Re
2016-10-24 22:11:13 601
原创 走进设计模式(三)-行为型模式(上)
行为型模式:策略模式模板方法模式观察者模式迭代器模式责任链模式1. 策略模式 定义了一系列的算法,并将每一个算法封装起来,而且使他们可以相互替换。策略模式让算法独立于使用它的客户而独立变化。Context 用来操作策略的上下文环境Stragety 策略的抽象ConcreteStragetyA、B 具体的策略实现我们先定义一个接口Stragetypublic interface
2016-10-23 18:56:21 623
原创 两点技巧-给TextView添加Tag,点击空白收起键盘
1. 前言这篇给大家带来两个开发中用到的东西,地址如下:全局点击空白收起键盘TextView 带标签希望大家star一下。2. 点击空白收起键盘大家有没有被测试提这种bug,我要点击空白收起键盘!!!其实很简单,代码如下。 private static void setTouchListener(final Activity context){ context.getWi
2016-10-23 13:37:18 3183
原创 走进设计模式(二)-结构型模式
1.前言结构型模式有以下几种。适配器模式装饰模式代理模式外观模式桥接模式组合模式享元模式下面一一学习。2. 适配器模式 适配器模式把一个类的接口变换成客户端所期待的另一种接口,从而使原本因接口不匹配而无法在一起工作的两个类能够在一起工作。结构如下:Target 目标角色Adaptee 需要适配的接口Adapter 适配器举个例子,我们手机充电器接口 就充当这这一角色。
2016-10-20 21:39:51 592
原创 走进设计模式(一)-创建型模式
设计模式很抽象,结合代码才比较清楚。1. 前言设计模式无处不在,我们也需要简单了解下设计模式。设计模式中,创建型模式有以下几种。工厂方法抽象工厂单例模式建造者模式原型模式2. 工厂方法 用工厂方法,代替new操作AbsFactory 是一个抽象类Factory 是工厂类,实现了抽象类的方法QCar、Q2Car 是具体的对象Factory代码如下我们传入Class,通过反射生成
2016-10-18 23:13:46 932
原创 了解EventBus 3.0 (二)-发送事件
虽然我在这里写下Eventbus,但是,还是觉得老司机教你 “飙” EventBus 3 才是很完美的文章。1. 我们能发送哪些事件post发送普通事件postSticky 发送粘性事件粘性事件,当有订阅者订阅的时候,会从粘性事件列表中取出最后(最新)的事件,发送出去。2. EventBus#postcurrentPostingThreadState是ThreadLocalPosting
2016-10-15 21:42:35 2337
原创 了解EventBus 3.0 (一)-订阅流程
虽然我在这里写下Eventbus,但是,还是觉得老司机教你 “飙” EventBus 3 才是很完美的文章。1. 前言EventBus是平常开发中很常用的框架,用了简直爱不释手。在这里,以Eventbus3.0 为例,来了解一下。首先了解点简单的用法。gradle文件中引入compile 'org.greenrobot:eventbus:3.0.0'注册与解注//注册EventBus.g
2016-10-15 18:13:13 2158
原创 Android DeepLink框架-DeepLinkDispatch源码浅析
1. 前言-什么叫DeepLinkDeepLink,该网址可能需翻墙。最常见的应用就是在网页中跳转到App的某个页面,电商类应用可是都用了的。用法如下:来自文档 我们通过如下代码获取data信息。 Intent intent = getIntent(); String action = intent.getAction(); Uri data = intent.getData();额,这里就不
2016-10-12 22:32:48 6691 3
原创 Android网络开源库-Retrofit(六)源码浅析-上
Retrofit配置RxJava真的很好用。 希望亲们看的时候,自己也看下代码,这样效果最好了。1. 初始化过程一般来说,我们通过Builder去初始化Retrofit。我们看看支持我们配置那些呢。如下图: platform 平台信息(java,android,ios)callFactory 进行实际请求的(一般为okhttpclient)baseUrl baseUrlconvertFac
2016-10-10 23:53:02 2391
原创 Java并发基础(九)-Fork/Join框架
1. 什么是Fork/Join框架Java 1.7 中提供了Fork/Join框架,实现了work-stealing算法(工作窃取算法),什么意思呢?就是说,我可以把当前任务分割成多个小任务,让空闲的线程也进行工作,是不是很赞,这样,就能最大限度的利用资源,从而提升效率。哈,这里就补全线程池基础那篇文章了,java 1.8 提供的newWorkStealingPool,就是用这个实现的。2. 包括哪
2016-10-08 22:42:17 1298
原创 Java并发基础(八)-locks包
1. 前言Java锁的种类 java中的锁种类是真的多。而locks包下也有一些。包结构如下: AbstractOwnableSynchronizer 一个线程拥有的同步器,这个类提供了创建锁和相关同步器的基础AbstractQueuedLongSynchronizer 所有的同步状态都是用long变量来维护的,而不是int,在需要64位的属性来表示状态的时候会很有用AbstractQueu
2016-10-07 23:07:26 1689
原创 Java并发基础(七)-原子类和并发集合类
灌水文1. 原子类 java.util.concurrent.atomic包下面提供了许多原子类,这些类是通过CAS实现的。关于CAS,大家可以google,详细学习下。图中Atomic开头的是 jdk1.5开始提供的原子类。而其他则是在jdk1.8中新增加的。Atomic开头的类中,大多都用了Unsafe类。这个类提供了硬件级别的原子操作。1.8中增加的都是Striped64的子类,St
2016-10-07 16:20:49 1538
原创 Java并发基础(六)-Exchanger和Semaphore
1. Exchanger Exchanger提供了 一个同步点 , 在这个同步点,两个线程可以交换数据,每个线程通过exchange()方法的入口提供数据给另外的线程,并接收其它线程提供的数据,并返回。看个简单的例子: public static void main(String[] args){ final Exchanger exchanger = new Excha
2016-10-07 15:28:14 977
原创 Java并发基础(五)-CountDownLatch、CyclocBarrier、Phaser的使用
1. CountDownLatch 一个同步工具,允许一个或多个线程去等待其他线程中执行的一系列操作完成。什么意思呢?就是说,允许这个线程阻塞,直到,其他线程的所有操作都完成之后,在继续执行。举个例子。 public static void main(String[] args) throws InterruptedException { final CountDownL
2016-10-07 14:19:37 1095 3
原创 Java并发基础(四)-volatile和synchronized
0. 内存可见性Java中,所有的变量都是存在主存中,这对所有的线程都是共享的,而且每个线程都有自己的工作内存。当线程与其他线程共享一个变量时,便会把主内存的变量复制到线程内存中去。当发生对变量的修改时,会同步到主内存,主内存再同步到其他线程内存中去。可见性,指的是线程之间的可见性,一个线程的修改状态对另一个线程也是可见的。1. volatile volatile 修饰的成员变量在每次被线程访问
2016-10-06 11:08:50 483
原创 Java并发基础(三)-线程安全
1. 什么是线程安全 如果一个对象可以安全的被多个线程同时使用,那么它就是线程安全的 当多个线程访问一个对象的时候,如果不考虑这些线程在运行时环境下的调度和交替执行,也不需要额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象就是线程安全的。2. Java中的线程安全根据线程安全的安全程度由强至弱来排序,可以分为5类:不可变绝对线程安全相对
2016-10-05 21:58:46 863
原创 Java并发基础(二)-线程池基础
1. 前言从Java 1.5 开始,并发包里面提供了Executors类,这个类提供了几种线程池的实现。下面对ExecutorService以及几种线程池进行说明。2.ExecutorServiceExecutorService 接口继承自 Executor 接口,它提供了更丰富的实现多线程的方法。ExecutorService的生命周期有三种状态:运行 创建之后便进入运行状态关闭 当调用shu
2016-10-05 19:50:02 1009
原创 Java并发基础(一)-线程基础
只要涉及到线程,其运行结果就是不确定的,虽然说java很早就提供了线程以及并发的支持,但是我们需要知道,线程是完全交给调度器的。
2016-10-05 12:30:13 1049
原创 Android网络开源库-Retrofit(五)简易封装
1.前言Rrtrofit的扩展性很强,如果对retrofit不熟悉的话,是很难应对各种各样的需求的。因此,在这里,做一下简单的封装。主要为了下面三点需求:使用简单加密处理错误处理2.怎样才能简单使用为了简单粗暴,我做了以下工作。使用单例Retrofit引入RxJava在这里,如何Retrofit单例化,就不多说了,大致代码如下:Retrofit.Builder builder = ne
2016-10-04 15:12:46 3247
原创 Android网络开源库-Retrofit(四)文件相关
以前写过一些retrofit的相关文章,当时只是自己学习研究的,最近项目,加入了retrofit,因此遇到了一些问题,需要记录一下。1.前言在以前,写过retrofit上传文件相关,但是,需求总是变化的。前面的,介绍了上传进度的监听,但是,那时候是监听单文件进度。虽然能满足我们大多数需求,但是,需求总是变化的。我们现在需要监听统一的进度。2.尝试用Retrofit来现在,我们改变以前的的做法,现在以
2016-10-03 17:57:13 1413
原创 Android WebView的两点技巧-资源拦截与js注入
1.前言WebView是个很常用的控件,但是缺不是那么简单,那么,今天来给大家介绍下最近在做的时候,遇见的几个问题。注意,并不是所有的情况下,webview加载的都是自适应的网页。比如说,加载<p></p><img></img> 。2.资源拦截问题 问题描述 网页的某些资源在手机上不合适,比如说css资源过于庞大,客户端加载太慢,比如说,你的这个css放在客户端不合适,等等。那么,我们怎么解
2016-10-02 23:21:03 5526
Android流量统计
2015-08-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人