商明超的专栏

https://franksblog.top | https://github.com/shangmingchao

Android性能优化详解

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

2017-12-08 21:02:09

阅读数 581

评论数 0

Glide v4详解

简介 下载 配置 使用 简单使用 高级用法 RequestOptions TransitionOptions Generated API RequestBuilder Configuration 使用技巧 Glide的图片变换Transformations Glide的过渡动画Transiti...

2017-10-12 20:43:25

阅读数 8499

评论数 2

RxJava2详解(三)--调度器

RxJava2 调度器(Scheduler) ReactiveX最重要、最核心的是对线程调度的封装。这依赖于subscribeOn和observeOn两个操作符和各种强大的Scheduler。 RxJava借鉴了Iterable/Iterator模式的思想,定义了一套Scheduler/Wor...

2017-09-18 16:34:36

阅读数 927

评论数 0

RxJava2详解(二)--操作符

简介 Observable和Observer只是ReactiveX的开始,他们自己只不过是标准观察者模式的轻微扩展,更适合处理事件序列而不是单个回调。 ReactiveX真正强大的是那些让你可以随意变换、组合、操作Observable发射的数据序列的操作符(Operators),这些操作符可以...

2017-06-24 22:37:27

阅读数 3424

评论数 0

RxJava2详解(一)--基础

ReactiveX详解 RxJava2基础 RxAndroid ReactiveX(Reactive Extensions),一般简写为Rx,是一个使用可观察数据流进行异步编程的编程接口。由微软的架构师Erik Meijer领导的团队开发,Rx是一个编程模型,目标是提供一致的编程接口,帮助开发者更...

2017-06-13 16:53:25

阅读数 7576

评论数 0

Android权限管理详解

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

2017-04-21 17:09:45

阅读数 11954

评论数 0

Dagger2 User's Guide(翻译)

概述依赖注入(dependency injection)是一个对象为另一个对象提供依赖关系的技术手段。简单点说,就是一个对象(client)要依赖其它对象(services)才能完成工作,那么这个对象(client)就对其它对象(services)产生了依赖,而依赖注入就是把依赖(services...

2017-03-30 16:07:14

阅读数 3060

评论数 0

Android软键盘输入详解

IM(Input Method): 输入法。是指通过键盘等输入设备输入 输入设备上没有 的字符的 方法/程序/处理器 。最开始是特指在拉丁字母键盘上输入CJK (Chinese, Japanese and Korean)文字的方法,现在一般将所有的输入语言的方式都叫输入法。 IME(Input...

2017-01-22 17:53:26

阅读数 2949

评论数 0

Android时间处理详解

Android时间详解 Java Calendar详解 Java Date Greenwich:格林威治/格林尼治,是位于伦敦市中心东南部的一个区,1675国王查理二世在此建立了皇家格林尼治天文台,1851年御用天文学家艾里在天文台设置了中星仪并确定了格林威治子午线,1884年在美国华盛顿特区举行...

2016-08-25 12:14:17

阅读数 4126

评论数 1

MD风格之丰富多变Toolbar

一. 下载 compile 'com.android.support:design:23.4.0'二. 详解CoordinatorLayout继承自ViewGroup,实现了NestedScrollingParent接口,可以说是超级版FrameLayout。 CoordinatorLay...

2016-07-22 15:58:40

阅读数 1341

评论数 0

Invalid double崩溃分析

Caused by: java.lang.NumberFormatException: Invalid double: "0,3" at java.lang.StringToReal.invalidReal(StringToReal.java:63) at ja...

2016-06-18 14:58:22

阅读数 4925

评论数 0

RecyclerView之ItemDecoration详解

关于RecyclerView的ItemView装饰,之前一直用官方Demo的DividerItemDecoration,并没有认真地去理解ItemDecoration的用法,也没能体会到ItemDecoration的强大,直到要用到横向的RecyclerView,而且最左边的和最右边的Item要留...

2016-05-20 16:11:39

阅读数 13425

评论数 18

Collections.sort()崩溃分析

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

2016-05-19 11:21:44

阅读数 6149

评论数 0

Glide使用详解(二)

BitmapPoolDalvik和ART都没有使用compacting garbage collector垃圾回收模式,这种模式中GC会遍历堆,同时把活跃对象移到相邻内存区域,让更大的内存块可以用在后续的分配中。因为安卓没有这种模式,就可能会出现被分配的对象分散在各处,对象之间只有很小的内存可用。...

2016-04-17 15:01:59

阅读数 8119

评论数 5

Glide使用详解(一)

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

2016-04-12 12:25:23

阅读数 151072

评论数 65

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

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

2016-04-04 22:45:10

阅读数 9556

评论数 2

Glide之Target

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

2016-04-01 17:36:20

阅读数 8892

评论数 6

Glide之GlideModule

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

2016-03-31 15:13:49

阅读数 13814

评论数 3

Unable to add window崩溃分析

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

2016-03-21 17:49:10

阅读数 13229

评论数 2

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

static 修饰 类:static修饰类时,是指修饰内部类,也就是所说的静态内部类,普通外部类是不允许用static修饰的。 非静态内部类可以直接访问外部类的成员变量和成员方法,即使是private的。实例化非静态内部类时要先实例化一个外部类对象outerObject,通过这个外部类的对象来实例...

2016-01-24 17:22:16

阅读数 1056

评论数 0

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