自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(40)
  • 资源 (1)
  • 问答 (3)
  • 收藏
  • 关注

原创 Support依赖库大全

Support依赖库大全 //okHttp请求 implementation 'com.squareup.okhttp3:okhttp:3.11.0' implementation 'com.squareup.okhttp:okhttp-urlconnection:2.7.5' implementation 'com.squareup.okhttp:okhttp:2.7....

2019-09-01 20:27:59 910

翻译 VirtualView属性

VirtualView属性公共属性+组件容器属性$ 属性引用, 如 KaTeX parse error: Expected '}', got 'EOF' at end of input: …@ 三元条件表达式,如 @{{logoUrl} ? visible : invisible } 若logoUrl属性的值存在,则取visible,否则invisible。@{${titleColor}...

2019-04-14 17:37:54 487

翻译 Tangram属性

Tangram属性标题一,流式布局依次填充,满一行换下一行。type属性:container-oneColumn 单列(一排一)container-twoColumn 双列container-threeColumn 三列container-fourColumn 四列container-fiveColumn 五列container-flow N列style属性:margin 卡...

2019-04-14 16:01:18 1280

原创 Tngram用法(一)

Tngram用法(一)1.依赖库 implementation 'com.alibaba.android:tangram:2.0.5@aar' implementation 'io.reactivex.rxjava2:rxjava:2.2.3' implementation 'io.reactivex.rxjava2:rxandroid:2.1.0' implement...

2019-04-14 15:36:14 538

转载 Java NIO

Java NIO 非阻塞IOJava NIO

2019-01-09 21:54:46 241

原创 Java8 Stream

StreamStream是元素的集合,将集合数据以流的形式表现出来,以便对其进行操作,各种操作不改变数据源,不存储值,一旦遍历就会失效,需要重新创建。一,Stream流的创建:需要API 241.创建串行流Stream stream = mList.stream();stream1.sequential();2.创建并行流Stream stream1 = mList.paralle...

2018-12-18 22:02:43 266

原创 Android @ 注解

@注解1.java.lang包下 //表明重写的是父类方法,检查方法名是否写错 @Override //被弃用的API,不赞成使用 @Deprecated //告诉编译器Lint,对警告保持静默 //deprecation 使用了不赞成使用的类或方法时的警告 //unchecked 执行了未检查的转换时的警告 //fa...

2018-12-17 23:27:25 390

原创 AtomicReference,AtomicInteger,AtomicBoolean

Atomic原子家族Atomic原子家族可保证在多线程下操作的是同一个对象,而且同一时间只有一条线程能进行操作,保证了下一条线程操作它时是最新数据。1.AtomicReference原子引用提供一个对象来供原子读写,可确保在多线程下操作的是同一个对象,且是同步操作。private static User mUser; private void init() { //引用...

2018-12-14 22:56:40 1110

原创 RxRelay源码解析

RxRelay源码解析:Relays 是既是Observable也是Consumer的RxJava 类型,由于没有onComplete 或 onError,所以发生异常时不会触发下游的终止状态,不会抛出异常。 //接收订阅之后数据 Relay relay = PublishRelay.create().toSerialized(); //接受订阅之前一个和之后...

2018-12-13 23:38:00 1262 1

原创 自定义RxBus + RxRelay

RxBus + RxRelay实现不抛出异常的事件总线RxRelay源码地址依赖库:implementation 'com.jakewharton.rxrelay2:rxrelay:2.0.0'public class RxBus { private Relay<Object> bus = null; private static RxBus instanc...

2018-12-13 23:32:05 634

原创 EventBus实战

EventBus实战1.依赖库implementation 'org.greenrobot:eventbus:3.1.1'2.定义事件类,用于Activity/Fragment之间通信public class MessageEvent { private String message; public MessageEvent () { } public...

2018-12-09 19:19:59 313

原创 EventBus源码解析(三)EventBus类

EventBus类public class EventBus { /** Log tag, apps may override it. */ public static String TAG = "EventBus"; //单实例EventBus,默认 static volatile EventBus defaultInstance; private ...

2018-12-09 19:00:07 591

原创 EventBus源码解析(二)

1.Subscribe 注解接口/** * 注解接口:用于注解订阅方法 */@Documented@Retention(RetentionPolicy.RUNTIME) //运行时才处理注解@Target({ElementType.METHOD}) //注解目标为方法public @interface Subscribe { //指定线程模型,默认POSTING...

2018-12-09 18:51:02 242

原创 EventBus源码解析(一)

EventBus事件总线框架EventBus基于事件的订阅和推送,实现Activity/Fragment之间的通信。主要角色:Event 传递的事件对象,自定义的一个类,封装了要传递的信息。Publisher 事件的发布者。Subscriber 事件的订阅者。ThreadMode 定义在何种线程中执行。源码解析:1.Logger接口import java.util.lo...

2018-12-09 18:34:45 536

原创 RxJava(九)并行编程

RxJava的并行编程RxJava发射的数据流虽然经过各种变换,切换线程,但并没有产生并行效果。并行:多个处理器或多核处理器同时处理多个任务。并发:单个处理器同时处理多个任务。1.Java8并行流 集合上调用parallelStream@TargetApi(24) private void parallelStream(){ mList.parallelStrea...

2018-12-05 22:03:09 756

原创 RxJava(八)Disposable和Transformer

Disposable和Transformer一,Disposable1.当Observable发送数据,Observer订阅数据时,就形成一个Disposable,可用于在退出时取消订阅。 Disposable disposable = Observable.just(1,2,3) .subscribeOn(Schedulers.newThread()) .o...

2018-12-04 21:57:29 649

原创 RxJava(七)背压Flowable

RxJava背压Flowable1.背压:在RxJava的异步场景中,被观察者发送数据太快,以至于操作符和订阅者来不及处理数据,造成buffer溢出。2.Flowable:RxJava中专门用来支持背压,默认队列大小128,所有操作符强制支持背压。3.背压策略:public enum BackpressureStrategy{ MISSING, //通过create创...

2018-12-03 22:37:35 568

原创 RxJava(六)变换操作符

变换操作符map 对原始Observable的数据进行一个函数操作。flatMap 对原始Observable的数据进行一个函数操作,然后将每一项数据合并,作为自己的数据序列发射,合并的数据顺序可能交错。map 对原始Observable的数据进行一个函数操作。flatMap 对原始Observable的数据进行一个函数操作,然后将每一项数据合并,作为自己的数据序列发射,合并的数据...

2018-11-26 23:17:18 479

原创 RxBinding2(三)Support-V4库和RecyclerView

RxBinding3 之 RecyclerView,DrawerLayout依赖库:implementation 'com.jakewharton.rxbinding3:rxbinding-recyclerview:3.0.0-alpha1'implementation 'com.jakewharton.rxbinding3:rxbinding-drawerlayout:3.0.0-alph...

2018-11-21 22:38:24 1051

原创 RxBinding2(二)MaterialDesign系列

RxBinding3之MaterialDesign系列依赖库implementation 'com.jakewharton.rxbinding3:rxbinding-material:3.0.0-alpha1'支持组件:private void materialDesign(){ RxAppBarLayout.offsetChanges(mAppBarLayout); ...

2018-11-21 21:37:42 968

原创 RxBinding2源码解析

RxBinding源码解析此处解析一个Click点击事件,其他组件大同小异。RxBinding/rxbinding/src/main/java/com/jakewharton/rxbinding3/view/ViewClickObservable.kt源码1:@file:JvmName("RxView") @file:JvmMultifileClass ...

2018-11-21 20:54:53 406

原创 RxBinding2(一)基础库组件

RxBinding绑定View事件通过RxBinding我们可以将View的事件转化为事件流,然后就可以采用RxJava发射事件流,操作符进行操作。JakeWharton大神开源-项目地址依赖库support支持: implementation 'com.jakewharton.rxbinding2:rxbinding:2.0.0 ' implementation 'com.jak...

2018-11-21 20:15:12 2175

原创 ButterKnife注解绑定View/资源/事件

ButterKnife注解ButterKnife提供注解绑定View,资源,事件。不用在写 findViewById(R.id.xxx) ,大大简化了代码。ButterKnife:注解组件,资源,我丢失绑定事件。Retrofit:注解网络请求RxBinding:绑定View事件。RxJava:发射事件,发射流RxPermission:请求权限RxLifecycle:管理生命周期1....

2018-11-18 21:34:56 875

原创 Retrofit2 网络请求框架

Retrofit2一,简介:Retrofit可以将服务端的数据接口 API 转换为在客户端的Java对象,即可进行方法调用,得到希望请求的数据。它采用注解的方式动态生成请求API。1.首先,创建远程请求接口:public interface UsersService{ @GET("users/{id}") Call<ResponseBody&a

2018-11-18 19:38:24 927

原创 RxPermission权限请求

RxPermission权限请求依赖库implementation 'com.tbruyelle.rxpermissions2:rxpermissions:0.9.4@aar'危险权限 需要用户授权联系人系列 group:android.permission-group.CONTACTS permission:android.permission.WRITE_CONTACTS pe...

2018-11-16 23:34:58 3364

原创 RxLifecycle防内存泄露

RxLifecycle防内存泄露

2018-11-16 22:41:30 385

原创 Andoid 线程池

线程池一,优点:重用线程池中的线程,避免因为线程的创建和销毁带来的开销。能够有效控制线程池的最大并发数,避免线程之间因抢占系统资源而造成阻塞。能够对线程进行简单的管理,比如提供定时执行和间隔执行的功能。二,线程池概念源于Executor,实际的实现是Th’readPoolExecutor,它提供一些配置参数对线程池进行配置。new ThreadPoolExecutor(int co...

2018-11-15 22:17:38 207

原创 RxJava2(五)线程调度器Scheduler

线程调度器SchedulerRxJava是一个为异步编程而实现的库,但异步也存在线程安全问题,比如,那些操作需要在前台线程,那些操作又需要在后台线程等等。而Scheduler就是这样一个线程调度器,可以在线程间来回切换。理想的操作是Observable发射数据流,操作符在后台线程处理数据,Obverser在前台线程接受并响应数据。Scheduler可调度的线程有:· single:定长为1的...

2018-11-11 20:54:54 607

原创 RxJava2(四)创建操作符

创建被观察者的操作符创建操作符:create 从头开始创建一个ObserVable。just 创建一个发射指定值的Observable。from 可以将其他种类对象和数据如:Array,Iterable,Future转换为Observable。repeat 创建一个重复发射原始数据序列的Observable。repeatWhen 当满足某种条件时才重新订阅和发送原始数据。...

2018-11-11 16:18:38 455

原创 Future

FutureJava现在的多线程机制,核心方法run是没有返回值的;如果要得到run方法里面的计算结果,调用mThread.join()保证值返回,必须等待run方法计算完,无论计算过程多么耗时,才会进行下一步。而Future的核心思想是:分别启动方法去计算几个耗时的操作,不需要等待1计算结果返回才去计算2,等2计算结果返回才去计算3,显然不明智。·get方法:获取计算结果(如果还没计算完,...

2018-11-11 14:39:23 259

原创 RxJava2(三)Subject和Processor

一, Subject它既是一个Observable可不断调用onNext发射数据,直到遇到onComplete结束,又是一个Observer可订阅数据。它可以将订阅的数据作为自己的数据发射出去。包含4种类型:AsyncSubject,BehaviorSubject,ReplaySubject,PublishSubject。AsyncSubject观察者/订阅者只会接受到onComplete...

2018-11-11 12:24:19 2060

原创 RxJava2(二)五种被观察者

Observable一简介1.Observable即被观察者,决定什么时候触发事件以及触发怎样的事件。2.Oberver即观察者,他可以在不同的线程中执行任务,极大的简化了并发操作,因为他创建了一个处于待命状态的观察者,可以在某一时刻相应Observable的通知,而不会造成阻塞。3.subscribe() 订阅用户,只有调用此方法才会开始发射数据。其有4个构造方法: subscribe...

2018-11-11 11:06:45 1057

原创 RxJava2(一)完整生命周期

RxJava2 学习笔记之简介###简介:1.RxJava用于通过使用被观察者Obverserable/Flowable序列来构建异步和基于事件的库。2.RxJava支持Java5之后版本,还支持跑在JVM上的各种语言。3.RxJava可以用在Android开发的任何地方,包括App所依赖的底层框架。4.导入依赖:implementation "io.reactivex.rxjava2...

2018-11-09 21:52:17 470

原创 Android IPC进程间通信(七) Binder连接池

Binder管家之Binder连接池IPC进程间通信(四)之AIDL中的AIDL由一个Service进行管理,若是创建10个AIDL业务模块是不是也要创建10个Service来进行管理,那100个呢?显然繁琐,怎么办么,用Binder连接池呀!工作机制:1.每个业务模块创建其AIDL接口并实现此接口生成具有唯一标识的Binder。2.Binder连接池将每个业务模块的Binder统一转发给...

2018-11-08 22:53:42 367

原创 Android IPC进程间通信(六)Socket

网络通信之Socket特点:功能强大,可通过网络传输字节流,支持一对多并发即时通信。不支持RPC。服务端实现:public class SorviceSocket extends Service { private static final String TAG = "SorviceSocket"; private static final int PORT = 5000...

2018-11-07 22:05:15 494

原创 Androi IPC进程间通信(五)ContentProvider

进程间通信之ContentProvider一,介绍1.底层实现也是Binder2.其6个方法除了onCreate方法运行于主线程,其他4个方法由外界回调并运行于Binder线程池。3.注册ContentProvider需要一个属性android:authorities=“XXXXX” 唯一标识ContentProvider,外部应用即可通过它进行访问<?xml version="1...

2018-11-04 22:12:52 236

原创 Android IPC进程间通信(四)AIDL

AIDL-Android接口定义语言一·1.相比于Messenger AIDL可跨进程调用方法。2.支持数据类型:(1) Java 的原生基本类型(int, long, char, boolean, double等)(2)String 和CharSequence(3) ArrayList 和 HashMap ,里面的元素必须是AIDL支持的数据类型; 以上三种类型都不需要导入(imp...

2018-11-04 21:22:39 246

原创 Android IPC进程间通信(三)Binder

进程间通信的介质BinderBinder实现了IBinder接口,是android中跨进程通信的一种方式。是服务端和客户端通信的媒介。Binder的创建:1.创建自定义类Book.java实现Parcelable接口,以实现序列化可反序列化。public class Book implements Parcelable { private int bookId; priv...

2018-11-02 22:06:51 223

原创 Android IPC进程间通信(二)Messenger

Messenger实现进程间低并发即时通信Messenger是一种轻量级的IPC,底层实现是AIDL,即可认为Binder。通过在Message中携带Bundle进而实现进程之间传递数据。由于Messenger一次只能处理一个请求,因此服务端们不用考虑线程同步问题。一,我们在服务端创建一个Handler用于接受来自客户端消息,并以此Handler创建Messenger,我们将这个Messeng...

2018-10-31 22:42:41 290

原创 Android IPC进程间通信(一)文件共享

IPC进程间通信系列之文件共享

2018-10-30 23:09:30 502

Okhttp功能封装

封装的get同步请求,get异步请求,post异步提单,从url下载文件。

2018-10-14

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

TA关注的人

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