自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

关于Android开发的一些技术点总结 ╮( ̄▽ ̄”)╭

有句话说的很对,会用是一回事,深入理解又是另一回事了 ╮( ̄▽ ̄”)╭

  • 博客(181)
  • 资源 (17)
  • 问答 (1)
  • 收藏
  • 关注

原创 Android开发——ListView局部刷新的实现

0. 前言 局部刷新,即只需要在数据发生变化时才去刷新ListView中对应的Item,数据未发生变化时不会去刷新ListView中对应的Item。对于getView()非常耗时的情况下将体现出极大的性能优化。局部刷新的功能早已经被集成在了RecycleView中,而且RecycleView还引入了增加和删除的动态效果等等,在性能上和定制上都有很大的改善。本篇着重介绍ListView中局部刷新的...

2017-04-07 21:48:37 6266

原创 Java技术——同步锁的各种知识总结

1. 线程同步的方法 1.1 同步方法 就是使用synchronized关键字修饰的方法。由于java的每个对象都有一个内置锁,当用此关键字修饰方法时,内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。synchronized关键字也可以修饰静态方法,此时如果调用该静态方法,将会锁住整个类。1.2 同步代码块 即由synchronized关键字修饰的代码块。被该关键

2017-03-31 22:05:37 4050 1

转载 Android开发——适配终结者AutoLayout

0. 前言  相信Android开发者对于适配问题都比较苦恼,如果有一个库可以完成如下功能,那一定是非常爽的,即直接对比着设计师给我们的设计图(针对某个分辨率),直接把px属性写在xml布局文件里,然后在所有分辨率的机器上比例均完美适配。AutoLayout就是这样的一个库。本库的地址:https://github.com/hongyangAndroid/AndroidAutoLayout。1

2017-03-31 22:04:10 4273

原创 设计模式——设计模式三大分类以及六大原则

1. 设计模式三大分类 设计模式分为三种类型,共23类。(1)创建型模式:单例模式、抽象工厂模式、建造者模式、工厂模式、原型模式。(2)结构型模式:适配器模式、桥接模式、装饰模式、组合模式、外观模式、享元模式、代理模式。(3)行为型模式:模版方法模式、命令模式、迭代器模式、观察者模式、中介者模式、备忘录模式、解释器模式、状态模式、策略模式、职责链模式、访问者模式。2. 六大原则2.1单一职...

2017-03-27 21:53:58 22931 2

原创 Android开发——进程间通信之AIDL(二)

0. 前言不论是Android还是其他操作系统,都会有自己的IPC机制,所谓IPC(Inter-Process Communication)即进程间通信。首先线程和进程是很不同的概念,线程是CPU调用的最小单元,进程一般在PC和移动设备上指一个程序或者一个应用,一个进程可以包含多个线程。IPC方式有很多,在Android中常用的IPC方式包括Bundle、文件、Messenger、AID......

2017-03-25 21:13:42 2689

原创 Android开发——进程间通信之AIDL(一)

0. 前言不论是Android还是其他操作系统,都会有自己的IPC机制,所谓IPC(Inter-Process Communication)即进程间通信。首先线程和进程是很不同的概念,线程是CPU调用的最小单元,进程一般在PC和移动设备上指一个程序或者一个应用,一个进程可以包含多个线程。IPC方式有很多,在Android中常用的IPC方式包括Bundle、文件、Messenger、AID......

2017-03-25 21:10:45 2808

转载 算法相关——KMP算法最通俗易懂的解释

0. 前言一个字符串"BBCABCDABABCDABCDABDE"中是否包含另一个字符串"ABCDABD"? KMP就是最常用的字符串匹配算法之一。KMP有着优秀的时间复杂度O(m+n),网上有很多KMP算法的解释,但读起来都很费劲。直到读到Jake Boxer的文章,我才真正理解这种算法。下面我用自己的语言,试图写一篇比较好懂的KMP算法解释。1. 算法过程解释...

2017-03-15 18:03:39 3147 3

原创 Android开发——BroadcastReceiver知识总结

0. 前言BroadcastReceiver作为Android四大组件之一,像一个全局的监听器一样,是用来监听系统或者应用发出的广播信息,再在其onReceive()中执行相应的逻辑处理。如可以监听系统的开机广播、电量较少的广播,也可以用来实现自己应用中不同组件之间的通信,如数据库中CURD后发送一个广播,并传递少量的数据,使某个Service中的变量发生改变。当然如果数据的发送量比较大就不建议...

2017-03-11 16:24:18 1365

原创 Android开发——Volley源码解析

0. 前言 其实写这篇文章只为一个目的,虽然Volley用起来很爽,但是面试官问你人家内部是怎么实现呢,没看过源码的话,在面试官眼里你和一个拿着一本Volley使用手册的高中生没啥区别。还是那句话说得好,会用一回事,深入理解又是另一回事了。1. Volley源码解析1.1 Volley入口Volley首先获取到的是RequestQueue实例。源码中则直接调用了newRequestQueu...

2017-03-03 10:57:57 2497 1

原创 Android开发——Volley的使用详解

0. 前言 Android系统中主要提供了HttpURLConnection和HttpClient进行网络通信,但是如果不对其进行封装就很容易就会写出重复代码。因此一些Android网络通信框架应运而生, Volley就是其中的佼佼者,Volley不仅可以进行HTTP通信,也可以轻松加载网络上的图片。Volley设计的初衷就是非常适合去进行数据量不大,但通信频繁的网络操作,而对于大数据量的网络操......

2017-03-03 10:45:13 3884

原创 算法相关——Java排序算法之归并排序(八)

归并排序是指通过对若干个有序结点序列的归并来实现排序,所谓归并是指将若干个已排好序的部分根据算法合并成一个新的有序整体。比如两个有序的子序列array[low,...,mid]和array[mid+1,...,high],设置i,j两个指针指向low和mid+1,合并时依次比较array[i]和array[j]的值,取较小值记录复制到暂存序列temp[]中,在用p指向该暂存序列,每复制一次,让较小值的下标i或者j自增一次,同时p也自增一次...

2017-03-03 10:15:40 1332

原创 算法相关——Java排序算法之堆排序(七)

0. 前言本系列文章将介绍一些常用的排序算法。排序是一个非常常见的应用场景,也是开发岗位面试必问的一道面试题,有人说,如果一个企业招聘开发人员的题目中没有排序算法题,那说明这个企业不是一个“正规”的企业,哈哈,虽然有点戏谑,但是也从侧面证明了排序算法的重要性。本文将介绍的是常见排序算法中的堆排序。7 堆排序7.1 基本思想7.1.1 堆的概念堆是一种特殊形......

2017-02-28 21:53:03 1165 1

转载 Android开发—— 热修复Tinker源码浅析

热修复这项技术,基本上已经成为Android项目比较重要的模块了。主要因为项目在上线之后,都难免会有各种问题,而依靠发版去修复问题,成本太高了。现在热修复的技术基本上有阿里的AndFix、QZone的方案、美团提出的思想方案以及腾讯的Tinker等。其中AndFix可能接入是最简单的一个(和Tinker命令行接入方式差不多),不过AndFix兼容性有一定的问题,QZone方案对性能会有一定的影响

2017-02-28 21:40:38 1610

原创 算法相关——Java排序算法之选择排序(六)

个人感觉选择排序是最接近人类思维的一种排序方法,因为我们在看到一个待排序列时,首先是从始至终找到一个最小的数放在第一个位置,再从剩下的数据中选出最小的放在第二个位置。选择排序的基本思想也是如此的。选择排序很明显空间复杂度为O(1),时间复杂度为O(n*n),选择排序是不稳定的。...

2017-02-27 21:53:14 1301

原创 Android开发——SurfaceView使用总结

0. 前言在Android开发中,如果需要在主线程之外的线程绘制界面、View需要频繁刷新或刷新时数据流较大时,就要考虑使用SurfaceView了。因为SurfaceView可以避免画图任务繁重的时候造成主线程阻塞,从而提高了程序的反应速度。1. SurfaceView和View的区别(1)View主要用于主动刷新的情况下,而SurfaceView多用于频繁地被动刷新。(2)View是在主...

2017-02-27 15:48:42 5354

原创 算法相关——Java排序算法之希尔排序(五)

希尔排序是对插入排序的一个改进,希尔排序首先把待排数列按照一定增量进行分割,比如{3,1,5,9,6,5,0,2,4,12}数列,我们首先设置增量为n/2=5,因此有了分块后5个子块,即{3,5},{1,0},{5,2},{9,4},{6,12},将每个子块进行插入排序(即第i位与第i+5位进行比较交换),初步排序结果为{3,0,2,4,6,5,1,5,9,12}。希尔排序再将增量逐渐减小,进行5/2=2的分块,即{3,2,6,1,9},{0,4,5,5,12},同理插入排序得...

2017-02-24 21:15:34 1250 1

原创 Java技术——Java中的static关键字解析

0. 前言 static是Java技术网络中的重要的一个点。也是面试的时候经常被问到的点,如果理解不够很容易给面试官语言基础不扎实的印象。本文从static方法、static内部类、static变量、以及static代码块四个角度分别解析static关键字。1. static方法《Java编程思想》里有这么一句话——“static方法就是没有this的方法。在static方法内部不能调用非静

2017-02-21 21:44:09 2372 1

原创 算法相关——Java排序算法之插入排序(四)

插入排序分为两种,一种是直接插入排序,一种是二分插入排序。首先直接插入排序的基本思想是将序列分为排序好的部分和待排序部分,将待排序部分中的数据一个个的和前面已经排序好的部分比较(逐个从后到前顺序比较)并插入到该部分的合适位置,从而实现有序。而二分插入排序则是对直接插入排序法比较过程的一个优化,即从顺序比较变成了二分查找比较。...

2017-02-18 09:25:41 1524 1

转载 Android Studio 2.2新增布局——ConstraintLayout完全解析

0. 前言ConstraintLayout是Android Studio 2.2中主要的新增功能之一,我们都知道在传统的Android开发中,界面基本主要是靠编写XML代码完成的,虽然Android Studio也支持可视化的方式来编写界面,但是操作起来并不方便,而ConstraintLayout非常适合使用可视化的方式来编写界面,当然,可视化操作的背后Android Studio会自动为我们生成

2017-02-17 21:49:58 11812 3

原创 算法相关——Java排序算法之快速排序(三)

0. 前言本系列文章将介绍一些常用的排序算法。排序是一个非常常见的应用场景,也是开发岗位面试必问的一道面试题,有人说,如果一个企业招聘开发人员的题目中没有排序算法题,那说明这个企业不是一个“正规”的企业,哈哈,虽然有点戏谑,但是也从侧面证明了排序算法的重要性。本文将介绍的是常见排序算法中的快速排序。3.快速排序3.1 基本思想快速排序是一种比较快的排......

2017-02-15 11:47:28 1325 2

原创 算法相关——Java排序算法之冒泡排序(二)

0. 前言本系列文章将介绍一些常用的排序算法。排序是一个非常常见的应用场景,也是开发岗位面试必问的一道面试题,有人说,如果一个企业招聘开发人员的题目中没有排序算法题,那说明这个企业不是一个“正规”的企业,哈哈,虽然有点戏谑,但是也从侧面证明了排序算法的重要性。本文将介绍的是常见排序算法中的冒泡排序。2.冒泡排序2.1 基本思想冒泡排序也是一种简单的排序算法,基......

2017-02-14 13:48:04 1385

原创 算法相关——Java排序算法之桶排序(一)

桶排序是所有排序算法中最快、也是最简单的排序算法。基本思想是在知道所有待排元素的范围后,准备和这个范围同样数量的桶,并将元素放在对应的桶中,如待排元素为{3,1,5,9,6,5,0},就要准备10个桶标号为0到9(代码中对应一个数组的下标),将每个元素放入对应桶中,再将所有元素按顺序输出(代码中则按顺序将数组i下标输出arrary[i]次),即为{0,1,3,5,5,6,9}。...

2017-01-31 22:14:04 2140 1

转载 Java并发——线程中断学习

1. 使用interrupt()中断线程当一个线程运行时,另一个线程可以调用对应的Thread对象的interrupt()方法来中断它,该方法只是在目标线程中设置一个标志,表示它已经被中断,并立即返回。这里需要注意的是,如果只是单纯的调用interrupt()方法,线程并没有实际被中断,会继续往下执行。如下代码所示:public class SleepInterrupt implements Ru

2017-01-31 22:08:21 980

原创 Android开发——ListView使用技巧总结(二)

0. 前言Android中的ListView是用的比较多的控件之一,在上一篇Android开发——ListView使用技巧总结(一)中对ListView的ViewHolder机制、优化卡顿方式以及使用ListView加载不同布局的方式进行了总结。这篇将主要介绍如何做出一个具有弹性的ListView以及如何在合适的实际隐藏Toolbar以让用户获得更多的阅读空间。1. 具有弹性的ListView......

2017-01-31 21:36:19 1513

原创 Android开发——ListView使用技巧总结(一)

1. ViewHolder感觉ViewHolder就不用多说了吧,这是ListView最基本的优化技巧了。ViewHolder机制使在getView()中避免了每次都要进行findViewById()去实例化控件,通过视图缓存机制重用缓存即可。在后面ListView加载不同布局中也用到了ViewHolder机制,所以示例代码就不单独贴了。2. 不要在getView()中进行耗时操作(1)在ge...

2017-01-31 21:35:21 1370

原创 Android开发——JobScheduler机制以及Android电量优化

0. 前言在Android Lollipop版本中增加了JobScheduler API,JobScheduler翻译为任务调度器,可以替代WakeLodk和Alarm运行任务。那么它们的区别在哪呢?JobScheduler又有什么特别之处呢?本文原创,转载请注明出处为http://blog.csdn.net/seu_calvin/article/details/54799939。1. Job...

2017-01-31 19:25:41 3996

转载 Android开发——为EditText添加烟花效果的实现

0. 前言在Android开发中,很多酷炫的效果是增加用户粘性的必要条件。本篇介绍一个为EditText添加烟花效果的示例,效果展示如下。1.烟花效果需要关注的点(1)爆炸的位置:光标所在位置。(2)火花飞出的方向:这里采用随机方向,0~180度,即只向上。(3)发射速度:每个火花发射的速度是不一样的,在一定范围内随机。发射后速度衰减。(4)风速固定:风向根据文字的增长或减少决定。(5)重力:

2017-01-26 20:55:21 2807

原创 Android开发——高斯模糊效果的简单实现

0. 前言在Android开发中,经常在音乐软件中看到高斯模糊效果,在找遍了所有高斯模糊的算法代码后,发现stackblur的Java实现是最快的。效果如下所示。1.  高斯模糊效果实现Bitmap overlay;JavaBlurProcess process = new JavaBlurProcess();private void blur(Bitmap srcBitmap, ImageV

2017-01-17 18:00:45 3249 1

转载 Android开发——Android中的二维码生成与扫描

0. 前言今天这篇文章主要描述二维码的生成与扫描,使用目前流行的Zxing,为什么要讲二维码,因为二维码太普遍了,随便一个Android APP都会有二维码扫描。本篇旨在帮助有需求的同学快速完成二维码生成和扫描的功能。本篇转载自:http://blog.csdn.net/hai_qing_xu_kong/article/details/51260428 1.    Zxing的使用从gitHub

2017-01-13 16:04:08 8134 1

原创 NetWork——描述一次完整的网络请求过程

0. 前言从我们在浏览器的地址栏输入http://blog.csdn.net/seu_calvin后回车,到我们看到该博客的主页,这中间经历了什么呢?简单地回答这个问题,大概是经历了域名解析、TCP的三次握手、建立TCP连接后发起HTTP请求、服务器响应HTTP请求、浏览器解析html代码,同时请求html代码中的资源(如js、css、图片等)、最后浏览器对页面进行渲染并呈现给用户。下面分别...

2017-01-10 18:53:05 17429 3

原创 Android开发——进程间通信之Messenger

0. 前言不论是Android还是其他操作系统,都会有自己的IPC机制,所谓IPC(Inter-Process Communication)即进程间通信。首先线程和进程是很不同的概念,线程是CPU调用的最小单元,进程一般在PC和移动设备上指一个程序或者一个应用,一个进程可以包含多个线程。IPC方式有很多,在Android中常用的IPC方式包括Bundle、文件、Messenger、AIDL、Co...

2017-01-04 17:50:38 1712

原创 设计模式——享元模式详解

0. 前言春运买火车票是一件疯狂的事情,同一时刻会有大量的查票请求涌向服务器,服务器必须做出应答来满足我们的购票需求。试想,这些请求包含着大量的重复,比如从A地到B地的车票情况,如果每次都重复创建一个车票查询结果的对象,那么GC任务将非常繁重,影响性能,这就用到了我们的享元模式。...

2016-12-31 16:44:55 5605

原创 Android开发——监听Android手机的网络状态

0. 前言在Android开发中监听手机的网络状态是一个常见的功能,比如在没网的状态下进行提醒并引导用户打开网络设置,或者在非wifi状态下开启无图模式等等。因此本篇将网上的资料进行了整理总结,方便以后用到的时候可以快速地获取到手机的网络状态。1.主动获取之所以叫主动获取,是获取网络状态的时机是我们来定的,因此主动获取的代码位置比较灵活,可以是加载网络数据前,也可以在刚开启APP时,若没网则...

2016-12-30 16:16:00 6559

转载 Android开发——Android多进程以及使用场景介绍

0. 前言在Android中,默认情况下,同一应用的所有组件均运行在同一进程中,且大多数应用都不会改变这一点。不过,单进程开发并不是Android应用的全部,今天我们就来说说Android中的多进程开发以及多进程的使用场景。1. 进程我们都知道Android系统是基于Linux改造而来的,进程系统也是一脉相承,进程其实就是程序的具体实现。当程序第一次启动,Android会启动...

2016-12-29 21:08:26 6113 3

原创 Android开发——进程间通信之Bundle和文件

0. 前言不论是Android还是其他操作系统,都会有自己的IPC机制,所谓IPC(Inter-Process Communication)即进程间通信。首先线程和进程是很不同的概念,线程是CPU调用的最小单元,进程一般在PC和移动设备上指一个程序或者一个应用,一个进程可以包含多个线程。Android在一个应用中可以通过android:process属性开启多进程模式,用于某些模块必须运行在......

2016-12-28 21:29:23 4763

原创 Android开发——RecyclerView特性以及基本使用方法(二)

0. 前言随着Android的发展,虽然ListView依旧重要,但RecyclerView确实越来越多的被大家使用。但显然并不能说RecyclerView就一定优于ListView,而是应该根据不同的需求选择最合适的进行使用。本篇将介绍我们为什么要使用RecyclerView,并且它的基本使用方法。在Android开发——RecyclerView特性以及基本使用方法(一)中主要介绍了我们为什么.........

2016-12-25 21:15:54 1900

原创 Android开发——RecyclerView特性以及基本使用方法(一)

0. 前言随着Android的发展,虽然ListView依旧重要,但RecyclerView确实越来越多的被大家使用。但显然并不能说RecyclerView就一定优于ListView,而是应该根据不同的需求选择最合适的进行使用。本篇将介绍我们为什么要使用RecyclerView,并且它的基本使用方法。1. 我们为什么要使用RecyclerViewGoogle声称你可以把RecyclerVie...

2016-12-25 21:15:10 3162 3

原创 Android开发——Activity销毁时异步任务的保存和恢复、以及相关的进度条的显示问题

0. 前言在Android开发——Fragment知识整理(二)中我们提到了使用Fragment保存Activity销毁重建时的数据,但是有一个问题是,在异步任务时旋转屏幕,如何处理异步任务呢?如果单纯的在Activity销毁之前关闭上一个异步任务,onPostExecute()中的关闭对话框就不会走了,会出现对话框无法关闭的现象;如果不关闭,可能会更新已经不存在的控件,造成错误,不仅如此最主要...

2016-12-24 22:01:37 3879

原创 Android开发——Fragment知识整理(二)

0. 前言Android开发中的Fragment的应用非常广泛,在Android开发——Fragment知识整理(一)中简单介绍了关于Fragment的生命周期,常用API,回退栈的应用等知识。这篇将着重于介绍Fragment和Activity之间的通信以及使用Fragment保存Activity销毁时数据的一些知识。1. Fragment与Activity的通信Fragment是依附于Activity存...

2016-12-24 21:55:03 1829

原创 Android开发——Fragment知识整理(一)

0. 前言Fragment,顾名思义是片段的意思,可以把Fragment当成Activity的一个组成部分,甚至Activity的界面可以完全有不同的Fragment组成。Fragment需要被嵌套到Activity上面才能起作用,Fragment可以充分利用屏幕面积,而且也可以更方便用户进行交互操作。Fragment是在Android3.0(API level 11)引入的,如果你要适配之前的...

2016-12-24 21:54:15 1876

Android高斯模糊效果的简单实现

Android高斯模糊效果的简单实现示例代码。

2017-01-17

Android使用AIDL完成自定义对象的远程传递示例

Android使用AIDL完成自定义对象的远程传递的完整代码示例。

2017-01-03

Android使用AIDL完成简单的远程加法计算示例

Android使用AIDL完成简单的远程加法计算的完整示例代码。

2017-01-03

Android IPC之Messenger使用示例

使用Messenger进行进程间通信的简单示例代码。

2017-01-03

RecyclerView的使用示例

RecyclerView的使用示例,包含了简单的动画设置、点击事件处理等。

2016-12-25

SurfaceView使用示例

该示例介绍如何使用SurfaceView的上述模版代码实现一个绘图板。

2016-12-19

实时的隐藏Toolbar

比如ListView向下滑动时,为了获得更大的阅读空间,隐藏Toolbar,向上滑时再显示。

2016-12-18

ListView实现两种布局

一个简单的聊天界面示例,来演示如何在ListView的getView方法里更优雅地实现加载不同的布局。

2016-12-16

异步任务中Activity销毁时保证提示框不出问题的代码示例

如果在进行异步任务,如进行下载时,该示例保证在旋转屏幕,不会对加载任务进行中断重启,并且对话框正常显示。

2016-12-11

异步任务中Activity销毁时的代码示例

异步任务中Activity销毁时的代码示例

2016-12-11

增量更新PC端工具

增量更新PC端生成补丁和形成新包的工具。

2016-11-13

Android检测用户心率应用源码

亲测可用。当打开软件时,手机的闪光灯也会自动打开,将手指放在摄像头上时,可以将用户的心跳条形图和心率数值显示出来。

2016-10-21

远程电脑屏幕监控

网上有很多远程监控的代码,但大多不全,这个是代码完整,亲测可用。实现一台电脑对另一台电脑的屏幕监控。

2016-10-19

Android热修复完整示例

Android热修复的例子网上很多,但是很多不全,这是一个简单的实例,易懂可用。

2016-10-18

Java实现文件的Zip压缩解压缩(可以加解密)

在Java代码里实现对文件的zip压缩(支持使用密码)以及解压缩,在网上搜索了好多这方面的资料,都不全面,花了几天时间整理了一下代码,资源里包括了5个jar包,实例代码简单易懂,希望可以帮到你。

2016-10-18

APK权限修改器(免Root)

可以在手机不需要Root的情况下对已安装的第三方应用进行权限“阉割”,比如单机游戏去掉网络权限以防止广告,一般应用去掉读取手机短信的等不必要的权限等。

2016-10-18

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

TA关注的人

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