自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 Android自定义view保存状态学习总结

我们在自定义view中有时候会发现如CheckBox状态在Activity被回收后,再打开不能保存正确状态。1、需要保存view的状态,必须要有Id2、系统自带控件的状态保存,系统自动帮助实现了。3、自定义view的自带控件的状态,需要手动调用setSaveEnabled(true),就ok了。4、如果需要保存自定义view的自定义状态,则需要overide重写onSaveInst

2017-09-14 15:31:26 680

原创 learning之状态模式

状态模式:允许一个对象在其内部状态改变时改变它的行为。对象看起来似乎修改了它的类。状态模式的使用场景:1、一个对象的行为取决于它的状态,并且它必须在运行时根据状态改变它的行为;2、代码中包含大量与状态有关的条件语句,例如,一个操作中含有庞大的多分枝语句(if-else 或者 switch-case),且这些分支依赖于该对象的状态,改为用多态来实现的一个具体实例。组成:环

2017-08-22 21:45:11 716

原创 Activity任务和回退栈学习总结

一、Android回退栈、task说明1、Android中task其实是指由ActivityRecord组成的栈,多个task以栈的形式组成了回退栈,ActivityManagerService移动回退栈里的ActivityRecord时以task为单位移动。ActivityManagerService不仅会往回退栈里添加新的ActivityRecord,还会移动回退栈里的Activity

2017-08-03 16:37:43 671

原创 Android中touch事件机制学习总结

Android里View一般是ImageView、textView、Button等继承于View的控件。LinearLayout等的五大布局控件,都是继承自ViewGroup,而ViewGroup本身是继承自View。Android中各类事件均由多个Touch事件构成的(一个ACTION_DOWN, n个ACTION_MOVE,1个ACTION_UP)Android事件机制总是经由先分发d

2017-08-02 17:50:02 373

原创 AsyncTask的实现原理

AsyncTask是对Handler与线程池的封装使用,使得耗时任务在后台执行,同时可以更新主线程ui等操作。通过阅读源码实现,分析内部实现机制:public abstract class AsyncTaskParams:doInBackground方法的参数类型;Progress:AsyncTask所执行的后台任务的进度类型;Result:后台任务的返回结果类型。

2017-07-26 15:56:13 336

原创 learning之观察者模式

观察者模式: 当一个对象变化时,其它依赖该对象的对象都会收到通知,并且随着变化,是一对多的依赖。类似发布订阅,订阅了主题的对象,在主题发生变化时,会收到通知,并做相应更新。图片来自网络://定义观察者接口,当主题有变更时,会通知进行更新public interface Observer { public void update();}//具体的观察者1publi

2017-07-21 13:20:43 276

原创 learning之策略模式

策略模式:定义了一系列的算法,并将每一个算法封装起来,而且使他们可以相互替换,让算法独立于使用它的客户而独立变化。 说明:1、在相同的行为抽象下有不同的具体实现策略2、将策略抽象出来,对客户端提供统一接口,不同具体实现类实现具体策略。这样客户端可以通过切换不同实现类来动态切换策略。图片来自网络://策略的抽象public interface Sor

2017-07-19 13:22:20 268

原创 learning之享元模式

享元模式:享元模式以共享的方式高效地支持大量细粒度对象的重用,就是对象复用,以节省内存和创建消耗。Flyweight:享元对象抽象基类或者接口;ConcreteFlyweight:具体的共享的享元对象;UnsharedConcreteFlyweight:非共享部分;FlyweightFactory:工厂方法管理享元对象池和创建享元对象。图片来自网络:

2017-07-18 13:26:03 258

原创 learning之组合模式

组合模式:将对象组合成树形结构以表示部分-整体的层次结构,使得单个对象和组合对象的使用具有一致性。说明:如果需要体现部分与整体层次结构时,并忽略组合对象与单个对象的不同,对外有统一方式使用组合结构中的所有对象时,就可以考虑该模式。图片来自网络://Component接口public interface IView { public void sho

2017-07-17 13:52:33 297

原创 learning之桥接模式

桥接模式:将抽象部分与实现部分分离,使它们都可以独立的变化。说明:1、桥接模式作用就是为被分离了的抽象部分和实现部分搭桥,两部分都可以独立地进行变化。2、为了独立变化的目的,抽象部分会拥有实现部分的接口对象(即为桥接),从而通过此接口来调用实现部分的功能。图片来自网络:下面例子,WindowManager提供抽象部分对外接口,对窗口Window进行管理,

2017-07-16 21:43:20 474

原创 learning之外观模式

外观模式就是提供一个将类与类之间的关系放在一个Facade中,降低了类与类之间的耦合度。门面(Facade)角色 :对外提供的统一的门面接口。该角色内部管理子系统的关系和逻辑处理分发。子系统(SubSystem)角色 :门面可以管理的内部各个模块。//门面类public class SystemManager{ private Module module=new M

2017-07-16 15:31:12 258

原创 learning之代理模式

代理模式的定义:给某一个对象提供一个代理,并由代理对象控制对原对象的引用。角色:1、ISubject:抽象主题角色,是一个接口。该接口是对象和它的代理共用的接口。2、RealSubject:真实主题角色,是实现抽象主题接口的类。3、Proxy:代理角色,内部含有对真实对象RealSubject的引用,从而可以操作真实对象。//共同抽象接口public interf

2017-07-16 10:09:20 328

原创 learning之装饰者模式

装饰者模式是给一个对象添加一些额外的职责,就象Decorator一下该功能。说明:1、装饰者与被装饰者拥有共同的超类,继承的目的是继承类型,而不是行为。2、要求装饰对象和被装饰对象实现同一个接口,装饰对象持有被装饰对象的实例。//被装饰者脖子统一行为接口public interface Neck{ public void necklace();//项链 publi

2017-07-15 23:47:55 258

原创 learning之适配器模式

Adapter模式主要分为三类:类的适配器模式、对象的适配器模式、接口的适配器模式。角色:1、目标接口(Target):客户所期待的接口。目标可以是具体的或抽象的类,也可以是接口。2、需要适配的类(Adaptee):需要适配的类或适配者类。3、适配器(Adapter):通过包装一个需要适配的对象,把原接口转换成目标接口。 说明:1、通过适配器,客户端

2017-07-14 14:38:01 277

原创 learning之原型模式

原型模式(Prototype):用于对象的复制。Prototype类具备条件:1、java语言中实现Cloneable接口。这样虚拟机可以安全地在实现了此接口的类上使用clone方法。2、重写Object类中的clone方法。说明:1、Object类的clone方法是一个本地方法,它直接操作内存中的二进制流,性能优势比直接new一个对象明显。非常明显适用于重复地创建相似

2017-07-13 13:50:58 699

原创 learning之建造者模式

建造者模式:是将一个复杂的对象的构建与它的内部表示分离,使得同样的构建过程可以创建不同的表示。建造模式是对象的创建模式。如白宫和酒店的建造,基本构建流程一致,如包括打地基、房间主体、装修三个步骤,那么可以将同样的构建过程抽象出来,根据具体建造对象不同表示来完成建造对象。建造者模式有如下几个角色:抽象建造者(Builder)角色:抽象出建造流程的规范。  具体建造者(Conc

2017-07-12 14:19:18 344

原创 learning之工厂方法模式

本篇是工厂类设计模式简单学习示例。一、工厂方法:1、普通(简单)工厂模式,就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。public interface Creator { public void creat();}//实现类:public class Human implements Creator{ @Override publi

2017-07-11 15:20:24 304

原创 微信资源混淆AndResGuard原理

微信的AndResGuard工具是用于android资源的混淆,作用有两点:一是通过混淆资源ID长度同时利用7z深度压缩,减小了apk包大小;二是混淆后在安全性方面有一点提升,提高了逆向破解难度。本文从源码角度,来探寻AndResGuard实现原理。阅读本文需要前提知识:掌握Android应用程序打包编译过程,尤其是对资源的编译和打包过程;熟悉resource.arsc文件格式。推荐罗升阳文章:ht

2017-04-15 12:52:05 5047

空空如也

空空如也

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

TA关注的人

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