Android应用层
文章平均质量分 85
刘望舒
腾讯最具价值专家,Android进阶书畅销前三: 《Android进阶指北》《Android进阶解密》《Android进阶之光》 作者 ,连续5年蝉联电子工业出版社年度优秀作者。国内首批Android开发者,10多年开发经验,前华为架构师、独角兽公司技术总监。国内唯一被百度百科收录的Android技术专家,谷歌开发者社区、Droidcon等技术大会特邀讲师,CSDN 2018年度十大博客之星。
展开
-
Android处理错误json数据
此前一直都没遇到也一直相信服务端返回的json数据基本是正确的,直到我们的android端一直崩溃,并在友盟上查到一直报如下的错误:com.google.gson.JsonSyntaxException: java.lang.IllegalStateException: Expected BEGIN_OBJECT but was STRING at line 1 column 1 path $原创 2015-09-15 16:00:12 · 6631 阅读 · 0 评论 -
Android图片压缩工具类
网上用了很多压缩图片的方法都不是很理想,这个工具类比较靠谱可以将5,6M的图片压缩到60到70Kimport java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.OutputStream;import android.content.Con原创 2015-09-13 19:27:44 · 6256 阅读 · 10 评论 -
Android面试题总结加强版(二)
16.Android常用控件的信息单选框(RadioButton与RadioGroup):RadioGroup用于对单选框进行分组,相同组内的单选框只有一个单选框被选中。 事件:setOnCheckedChangeListener(),处理单选框被选择事件。把RadioGroup.OnCheckedChangeListener实例作为参数传入。多选框(CheckBox):每个多原创 2012-04-04 20:59:34 · 14046 阅读 · 6 评论 -
Android多线程(二)AsyncTask源码分析
AsyncTask的基本用法这里就不在赘述了,基本是个安卓开发者就会。1.android 3.0以前的 AsyncTaskprivate static final int CORE_POOL_SIZE = 5; private static final int MAXIMUM_POOL_SIZE = 128; private static final int KEEP_AL原创 2015-04-14 18:45:33 · 4458 阅读 · 0 评论 -
Android IPC机制(五)用Socket实现跨进程聊天程序
Socket也称作“套接字“,是在应用层和传输层之间的一个抽象层,它把TCP/IP层复杂的操作抽象为几个简单的接口供应用层调用已实现进程在网络中通信。它分为流式套接字和数据包套接字,分别对应网络传输控制层的TCP和UDP协议。TCP协议是一种面向连接的、可靠的、基于字节流的传输层通信协议。它使用三次握手协议建立连接,并且提供了超时重传机制,具有很高的稳定性。UDP协议则是是一种无连接的协议,且不对传送数据包进行可靠性原创 2016-02-20 16:58:04 · 5838 阅读 · 4 评论 -
Android View体系(一)视图坐标系
Android View体系是界面编程的核心,他的重要性不亚于Android四大组件,在这个系列中我会陆续讲到View坐标系、View的滑动、View的事件分发等文章来逐步介绍Android View体系。原创 2016-02-23 19:25:28 · 30215 阅读 · 27 评论 -
Android网络编程(二)HttpClient与HttpURLConnection
上一篇我们了解了HTTP协议原理,这一篇我们来讲讲Apache的HttpClient和Java的HttpURLConnection,这两种都是我们平常请求网络会用到的。无论我们是自己封装的网络请求类还是第三方的网络请求框架都离不开这两个类库。原创 2016-04-02 11:46:00 · 15543 阅读 · 18 评论 -
Android网络编程(三)Volley用法全解析
Volley想必很多人都用过,为了建立网络编程的知识体系,Volley是必须要讲的知识点,所以我这里有必要再次介绍一下Volley的使用。原创 2016-04-04 13:01:40 · 21162 阅读 · 20 评论 -
Android View体系(九)自定义View
学习了以上的文章后,接下来我们来讲讲自定义View,自定义View一直被认为是高手掌握的技能,因为情况太多,想实现的效果又变化多端,但它也要遵循一定的规则,我们要讲的就是这个规则,至于那些变化多端的酷炫的效果就由各位来慢慢发挥了。但是需要注意的是凡事都要有个度,自定义View毕竟不是规范的控件,如果不设计好不考虑性能反而会适得其反,另外适配起来可能也会产生问题,笔者的建议是如果能用系统控件的还是尽量用系统控件。原创 2016-04-06 11:32:11 · 7453 阅读 · 4 评论 -
Android面试题总结加强版(四)
43. 下面异常是属于Runtime Exception 的是(abcd)(多选) A、ArithmeticException B、IllegalArgumentException C、NullPointerException D、BufferUnderflowException44. Math.round(11.5)等于多原创 2012-10-14 12:33:24 · 13879 阅读 · 3 评论 -
Android网络编程(五)OkHttp2.x用法全解析
讲完了Volley,我们接下来看看目前比较火的网络框架OkHttp, 它处理了很多网络疑难杂症:会从很多常用的连接问题中自动恢复。如果您的服务器配置了多个IP地址,当第一个IP连接失败的时候,OkHttp会自动尝试下一个IP,此外OkHttp还处理了代理服务器问题和SSL握手失败问题。原创 2016-04-18 12:10:14 · 23124 阅读 · 5 评论 -
Android View体系(十)自定义组合控件
上一篇我们讲到了自定义View,接着我们来讲讲常用的自定义组合控件,自定义组合控件就是多个控件组合起来成为一个新的控件,主要用来解决多次重复的使用同一类型的布局。比如我们应用的顶部的标题栏,还有弹出的固定样式的dialog,这些都是常用的,所以把他们所需要的控件组合起来重新定义成一个新的控件。原创 2016-05-19 17:10:07 · 20508 阅读 · 2 评论 -
Android 数据库开发(一)SQLite3概述
SQLite是一款轻型的数据库,是遵守ACID的关系型数据库管理系统,它包含在一个相对小的C库中。它是D.RichardHipp建立的公有领域项目。它的设计目标是嵌入式的,而且目前已经在很多嵌入式产品中使用了它,它占用资源非常的低,在Android、iOS等移动操作系统中的数据库实现也是使用的SQLite3。对于Android开发者来说数据库并不算很好维护,所以深入了解SQLite数据库也原创 2016-07-03 13:54:25 · 10080 阅读 · 2 评论 -
Android网络编程(七)源码解析OkHttp前篇[请求网络]
学会了OkHttp3的用法后,我们当然有必要来了解下OkHttp3的源码,当然现在网上的文章很多,我仍旧希望我这一系列文章篇是最简洁易懂的。原创 2016-08-06 10:16:38 · 8288 阅读 · 7 评论 -
Android网络编程(九)Retrofit2前篇[基本使用]
Retrofit是Square公司开发的一款针对Android网络请求的框架,Retrofit2底层基于OkHttp实现的,而OkHttp现在已经得到Google官方认可,不了解OKHttp的请查看本系列的前作。原创 2016-09-11 17:37:58 · 8410 阅读 · 2 评论 -
Android事件总线(二)EventBus3.0源码解析
上一篇我们讲到了EventBus3.0的用法,这一篇我们来讲一下EventBus3.0的源码以及它的利与弊。原创 2016-08-22 10:32:07 · 9253 阅读 · 5 评论 -
Android架构(一)MVP全解析
关于架构的文章,博主很早就想写了,虽说现在比较流行MVVM,但是MVP以及MVC也没有过时之说,最主要还是要根据业务来选择合适的架构。当然现在写MVP的文章很多,也有很多好的文章,但是大多数看完后还是一头雾水,所以还是自己总结比较靠谱。原创 2016-08-25 12:01:54 · 12940 阅读 · 15 评论 -
设计模式(七)装饰模式
装饰模式是结构型设计模式之一,不必改变类文件和使用继承的情况下,动态地扩展一个对象的功能,是继承的替代方案之一。它是通过创建一个包装对象,也就是装饰来包裹真实的对象。原创 2016-05-15 11:26:50 · 4745 阅读 · 8 评论 -
Android网络编程(八)源码解析OkHttp后篇[复用连接池]
上一篇我们根据OkHttp的源码讲解了OkHttp的请求网络流程,这一讲我们接着根据源码了解OkHttp的复用连接池。原创 2016-08-30 15:20:12 · 14050 阅读 · 3 评论 -
Android View体系(三)属性动画
随着android3.0属性动画的推出,视图动画就不再风光,相比属性动画视图动画非常大的缺陷是不具有交互性,当某个元素发生视图动画后,其响应事件的位置依然在动画前的地方,所以视图动画只能做普通的动画效果,避免交互的发生。但是它的优点也非常明显:效率比较高使用也方便。原创 2015-11-17 14:16:54 · 4844 阅读 · 1 评论 -
Android响应式编程(一)RxJava前篇[入门基础]
在讲到RxJava之前我们首先要了解什么是ReactiveX,因为RxJava是ReactiveX的一种java实现。ReactiveX是Reactive Extensions的缩写,一般简写为Rx,微软给的定义是,Rx是一个函数库,让开发者可以利用可观察序列和LINQ风格查询操作符来编写异步和基于事件的程序,开发者可以用Observables表示异步数据流,用LINQ操作符查询异步数据流, 用Schedulers原创 2016-09-07 18:42:32 · 8749 阅读 · 0 评论 -
Android事件总线(四)源码解析otto
上一篇文章中讲到了otto的用法,这一篇我们来讲一下otto的源码。可能有人觉得otto过时了,但是通过源码我们学习的是高手设计otto时的设计理念,这种理念是不过时的。原创 2017-01-01 12:56:29 · 4027 阅读 · 0 评论 -
Android事件总线(三)otto用法全解析
otto 是 Square公司发布的一个发布-订阅模式框架,它基于Google Guava 项目中的event bus模块开发,针对Android平台做了优化和加强。虽然Square已经停止了对otto的更新并推荐使用RxJava和RxAndroid来替代它,但是otto的设计理念和源码仍旧值得学习。原创 2016-12-16 12:48:55 · 5004 阅读 · 1 评论 -
Android网络编程(十一)源码解析Retrofit
最近博客的产出确实很少,因为博主我正在写一本Android进阶书籍,两头很难兼顾,但是每个月也得至少发一篇博客。上一篇我们介绍了Retrofit的使用方法,这一篇我们照例来学习Retrofit的源码。原创 2016-12-03 12:04:57 · 4777 阅读 · 1 评论 -
Android View体系(十一)自定义ViewGroup
此前讲了很多,终于可以讲到这一节了,本文的例子是一个自定义的ViewGroup,左右滑动切换不同的页面,类似一个特别简化的ViewPager,这篇文章会涉及到这个系列的很多文章的内容比如View的measure、layout和draw流程,view的滑动等等,所以对View体系不大了解的同学看这篇文章前可以先从头阅读本系列的其他文章,再来看这篇文章效果会更好些。需要注意的是我们知道要实现一个自定义的ViewGroup原创 2016-06-11 09:54:32 · 10458 阅读 · 9 评论 -
Android IPC机制(四)用ContentProvider进行进程间通信
ContentProvider为存储和获取数据提供统一的接口,它可以在不同的应用程序之间共享数据,本身就是适合进程间通信的。ContentProvider底层实现也是Binder,但是使用起来比AIDL要容易许多。系统也预制了很多的ContentProvider,例如通讯录,音视频等,这些操作本身就是跨进程进行通信。这篇文章主要是我们来自己实现用ContentProvider来进行进程间通信,而非介绍ContentP原创 2016-01-29 17:00:40 · 8988 阅读 · 1 评论 -
Android网络编程(十)Retrofit2后篇[注解]
在上一篇中我们了解了Retrofit的最基本的GET方式访问网络的写法以及请求参数的简单介绍。这一篇我们来详细的了解Retrofit的请求参数。原创 2016-11-02 16:14:10 · 6115 阅读 · 0 评论 -
Android绘制优化(一)绘制性能分析
一个优秀的应用不仅仅是要有吸引人的功能和交互,同时在性能上也有很高的要求。运行Android系统的手机,虽然配置在不断的提升,但仍旧无法和PC相比,无法做到PC那样拥有超大的内存以及高性能的CPU,因此在开发Android应用程序时也不可能无限制的使用CPU和内存,如果对CPU和内存使用不当也会造成应用的卡顿和内存溢出等问题。因此,应用的性能优化对于开发人员有着更高的要求。Android性能优化分为很多种,比较常用的原创 2017-03-13 11:40:26 · 11121 阅读 · 1 评论 -
Android绘制优化(二)布局优化
我们知道一个界面的测量和绘制是通过递归来完成的,减少布局的层数就会减少测量和绘制的时间,从而性能就会得到提升。当然这只是布局优化的一方面,那么如何来进行布局的分析和优化呢?本篇文章会给你一个满意的答案。原创 2017-03-27 11:18:05 · 3865 阅读 · 3 评论 -
Android Design Support Library(一)用TabLayout实现类似网易选项卡动态滑动效果
此前我们用HorizontalScrollView也实现了类似网易选项卡动态滑动效果,详见 Android选项卡动态滑动效果这篇文章这里我们用TabLayout来实现这一效果。TabLayout是Android Design Support Library库中的控件。 Google在2015的IO大会上,给我们带来了更加详细的Material Design设计规范,同时,也给我们带来了全新的And原创 2015-12-27 16:58:57 · 28568 阅读 · 17 评论 -
Android5.x Notification应用解析
Notification可以让我们在获得消息的时候,在状态栏,锁屏界面来显示相应的信息,很难想象如果没有Notification,那我们的qq和微信以及其他应用没法主动通知我们,我们就需要时时的看手机来检查是否有新的信息和提醒着实让人烦心,也体现出Notification重要性。这里会介绍三种Notification,分别是普通的Notification,折叠式Notification和悬挂式Not原创 2015-12-04 00:08:21 · 23547 阅读 · 31 评论 -
Android内存优化(一)DVM和ART原理初探
要学习Android的内存优化,首先要了解Java虚拟机,此前我用了多篇文章来介绍Java虚拟机的知识,就是为了这个系列做铺垫。在Android开发中我们接触的是与Java虚拟机类似的Dalvik虚拟机和ART虚拟机,这一篇我们就来了解它们的基本原理。原创 2017-06-05 00:24:14 · 12245 阅读 · 4 评论 -
Android内存优化(三)避免可控的内存泄漏
内存泄漏向来都是内存优化的重点,它如同幽灵一般存于我们的应用当中,有时它不会现身,但一旦现身就会让你头疼不已。因此,如何避免、发现和解决内存泄漏就变得尤为重要。这一篇我们先来学习如何避免内存泄漏。原创 2017-06-21 00:12:44 · 4090 阅读 · 2 评论 -
Android内存优化(四)解析Memory Monitor、Allocation Tracker和Heap Dump
要想做好内存优化工作,就要掌握两大部分的知识,一部分是知道并理解内存优化相关的原理,另一部分就是善于运用内存分析的工具。本篇就来介绍内存分析工具:Memory Monitor、Allocation Tracker和Heap Dump的使用方法。原创 2017-07-10 01:10:23 · 7760 阅读 · 1 评论 -
Android内存优化(五)详解内存分析工具MAT
在这个系列的前四篇文章中,我分别介绍了DVM、ART、内存泄漏和内存检测工具的相关知识点,这一篇我们通过一个小例子,来学习如何使用内存分析工具MAT。原创 2017-08-11 00:30:45 · 22424 阅读 · 2 评论 -
Android内存优化(六)LeakCanary使用详解
如果使用MAT来分析内存问题,会有一些难度,并且效率也不是很高,对于一个内存泄漏问题,可能要进行多次排查和对比。为了能够简单迅速的发现内存泄漏,Square公司基于MAT开源了LeakCanary。原创 2017-09-04 00:13:54 · 48051 阅读 · 7 评论 -
Android解析ClassLoader(一)Java中的ClassLoader
热修复和插件化是目前比较热门的技术,要想更好的掌握它们需要了解ClassLoader,因此也就有了本系列的产生,这一篇我们先来学习Java中的ClassLoader。原创 2017-09-25 19:42:50 · 11703 阅读 · 12 评论 -
Android网络编程(六)OkHttp3用法全解析
上一篇介绍了OkHttp2.x的用法,这一篇文章我们来对照OkHttp2.x版本来看看,OkHttp3使用起来有那些变化。当然,看这篇文章前建议看一下前一篇文章Android网络编程(五)OkHttp2.x用法全解析。原创 2016-04-21 12:26:19 · 131042 阅读 · 52 评论 -
Android事件总线(一)EventBus3.0用法全解析
EventBus是一款针对Android优化的发布/订阅事件总线。简化了应用程序内各组件间、组件与后台线程间的通信。优点是开销小,代码更优雅,以及将发送者和接收者解耦。如果Activity和Activity进行交互还好说,如果Fragment和Fragment进行交互着实令人头疼,我们会使用广播来处理,但是使用广播稍显麻烦并且效率也不高,如果传递的数据是实体类需要序列化,那么很显然成本会有点高。今天我们就来学习下Ev原创 2016-08-17 10:21:59 · 62033 阅读 · 25 评论 -
Android网络编程(一)HTTP协议原理
这篇文章是这个系列的开篇,作为移动开发者,开发的应用不免会对网络进行访问,虽然现在已经有很多的开源库帮助我们可以轻而易举的访问网络,但是我们仍要去了解网络访问的原理,这也是一个优秀开发人员所必备的知识点。这篇文章我们就先来了解一下HTTP协议原理。原创 2016-03-28 11:38:35 · 58450 阅读 · 17 评论