自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(54)
  • 资源 (5)
  • 收藏
  • 关注

原创 Retrofit攻略---一步一步的打造网络访问的航空母舰

最开始使用AndroidStudio的时候,各种不适应,各种怀恋Eclipse,写了几千行代码勉强熟悉了AndroidStudio后,感觉AndroidStudio不要太棒了。 学习Retrofit也是这样,遇到麻烦就想去用以前用过的框架,没必要,熟悉了过后我现在连吃个汤圆都喜欢串着吃,囧….像OkHttp一样使用当然实际的项目开发中,不可能给我们时间慢慢去适应、去学习,要考虑技术风险和学习成本、

2016-06-29 04:24:03 4171 2

原创 Android内存泄露检测工具---LeakCanary的前世今生

曾经检测内存泄露的方式让我们来看看在没有LeakCanary之前,我们怎么来检测内存泄露 1. Bug收集 通过Bugly、友盟这样的统计平台,统计Bug,了解OutOfMemaryError的情况。 2. 重现问题 对Bug进行筛选,归类,排除干扰项。然后为了重现问题,有时候你必须找到出现问题的机型,因为有些问题只会在特定的设备上才会出现。为了找到特定的机型,可能会想尽一切办法,去买

2016-06-12 02:16:54 9370 4

原创 彻底明白Activity启动模式-SingleTop、SingleTask、SingleInstance具体使用场景

启动模式启动模式是什么有这样的场景:当我们使用App的时候,呈现出一个Activity,按下返回键(不考虑重写返回键事件),常常就回退到上一个打开的Activity或者退出App。//重写返回按键事件public boolean onKeyDown(int keyCode, KeyEvent event) { if (keyCode == KeyEvent.KEYCODE_BA

2016-06-03 23:17:08 61469 6

原创 图片加载框架Glide使用详解

最终我还是决定使用Glide,作为我以后的主要图片加载框架。主要基于三点考虑代码提交频率频繁,有人维护,不至于出现问题,我自己和基友都搞不定的时候问题无法解决。(ImageLoader已没人维护了)代码简洁,可读性很好。(Fresco是一个非常优秀的库,但是配置稍显麻烦,同时代码风格读起来有些生疏)功能强大(400多k的包,包含很多功能,例如:像加载Gif图片就是Picasso做不到的)

2016-07-16 03:20:39 24609 4

原创 Google Guava中Preconditions的用法,让前置条件判断变得更优雅

这几天看Fresco和Glide的代码,发现他们都使用了Preconditions来做前置判断条件,发现这样写,代码变得既优雅又容易调试。Preconditions的用法OK,先看看平常写代码我们是怎么做的参数判断。 判断参数,如果参数配置错误,就抛出异常 int[] intArray = {1, 2, 3, 4, 5, 6}; private void testPr

2016-07-14 20:10:29 10812

原创 AndroidStudio SVN插件配置与使用

事情是这样,这段时间一直使用Git Bash来做代码管理。今天一个项目需要使用到SVN,竟然有些生疏了,还碰到一些坑填不了,项目组其他人选择不在AndroidStudio中操作,直接使用SVN客户端,我总感觉在IDE中写完代码还要切换到SVN客户端去提交太蛋疼,于是记录下填坑笔记配置svn.exe在Settings里面,找到Version Control->Subversion;在这个

2016-07-13 22:40:02 11823

原创 使用Glide模仿微信图片加载策略

为什么要对图片进行压缩比较压缩与否造成的资源消耗你能区别出:下面两个九方格图片展示的区别不? 图1: 图2: 区别在于:图1使用的是压缩图,图2使用的是高清图 以下是高清图地址 http://o9xuvf3m3.bkt.clouddn.com/new_york.jpg http://o9xuvf3m3.bkt.clouddn.com/peru.jpg http://o9xuvf

2016-07-09 04:21:05 8223 2

原创 主流图片加载框架ImageLoader、Glide、Picasso、Fresco性能分析---内存占用比较

AndroidStudio Monitors用过AndroidStudio的Monitors都说好,但是现在的需求是,需要把几个App的资源使用情况,加载到同一张图谱上才好直观的分析啊。 但是我想要的是这样Monitors绘制Memory图谱的原理其实很简单 public final static long MB = 1024 * 1024;

2016-07-07 20:51:32 7865

原创 主流图片加载框架ImageLoader、Glide、Picasso、Fresco性能分析---图片加载速度比较

图片加载这种实现繁琐,可复用性又极强的东西最好是使用图片加载框架来实现。 到Github上面搜索下,关键词Android ImageLoad,ImageLoader、Glide、Picasso、Fresco都有这么多Star,究竟哪个框架更好呢?有说Fresco,因为支持WebP,还是用了NDK来加载图片,减少JavaHeap的使用有Picasso,简洁高效有说Glide,Picass

2016-07-06 23:30:54 10487 2

原创 ImageView 的ScaleType属性使用详解

这几天,学习了下Picasso和Glide,其中他设置图片显示样式的方法centerCrop()、fitCenter()、centerInside()、fit()有些疑惑,查看源码实现发现其就是使用的ScaleType的值 Glide.with(mImageView.getContext()) .load(uri) .pl

2016-07-05 02:22:33 3768

原创 Android Studio导入太慢?修改项目配置文件再导入,飞一般的感觉

你是否有这样的经历: 在Github或者从别人哪儿拷贝一个项目过来,编译半天编译不过去,进度条一直在转,也没个提示来告诉咱们具体错误原因是啥,内心崩溃得不要不要的。我大概总结了下使用Android Stuido去加载一个项目,需要的环境包括:Gradle,包括Gradle使用版本和Android插件版本JDK,这个所有的Java程序都需要Compile Sdk—需要的Android SDK

2016-07-01 03:07:51 14178 4

原创 Retrofit2---网络交互的艺术

Retrofit是啥A type-safe HTTP client for Android and Java翻译:Android和Java使用类型安全的Http客户端Retrofit的前世今生Http客户端用来做网络访问,网络访问,对绝大多数应用来说是一个基础功能 我们来简单回顾下网络访问框架的发展史: 1. HttpUrlConnection和HttpClient。Android2.1时

2016-06-29 02:31:49 1179

原创 RxJava学习笔记---简单使用

RxJava是什么Rx是什么Rx全称Reactive Extensions,译为响应式拓展。微软最先提出这个概念,借用MSDN上的定义:Reactive Extensions(Rx)是一个类库,它集成了异步、基于可观察(observable)序列的事件驱动编程和LINQ-style的查询操作,使用Rx,开发人员可以用observable对象描述异步数据流使用LINQ操作符异

2016-06-22 00:12:30 3840 4

原创 Android App 启动页(Splash)黑/白闪屏现象产生原因与解决办法

惊鸿一瞥微信的启动页,相信大家都不陌生。 不知道大家有没有发现一个现象,微信每次启动的时候,是直接进入这个启动页面。 我的意思是,很多应用,往往会先白屏停顿一下后再进入启动页面(Splash)。为了印证这一点,我把手机上所有的App都点了一遍。选几个例子 如下图: 微信: 斗鱼: 斗鱼和微信是直接进入了,他们的Splash页面。 知乎: B站: 知乎和B站要先进入一

2016-06-16 20:30:24 27681 12

原创 AndroidStudio打包全攻略---Gradle-Build Variants构建定制版App

上一篇文章 Android Studio打包全攻略—从入门到精通限于篇幅Build Variants的作用分析得还不够,这篇文章主要探讨如何构建特别定制版App,你肯定看到过这样的App,类似于:打豆豆小米特别定制版、XXX魅族首发版。 这些App其实绝大部分界面,功能和普通版本都差不多,只是多了一些坠饰,比如修改了App名称,打豆豆变成了打豆豆小米定制版修改了App的图标,加上了渠道商或者厂

2016-06-16 01:37:48 14175

原创 Android Studio打包全攻略---从入门到精通

初出茅庐 手动打包怎么手动打包项目写完了,现在需要把应用上传到市场,问题出现—怎么把代码变成.apk(Android的可安装文件)。 1. 创建签名文件 2. 填写好签名参数 3. 生成APK 注意:签名的密码和密匙的密码注意保管,不要忘了,签名文件别泄漏了,也别搞丢了为什么要打包我最开始就有这个疑问,我们的代码不是点了下运行按钮就直接安装到手机上了吗,我们在在项目Project

2016-06-15 02:33:30 26297 7

原创 Android Studio使用技巧---良心推荐的实用功能

原创地址:http://blog.csdn.net/zivensonice/article/details/51659910 比起Eclipse,Android Studio简直好用得不要不要的,谈谈心得体会Live Templates啥也不说了,就是电影里黑客那种『随便敲几下键盘 就蹦出一屏代码』的逼格~ 随便输入了个logd、Toast、starter、tag就蹦出这么多代码,你说酷不

2016-06-14 00:26:50 11816

原创 Android Studio使用---眼花缭乱的插件使用技巧

插件的安装方式打开Setting/Preference页面,快捷键Mac—Commad+, Windows—Ctrl+Alt+S选择Plugins选择Browse repository搜索插件安装重启jimu Mirror功能对大多数人来说,写完布局后,肯定迫切的想看到它在真机上展示的样子,于是就会编写一些跳转代码,显示布局,把这个几个步骤整理下:在layout文件夹下编写xml布

2016-06-13 01:12:10 6528

原创 Android内存泄露案例和解析

使用过长对象生命周期静态变量单例使用内部类耗时操作Handler.delayhttp://www.cnblogs.com/qianxudetianxia/p/3645106.html https://drakeet.me/android-leaks http://www.tuicool.com/articles/2AnARj http://www.

2016-06-08 21:43:05 2256

原创 Android内存泄漏原因分析

内存泄漏的基本概念什么是内存泄漏、其会产生什么影响?内存泄漏,泄漏的到底是什么?为什么会发生内存泄漏?有什么办法可以修正它http://hanhailong.com/2015/12/27/Android%E6%80%A7%E8%83%BD%E4%BC%98%E5%8C%96%E4%B9%8B%E5%B8%B8%E8%A7%81%E7%9A%84%E5%86%85%E5%

2016-06-07 22:17:46 1404

原创 Android Studio主题设置、颜色背景配置

color-themes效果展示打开http://color-themes.com/有很多样式可供选择 1. Monokai Sublime Text 3(color theme) 2. Solarized Light (color theme) 3. Visual Studio 2015 Dark(color theme) 导入方式下载主题—xxx.jar注意:如果我

2016-06-06 03:42:21 98128 11

原创 Android Studio使用技巧

快捷键Mac编辑代码提示 Ctrl+Space单词跳转Alt+左右方向行跳转Command+左右方向方法内开始和末尾跳转Alt+Command+[]跳转到指定行 Command+L查找和替换 Command+F Command+R全局查找和替换 Command+Shift+F Command+Shift+R分割行 Command+Enter下一行新起一行 Shift+En

2016-06-03 02:10:22 1198

原创 Android消息机制

概述作用为什么不能在主线程中进行耗时操作? 因为会导致体验不流畅、卡顿,体验差。 Handler的出现为了解决在子线程中操作完成了无法访问UI线程(主线程)的矛盾。 为什么不能在子线程中更新UI? 因为多线程操作导致线程不同步,并发操作让UI控件处于不可预期的状态。 为什么不通过线程同步更新UI?通过给UI控件的访问加上锁 1. 加锁会让UI访问逻辑变得异常复杂 2.

2016-06-02 00:40:25 5596 1

原创 Android线程池

概述作用为什么不能在主线程中进行耗时操作? 因为会导致体验不流畅、卡顿,体验差。 Handler的出现为了解决在子线程中操作完成了无法访问UI线程(主线程)的矛盾。 为什么不能在子线程中更新UI? 因为多线程操作导致线程不同步,并发操作让UI控件处于不可预期的状态。 为什么不通过线程同步更新UI?通过给UI控件的访问加上锁 1. 加锁会让UI访问逻辑变得异常复杂 2. 锁阻塞某些线

2016-05-30 23:50:57 1406

原创 View绘制4-onDraw

已知通过onMeasure()测绘view大小,通过onLayout()知道view位置,然后就是在draw阶段实现具体绘制了View-draw()的绘制过程 public void draw(Canvas canvas) { if (mClipBounds != null) { canvas.clipRect(mClipBounds); }

2016-05-27 16:23:20 927 1

原创 View绘制3-onLayout

作用在执行完成onMeasure()确定了View的大小后,需要执行onLayout()来确定View的位置实现先看View的layout()方法 public void layout(int l, int t, int r, int b) { if ((mPrivateFlags3 & PFLAG3_MEASURE_NEEDED_BEFORE_LAYOUT) != 0) {

2016-05-26 19:09:41 580

原创 View绘制2-onMeasure

在自定义View的绘制过程中,重写onMeasure,onLayout,onDraw三个函数实现了View的外观形象,加上onTouchEvent等等函数实现的重载视图行为,构建出一个完整的自定义View体系。 在Android体系中,以on来头的onXXX函数,多以在Activity,Service,View中出现,一般都是使用了设计模式里面的模板设计模式。定义好一套模板流程,然后通过重写模板方

2016-05-26 15:49:51 658

原创 View绘制1-工具类

绘制工具类Configuration Context配置描述的是设备的配置信息 获取像素密度、横竖屏、键盘信息、字体缩放等级等等信息 private void getConfig() { StringBuilder sb = new StringBuilder(); Configuration conf = context.getResources().get

2016-05-25 16:55:08 699

原创 堆排序

实现堆排序作为选择排序的改进版,堆排序可以把每一趟元素的比较结果保存下来,以便我们在选择最小/大元素时对已经比较过的元素做出相应的调整。 堆排序是一种树形选择排序,在排序过程中可以把元素看成是一颗完全二叉树,每个节点都大(小)于它的两个子节点,当每个节点都大于等于它的两个子节点时,就称为大顶堆,也叫堆有序; 当每个节点都小于等于它的两个子节点时,就称为小顶堆。构造堆堆插入假设堆是有序的

2016-05-24 18:58:42 678

原创 面试的时候如何回答:写一个排序算法

排序,查找算法在面试的时候经常会被问起,那么如何把这个问题回答得有水平。 从以下几点考虑:有经验的程序员==不重复发明轮子如果一定要实现,那么代码需要具备一定的架构设计能力,可复用,可以解决同一类问题(轮子的设计)基础扎实,考虑算法的时空复杂度(轮子的实现)不重复发明轮子Java基础类库已经提供了这些功能,大部分时候直接使用工具类。 Integer[] arr = { 2,

2016-05-23 18:28:33 3075

原创 HashMap 、TreeMap、Hashtable、LinkedHashMap

HashMap通过一个哈希表实现,无序class Dog { String color; Dog(String c) { color = c; } public String toString(){ return color + " dog"; }}public class TestHashMap { public

2016-05-23 14:49:43 786

翻译 Java开发常见错误

Arrays.asList()List<String> list = Arrays.asList(arr);Arrays.asList(arr)返回的list中的一个内部类—java.util.Arrays.ArrayList而不是—java.util.ArrayList这个类包含set(), get(), contains() 方法,但是不支持添加和移除元素。private static clas

2016-05-23 01:32:45 1314

翻译 理解Java最重要的8张图

一图胜千言,下面图解均来自Program Creek 网站的Java教程字符串的不变性定义字符串String s = "abcd";s持有字符串abcd的引用 2. 用一个字符串变量赋值另一个字符串变量String s2 = s;s2和s持有同一个对象的引用 3. 合并字符串s = s.concat("ef");总结一旦在堆内存中创建了字符串,字符串本身是不能改变的,如果要改变通过返

2016-05-21 02:33:22 1450

原创 Java/Android 代码规范

引子我前几天看了一本书,书中有这么一句话:“复杂的代码往往都是新手所写,只有经验老道的高手才能写出简单,富有表现力的代码”此话虽然说的有点夸张,可是也说明了经验和智慧的的重要性。我们所写的代码主要是为了阅读,其次才是被机器执行。所以我们要写:是给人读的代码,而不是给机器读的。 我经历过的公司还没遇到有一个统一可复用的规范的,也经常遇到上级领导要求推行一套规范,一般是一个从网上直接拷贝下来的Word

2016-05-20 19:17:04 772

原创 Android图片上传队列Service

需求描述没有网络的时候,将操作产生的本地图片(拍照,也可能是其他文件),存储起来。有网络的时候传输到文件服务器。文件服务器只支持一个文件一个文件的传输。分析因为文件上传的过程不依赖与界面,所以不考虑Activity开启子线程的方式,使用Service,并且App一开启就开启这个服务。创建一个上传队列,每次队列有新的元素加入的时候就去通知Service上传队列改变创建一个任务队列,每次一个

2016-05-20 17:57:45 7627 1

原创 Android图片压缩、加水印

指定图片文件大小压缩实现public Bitmap compressAndGenImage(Bitmap image, String outPath, int maxSize) throws IOException { Bitmap bitmap; ByteArrayOutputStream os = new ByteArrayOutputSt

2016-05-20 16:06:26 2732 1

原创 Android-Application被回收引发空指针异常分析(消灭全局变量)

问题描述App切换到后台后,一段时间不操作,再切回来,很容易就发生崩溃(配置低的手机这种问题出现更频繁)。究其原因,是因为常常把对象存储在Application里面,而App切换到后台后,进程很容易就被系统回收了,下次切换回来的时候App页面再重建,但是系统重建的App对于原来存储的全局变量却无能为力。示例工程例如:有这样的场景,在App登陆页面登录成功后,把接口返回的用户信息(用户名,电话,服务器

2016-05-19 18:39:51 10053 1

原创 Java语言学习

温故而知新1 面向对象语言特性抽象 关心对象有那些属性和行为,不关心具体实现。abstrct class Animal与 class Dog之间的关系继承 获得现有对象属性和行为,减少实现难度让变化的软件系统获得延续性 class TonyDog与class Dog之间的关系多态 不同的子类型对象对同一个事件具备不同的反映前绑定编译时多态-方法重载(overload)对象内部关

2016-05-13 14:20:05 816

原创 数据结构与算法练习-回溯、递归

八皇后问题描述八皇后问题百度百科分析从第一行开始,i表示行数,j表示列数(1<=i,j<=8)第1行 j的位置可为任意第2行 j的位置取决第1行第3行 j的位置取决于第1和第2行第i行的可摆放位置,取决于i-1行的棋子摆放 由此可以递归处理。然后再逐行遍历循环代码 // 8行8列 public final static int MAX = 8; /** 存储总

2016-05-12 16:22:23 654

原创 数据结构与算法练习-动态规划

连续子数组的最大和(包含负数)描述HZ偶尔会拿些专业问题来忽悠那些非计算机专业的同学。今天测试组开完会后,他又发话了:在古老的一维模式识别中,常常需要计算连续子向量的最大和,当向量全为正数的时候,问题很好解决。但是,如果向量中包含负数,是否应该包含某个负数,并期望旁边的正数会弥补它呢?例如:{6,-3,-2,7,-15,1,2,2},连续子向量的最大和为8(从第0个开始,到第3个为止)。你会不会被他

2016-05-12 01:35:23 757

启动模式示例代码

启动模式示例代码

2016-06-03

viewdraghelper

viewdraghelper的使用介绍 http://blog.csdn.net/zivensonice/article/details/51499806

2016-05-25

Android图片上传队列Service

没有网络的时候,将操作产生的本地图片(拍照,也可能是其他文件),存储起来。有网络的时候传输到文件服务器。 文件服务器只支持一个文件一个文件的传输。

2016-05-20

Android图片压缩、加水印

Android图片压缩、加水印 http://blog.csdn.net/zivensonice/article/details/51462470

2016-05-20

Android-Application被回收引发空指针异常分析(消灭全局变量

Android-Application被回收引发空指针异常分析(消灭全局变量)-例子 http://blog.csdn.net/zivensonice/article/details/51451486

2016-05-20

空空如也

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

TA关注的人

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