7 shangmingchao

尚未进行身份认证

暂无相关描述

等级
TA的排名 2w+

Android性能优化详解

启动优化用户都希望点击应用图标后,应用能够快速地启动并响应用户操作。而随着业务逻辑的增加,要初始化的操作越来越多,尤其是第三方组件的初始化,而在应用启动时初始化会导致应用启动时间变长,因此,我们需要对启动性能(Launch-TimePerformance)进行优化。启动时的状态应用会从冷启动(coldstart)、热启动(warmstart)、温启动(lukewarmstart

2017-12-08 21:02:09

Glide v4详解

简介下载配置使用简单使用高级用法RequestOptionsTransitionOptionsGeneratedAPIRequestBuilderConfiguration使用技巧Glide的图片变换TransformationsGlide的过渡动画TransitionsGlide的缓存管理Caching简介Glide项目于2012年12

2017-10-12 20:43:25

RxJava2详解(三)--调度器

RxJava2调度器(Scheduler)ReactiveX最重要、最核心的是对线程调度的封装。这依赖于subscribeOn和observeOn两个操作符和各种强大的Scheduler。RxJava借鉴了Iterable/Iterator模式的思想,定义了一套Scheduler/WorkerAPI。RxJava的Scheduler不进行任何调度的工作,但它负责创建Worker,Worker负责实际调

2017-09-18 16:34:36

RxJava2详解(二)--操作符

简介Observable和Observer只是ReactiveX的开始,他们自己只不过是标准观察者模式的轻微扩展,更适合处理事件序列而不是单个回调。ReactiveX真正强大的是那些让你可以随意变换、组合、操作Observable发射的数据序列的操作符(Operators),这些操作符可以让你声明式地组合异步序列,同时具备回调的所有效率优势,但没有传统异步系统的嵌套回调处理的缺点。

2017-06-24 22:37:27

RxJava2详解(一)--基础

ReactiveX详解RxJava2基础RxAndroidReactiveX(ReactiveExtensions),一般简写为Rx,是一个使用可观察数据流进行异步编程的编程接口。由微软的架构师ErikMeijer领导的团队开发,Rx是一个编程模型,目标是提供一致的编程接口,帮助开发者更方便地编写异步和基于事件的程序,现在已经有了RxJava、RxJS、Rx.NET、RxScala、RxClojure、Rx

2017-06-13 16:53:25

Android权限管理详解

概述Android安全架构规定:默认情况下,任何应用都没有权限执行对其他应用、操作系统或用户有不利影响的任何操作。这包括读写用户的私有数据(如联系人或电子邮件等)、读写其他应用的文件、执行网络访问、使设备保持唤醒状态等等。如果要使用这些受保护的设备功能,首先要在应用的清单文件(AndroidManifest.xml)中添加一个或多个<uses-permission>标记:<manifest

2017-04-21 17:09:45

Dagger2 User's Guide(翻译)

概述依赖注入(dependencyinjection)是一个对象为另一个对象提供依赖关系的技术手段。简单点说,就是一个对象(client)要依赖其它对象(services)才能完成工作,那么这个对象(client)就对其它对象(services)产生了依赖,而依赖注入就是把依赖(services)在需要的时候自动传给client,而不是client自己创建或者寻找services。也就是说客户对象

2017-03-30 16:07:14

Android软键盘输入详解

IM(InputMethod):输入法。是指通过键盘等输入设备输入输入设备上没有的字符的方法/程序/处理器。最开始是特指在拉丁字母键盘上输入CJK(Chinese,JapaneseandKorean)文字的方法,现在一般将所有的输入语言的方式都叫输入法。IME(InputMethodEditor):输入法编辑器。通常简作输入法。IMF(inputmethod

2017-01-22 17:53:26

Android时间处理详解

Android时间详解JavaCalendar详解JavaDateGreenwich:格林威治/格林尼治,是位于伦敦市中心东南部的一个区,1675国王查理二世在此建立了皇家格林尼治天文台,1851年御用天文学家艾里在天文台设置了中星仪并确定了格林威治子午线,1884年在美国华盛顿特区举行的国际本初子午线大会上正式将此线定之为经度的起点。

2016-08-25 12:14:17

MD风格之丰富多变Toolbar

一.下载compile'com.android.support:design:23.4.0'二.详解CoordinatorLayout继承自ViewGroup,实现了NestedScrollingParent接口,可以说是超级版FrameLayout。CoordinatorLayout的用途主要有两个:作为最顶层的applicationdecor或者chromelayout.

2016-07-22 15:58:40

Invalid double崩溃分析

Causedby:java.lang.NumberFormatException:Invaliddouble:"0,3"atjava.lang.StringToReal.invalidReal(StringToReal.java:63)atjava.lang.StringToReal.initialParse(StringToReal.java:164)atjava.la

2016-06-18 14:58:22

RecyclerView之ItemDecoration详解

关于RecyclerView的ItemView装饰,之前一直用官方Demo的DividerItemDecoration,并没有认真地去理解ItemDecoration的用法,也没能体会到ItemDecoration的强大,直到要用到横向的RecyclerView,而且最左边的和最右边的Item要留出间隔(虽然clip结合padding可以实现),才认真地理解一下ItemDecoration。Re

2016-05-20 16:11:39

Collections.sort()崩溃分析

对List排序一般采用两种方法:(1)实体类实现`Comparable<T>`接口,完成`compareTo(To)`方法。(2)创建一个`Comparator<T>`的实现类,完成`compare(To1,To2)`方法,然后利用这个比较器对List进行排序。

2016-05-19 11:21:44

Glide使用详解(二)

BitmapPoolDalvik和ART都没有使用compactinggarbagecollector垃圾回收模式,这种模式中GC会遍历堆,同时把活跃对象移到相邻内存区域,让更大的内存块可以用在后续的分配中。因为安卓没有这种模式,就可能会出现被分配的对象分散在各处,对象之间只有很小的内存可用。如果应用试图分配一个大于邻近的闲置内存块空间的对象,就会导致OOM崩溃,即使总的空余内存空间大于要分配的

2016-04-17 15:01:59

Glide使用详解(一)

Glide使用Glide使用教程Glide详解Android图片加载一.下载在build.gradle中添加依赖:compile'com.github.bumptech.glide:glide:3.7.0'需要support-v4库的支持,如果你的项目没有support-v4库(项目默认已经添加了),还需要添加s

2016-04-12 12:25:23

Glide之后台线程加载及缓存资源

后台线程加载及缓存为了使后台线程加载和处理媒体资源更容易,Glide新增了两个API:downloadOnly(int,int)into(int,int)Glide的downloadOnly(int,int)API允许你下载图片的字节流到磁盘中,以便你之后用到。你可以在UI线程中异步地使用downloadOnly()或者在后台线程中同步使用,但要注意,异步API需要一个Target作为参

2016-04-04 22:45:10

Glide之Target

Glide不但可以把图片、视频剧照、GIF动画加载到View,还可以加载到自定义的Target实现中。Target就是使用Glide获取到资源之后资源作用的目标,我们通常是用Glide加载完资源后显示到ImageView中,这个ImageView就是目标。Target架构的接口包括:com.bumptech.glide.manager.LifecycleListenercom.bumptec

2016-04-01 17:36:20

Glide之GlideModule

GlideModule接口:为了延迟配置Glide(包括用GlideBuilder设置选项,为Glide注册ModelLoader)所有的GlideModule实现类必须是public的,并且只拥有一个空的构造器,以便在Glide延迟初始化时,可以通过反射将它们实例化。注册ModuleLoader时可调用Glide的register(Class<T>modelClass,Class<Y>r

2016-03-31 15:13:49

Unable to add window崩溃分析

显示Dialog时,我们通常会将Activity实例传给Dialog,然后调用Dialog的show方法显示。但在一些情况下,比如说先通过异步网络请求请求数据,等拿到数据后再调用Dialog的show方法显示Dialog来告诉用户已经拿到数据了,但是,我们偶尔会发现发生这样的程序崩溃:android.view.WindowManager$BadTokenException:Unableto

2016-03-21 17:49:10

重学Java系列(一) -- static、final

static修饰类:static修饰类时,是指修饰内部类,也就是所说的静态内部类,普通外部类是不允许用static修饰的。非静态内部类可以直接访问外部类的成员变量和成员方法,即使是private的。实例化非静态内部类时要先实例化一个外部类对象outerObject,通过这个外部类的对象来实例化:NonStaticInnernonStaticInnerObject=outerObject.newNonStaticInner();非静态内部类将持有外部类对象的隐式引用,如果你用不到这个引用,那这个

2016-01-24 17:22:16

查看更多

勋章 我的勋章
  • 专栏达人
    专栏达人
    授予成功创建个人博客专栏的用户。专栏中添加五篇以上博文即可点亮!撰写博客专栏浓缩技术精华,专栏达人就是你!
  • 持之以恒
    持之以恒
    授予每个自然月内发布4篇或4篇以上原创或翻译IT博文的用户。不积跬步无以至千里,不积小流无以成江海,程序人生的精彩需要坚持不懈地积累!