- 博客(150)
- 资源 (59)
- 收藏
- 关注
原创 Android性能优化
本章重点:Android设备作为一种移动设备,不管是内存还是CPU的性能都受到了一定的限制,也意味着Android程序不可能无限制的使用内存和CPU资源,过多的使用内存容易导致OOM,过多的使用CPU资源容易导致手机变得卡顿甚至无响应(ANR)。这也对开发人员提出了更高的要求。本章主要介绍一些有效的性能优化方法。主要包括布局优化、绘制优化、内存泄漏优化、响应速度优化、ListView优化、B...
2019-02-26 17:55:32 350
原创 Bitmap的加载和Cache
本章总结:主要介绍:如何高效地加载一个BitmapAndroid中常用的缓存策略i. LruCache——内存缓存ii. DiskLruCache——磁盘缓存如何优化列表的卡顿12.1 Bitmap的高效加载BitmapFactory类提供四种方法: decodeFile 、 decodeResource 、 decodeStream 和 decodeByteAr...
2019-02-21 18:46:52 377
原创 Android的线程和线程池
本章总结:Android的线程和线程池在Android系统,线程主要分为主线程和子线程,主线程处理和界面相关的事情,而子线程一般用于执行耗时操作。在Android中,线程的形态有很多种:i. AsyncTask封装了线程池和Handler。ii. HandlerThread是具有消息循环的线程,内部可以使用handleriii.IntentService是一种Service,内部采...
2019-02-20 17:03:37 696
原创 Android的消息机制
Android的消息机制从开发的角度来说,Handler是Android消息机制的上层接口。Handler的运行需要底层的 MessageQueue 和 Looper 的支撑。MessageQueue是一个消息队列,内部存储了一组消息,以队列的形式对外提供插入和删除的工作,内部采用单链表的数据结构来存储消息列表。Lopper会以无限循环的形式去查找是否有新消息,如果有就处理消息,...
2019-02-19 16:31:27 186
原创 理解Window和WindowManager
本章重点:indow是一个抽象类,具体实现是 PhoneWindow 。不管是 Activity 、 Dialog 、 Toast 它们的视图都是附加在Window上的,因此Window实际上是View的直接管理者。WindowManager是外界访问Window的入口,通过WindowManager可以创建Window,而Window的具体实现位于WindowManagerSer...
2018-12-19 16:00:22 315
原创 Android动画深入分析
本章重点:Android动画分为三种:View动画帧动画属性动画1 View动画 View动画的作用对象是View,支持四种动画效果:平移缩放旋转透明1.1 View动画的种类 上述四种变换效果对应着Animation四个子类: TranslateAnimation 、 ScaleAnimation 、 RotateAnimation 和 AlphaAnimat...
2018-12-14 18:20:51 292
原创 View的工作原理(二)
本章重点:1 .View的工作流程1.1 measure过程分两种情况:1. View通过 measure 方法就完成了测量过程2. ViewGroup除了完成自己的测量过程还会便利调用所有子View的 measure 方法,而且各个子View还会递归执行这个过程。View的measure过程 直接继承View的自定义控件需要重写 onMeasure 方法并设置 wrap_...
2018-12-07 16:57:18 208
原创 View的工作原理(一)
本章主要内容1. 初识ViewRoot和DecorViewViewRoot的实现是 ViewRootImpl 类,是连接WindowManager和DecorView的纽带,View的三大流(mearsure、layout、draw)均是通过ViewRoot来完成。当Activity对象被创建完毕后,会将DecorView添加到Window中,同时创建 ViewRootImpl 对象,...
2018-11-21 15:13:50 148
原创 View的事件体系(二)
本章重点1.View的事件分发机制1.1 点击事件的传递规则 首先我们先看看下面一段伪代码,通过它我们可以理解到点击事件的传递规则:public boolean dispatchTouchEvent (MotionEvent ev){boolean consume = false;if (onInterceptTouchEvnet(ev){consume = onTouchEven...
2018-11-20 18:16:25 165
原创 Android中的IPC方式-Binder连接池以及选择合适的IPC方式
本节重点 Binder连接池 AIDL是一种最常用的IPC方式,是日常开发中涉及IPC时的首选。前面提到AIDL的流程是 客户端在Service的onBind方法中拿到继承AIDL的Stub对象,然后客户端就可以通过这个Stub对象进行RPC。 那么如果项目庞大,有多个业务模块都需要使用AIDL进行IPC,随着AIDL数量的增加,我们不能无限制地增加Service,我们需要...
2018-09-17 16:58:08 341
原创 Android中的IPC方式 - ContentProvider与Socket
使用ContentProvider 1. ContentProvider是四大组件之其底层实现和Messenger一样是BinderContentProvider天生就是用来进程间通信,只需要实现一个自定义或者系统预设置的ContentProvider,通过ContentResolver的query、update、insert和delete方法即可。 2. 创建ContentPr...
2018-09-14 16:11:41 385
原创 Android中的IPC方式 - AIDL(二)
本章重点总结: 使用AIDL 如果有大量的并发请求,使用Messenger就不太适合,同时如果需要跨进程调用服务端的方法,Messenger就无法做到了。这时我们可以使用AIDL。 流程如下: 1. 服务端需要创建Service来监听客户端请求,然后创建一个AIDL文件,将暴露给客户端的接口在AIDL文件中声明,最后在Service中实现这个AIDL接口即可。 ...
2018-09-06 16:47:25 522
原创 Android中的IPC方式(一)-Messenger
本章重点 IPC主要有以下方式: 1. Intent中附加extras来传递消息 2. 共享文件 3. Binder方式 4. 四大组件之一的ContentProvider 5. Sock 1 使用Bundle 四大组件中的三大组件(Activity、Service、Receiver)都支持在Intent中传递 Bundle 数据。 ...
2018-09-05 16:09:52 353
原创 IPC基础概念介绍
"*"本章内总总结笔记:主要介绍 Serializable 、 Parcelable 、 Binder 。**Serializable接口**1. Serializable 是Java提供的一个序列化接口(空接口),为对象提供标准的序列化和反序列化操作。2. 只需要一个类去实现 Serializable 接口并声明一个 serialVersionUID 即可实现序列化。3. 如果不手动指定 serialVersionUID 的值
2018-08-06 14:51:13 1438
原创 设计模式-享元模式
内存溢出对java应用来说实在是太平常了,有以下两种可能。内存泄露 无意识的代码缺陷,导致内存泄露,JVM不能获得连续的内存空间对象太多 代码写的很烂,产生的对象太多,内存被耗完 业务需求,一个考试系统,登陆后需要填写一下信息:考试科目,选择框考试地点,选择框,根据科目不同,列表不同准考证邮寄地址,输入框 很简单的工厂方法模式,表现层通过工厂方法模式创建对象,然后传递给业...
2018-07-08 22:32:30 286
原创 设计模式-备忘录模式
备忘录模式实例:《预见未来》中男主角可以预见未来,遇到女主角可以反复尝试打动女主角。 原始状态的保留和恢复这块,如何保留一个原始状态,如何恢复一个原始状态才是最重要的,那想想看,我们应该怎么去实现呢?很简单,我们定义一个中间变量,保留这个原始状态。我们先看看类图: 太简单的类图了,state表示所有的状态,changeState方法表示状态变化package com.nextvpu...
2018-06-28 21:40:00 195
原创 设计模式-中介者模式(Mediator Pattern)
中介者模式以实体超市(苏宁、国美等)正常运行的采购业务,销售业务,库存业务之间的配合为例子 先看类图: Purchase负责采购管理,buyIBMComouter是指定了采购IBM电脑,refuseBuyIBM是不再采购IBM了,程序如下:package com.example.xpeng.myapplication;import android.util.Log;/**...
2018-06-24 15:44:59 613
原创 设计模式-原型模式(Prototype Pattern)
我们今天来讲原型模式。我们先通过一个例子来解释一下什么是原型模式。 现在电子账单越来越流行,比如你的信用卡,到月初的时候银行就会发一份电子邮件到你的邮箱中,这个月消费多少,积分多少等等,每个月发一次,但是还有一种也是银行发的邮件你肯定有印象:广告信。电子账单系统一般包括:账单分析、账单生成器、广告信管理、发送队列管理、发送机、退信处理、报表管理等的一个子功能。我们今天来考虑游戏i啊广告信这个模块...
2018-06-24 02:10:46 1003
原创 设计模式-访问者模式
今天来讲访问者模式,现在有这么一个需求,我要把公司中的所有人员信息都打印汇报上去,我们来看类图: 这个类图还是比较简单的,使用了一个模版方法模式,要把所有的信息都打印出来,我们先来看一下抽象类:package com.example.xpeng.myapplication;import android.util.Log;/** * Created by xpeng on 2...
2018-06-18 23:56:32 191
原创 设计模式-责任链模式
责任链模式例子:中国古代女子有“三从四德”的道德规范,就是说一个女性,在没有结婚的时候听父亲的,结婚了之后听丈夫的,丈夫死了听儿子的。要是想出去逛街了,需要请示。作为父亲、丈夫、儿子只有两种选择:要不承担起责任来告诉她允许或不允许逛街,要不就让她请示下一个人。我们来看怎么把“三从”通过我们的程序来实现,需求很简单:通过程序描述一下古代妇女的“三从制度”,好,我们老看类图: 非常简单的类图,这...
2018-06-16 21:46:34 253
原创 设计模式-观察者模式
观察者模式例子:秦王嬴政让李斯监控韩非子 看看李斯怎么监控韩非子,先看类图: 我们来看程序的实现,先看我们的主角韩非子的接口(类似于韩非子这样的人,被观察者角色)package com.nextvpu.myapplication;/** * Created by NEXTVPU on 2018/6/10. * 类似韩非子这样的人,被监控起来了还不知道 */public...
2018-06-16 18:10:14 242
原创 设计模式-组合模式
上大学的时候大家都学过“数据结构”这门课程吧,还记得其中有一节叫“二叉树”吧,考试的时候一定有二叉树的构建和遍历,树状结果在实际项目应用的非常广泛。 咱先说这个最常见的例子,公司的人事管理就是一个典型的树状结构,你想想你公司的结构是不是这样: 从最高的老大,往下一层一层的管理,最后到我们这层小兵,很典型的树状结构(这不是二叉树),我们今天的任务就是把这个树状结构实现出来,并且把它遍历一边,...
2018-06-10 17:59:00 212
原创 设计模式-迭代期模式
现在有个需求,老大让我把项目信息重新打印一份,分析总结一下所有项目存在的问题和解决办法。 很快我设计了一个类图: 类图非常简单,是个程序员都能实现,我们来看看简单的东西:package com.nextvpu.myapplication;/** * Created by NEXTVPU on 2018/6/4. * 定义一个接口,所有的项目都是一个接口 */publi...
2018-06-04 21:10:15 358
原创 设计模式-装饰模式
装饰模式在中国的使用那实在是多,说话办事都不能太直接,都需要装饰一下。以小时候成绩单需要签名来举例: 先看这个成绩单的类图: 成绩单的抽象类,然后有一个四年级的成绩单实现类,先看抽象类:package com.example.xpeng.myapplication;/** * Created by xpeng on 2018/6/2. * 成绩单的抽象类 */publ...
2018-06-02 23:46:43 208
原创 设计模式-命令模式
命令模式,这个模式从名字上看就很简单,命令嘛,老大发布命令,小兵执行就行咯。 以项目组为例子来讲命令模式 项目组的成员分工也是采用了常规的分工方式,分为需求组、美工组、代码组。现在有客户要我们做一个项目,客户和需求组讨论需求,和美工组讨论页面,和代码组讨论实现,告诉他们修改这里,删除这里,增加这些等等。 我们把这个模式用类图表示一下: 这个类图很简单,客户和三个组都有交流,这也合情合理...
2018-06-02 18:19:53 302
原创 设计模式-桥梁模式
今天我要说说我自己,梦想中的我自己,身家过亿,有两个大公司,一个房地产一个服装制造业,两个公司都很赚钱,天天帮我累加财富。我先用类图表示一下我这两个公司: 类图很简单,声明了一个Corp抽象类,定义一个公司的抽象模型,公司首先是要赚钱的,不赚钱谁开公司,先看Corp类的代码:package com.example.xpeng.myapplication;/** * Create...
2018-06-02 15:53:14 632
原创 设计模式-建造者模式
现在有一个大合同,把奔驰、宝马的车辆模型都制作,有额外添加一个需求:汽车的启动、停止、喇叭声音、引擎声音都有客户自己的控制,他想什么顺序就什么顺序。 首先我们得思考了,奔驰宝马都是一个产品,他们有共有的属性。由我生产N多个奔驰和宝马车辆模型,这些车辆模型都有run方法,但具体到每一个模型的run方法可能中间的执行任务的顺序是不同的,客户需要啥顺序,我就给啥顺序,最终用户买走的只能是既定的模型。我...
2018-05-31 07:55:52 218
原创 设计模式-模版模式
模型模式例子:悍马车模型 不考虑使用设计模式,扩展性等都不考虑 类图: 非常简单的实现,你要悍马模型,我给你悍马模型,先写个抽象类,然后两个不同型号的模型实现类,那我们把这个程序实现出来: HummerModel抽象类的程序如下:package com.example.xpeng.myapplication;import android.util.Log;/** * ...
2018-05-30 00:22:48 3889
原创 设计模式-适配器模式
适配器模式:笔记本上的适配器把不同的电压转换成你需要的,比如一个日本的是110V,一个中国的220V。设计模式中的适配器模式一样的作用两个不同的接口,有不同的实现,有一天必须把B接口转换成A接口,怎么办呢?就会用到适配器模式了。 适配器的通用类图如下: 有一个项目分为三大模块:人员信息管理的对象是所有员工的所有信息,然后设计如下类图: 现在需要加入一个借用人员管理,分三部分:基本信息...
2018-05-28 19:28:59 230
原创 设计模式-门面模式
门面模式的例子:写信。写信的过程,先写信的内容,然后写信封,再然后把信放到信封中,封好送邮局。 这个过程还是比较简单的,但是虽然简单,万一你要给十个百个千个人写呢,麻烦咯。还好,现在邮局开发了一个新的业务,你只要把信件的必要信息告诉我,我给你发,我来做这四个过程,你就不要管了,只要把信给我就行了。 我们的类图还是从最原始的状态开始: 先看写信的过程接口,定义了写信的四个步骤:pa...
2018-05-26 23:24:50 144
原创 设计模式-状态模式
状态模式以电梯为例子 电梯有哪些动作(映射到Java中就有多少方法):开门、关门、运行、停止,就这四个动作,用程序来实现一下电梯的动作,先看类图设计: 非常简单的类图,定义一个接口,然后是一个实现类,然后业务类Client就可以调用,并运行起来,先看接口:package com.example.xpeng.statemode;/** * Created by xpeng on...
2018-05-20 16:54:45 535
原创 设计模式-抽象工厂模式
上一次女娲造人忘记给人类定义性别了。 现在需要把八卦炉拆开,一个生产男性的八卦炉,一个是生产女性的八卦炉 /** * Created by xpeng on 2018/5/1. * 定义一个人类的统称 */public interface Human { //首先定义什么是人类 //人是会笑的 public void laugh(); //人类...
2018-05-05 23:18:36 212
原创 设计模式-工厂方法模式
例子:女娲造人 类图: 这个过程我们就用程序来实现,首先定义一个人类的总称:/** * Created by xpeng on 2018/5/1. * 定义一个人类的统称 */public interface Human { //首先定义什么是人类 //人是会笑的 public void laugh(); //人类还会哭 publi...
2018-05-03 00:05:09 169
原创 设计模式-多例模式
多例模式:有上限的多例模式(没上限的多例模式太容易了,和你直接new一个对象没啥区别,不讨论) /** * Created by xpeng on 2018/5/1. * 有时候当皇帝的是儿子其实还有一个太上皇啊 * 有上限的多例模式(没上限的多利模式太容易了,跟new个对象没啥区别) */public class Emperor { private static ...
2018-05-01 15:35:47 278
原创 设计模式-单例模式
单例模式就是单一、独苗的意思。 举例:皇帝 /** * Created by xpeng on 2018/5/1. * 中国历史上一般只会有一个皇帝 */public class Emperor { private static Emperor emperor = null;//定义一个皇帝放在那里,然后给皇帝这个名字 private Emperor(){ ...
2018-05-01 14:51:29 148
原创 设计模式-代理模式
代理模式:我很忙,没空理你,你要找我的代理人。代理人总要知道代理人哪些事情能做哪些事情不能做,那就是两个人具备同一个接口,代理人不能干活,被代理人能干活啊。 例子:西门庆找潘金莲,潘金莲“害羞”啊,咋办,那找代理人啊,嗯,王婆就很合适嘛。/** * Created by xpeng on 2018/4/30. * 定义一种类型的女人,王婆和潘金莲都属于这个类型的女人 */pub...
2018-04-30 14:37:01 151
原创 设计模式-策略模式
策略模式的例子:刘皇叔取老婆,军师三个锦囊,顺利娶回老婆 场景三要素:三个妙计、一个锦囊,一个赵云 赵云是一个干活的人,从锦囊取出妙计,执行 用JAVA程序表示,类图: 三个妙计是同一个类型的东西,那咱先写个接口:/** * Created by xpeng on 2018/4/30. * 首先定一个策略接口,这是诸葛亮老人家给赵云的三个锦囊妙计的接口 */public ...
2018-04-30 13:56:03 176
原创 Android进阶-动画机制和使用
**1. Android View 动画框架** Animation框架定义了透明度、旋转、缩放和位移几种常用的动画,而且控制的是整个View,实现原理是每次绘制视图时View所在的ViewGroup中的drawChild函数获取该View的Animaion的Transformation值,然后调用canvas.concat(transformToApply.getMatrix())...
2018-04-14 16:30:59 743
原创 android进阶-surfaceView的分析和使用
**1.surfaceView与View的区别** View通过刷新来重绘视图,Android系统通过发出VSYNC信号来进行屏幕的重绘,刷新时间间隔为16ms。如果16ms内View完成了需要执行的所有操作,不会在视觉上出现卡顿的感觉,反之,则会出现。 surfaceView的出现就是解决这个问题。 surefaceView和Viewde 区别: (1)View主要适用于主动更新的情况下,
2017-11-26 17:44:38 534
android完美的图片滤镜效果
2020-12-16
理解Window和WindowManager
2018-12-19
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人