微信公众号:CodingAndroid cnblog:http://www.cnblogs.com/angel88/ CSDN:http://blog.csdn.net/xinpengfei521 需求:设计一个图片加载工具类. 要求:职责单一.可扩展性强.实现三级缓存,遵循开闭原则. 1.改造前原始代码 package com.anloq.sdk.imageloader;import android.graphics.Bitmap;import android.graphics.BitmapF…
No1: 4种MediaPlayer Factory分别会生成不同的MediaPlayer基类:StagefrightPlayer.NuPlayerDriver.MidiFile和TestPlayerStub.四者均继承与MediaPlayerBase. No2: 抽象工厂模式在android源码中使用极少.对于android开发来说,一个更好的应用是在主题修改上. No3: 优点: 分离接口与实现,客户端使用抽象工厂来创建需要的对象,而客户端根本就不知道具体的实现是谁,客户端只是面向产品的接口…
No1: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 No2: 在Android源码中,最常用到的Builder模式就是AlertDialog.Builder No3: WindowManager在java层的具体实现是WindowManagerImpl,Window对象的setWindowManager函数将Window对象与WindowManager建立了联系 添加View.移除View.更新View的布局等具体的工作都交给了WindowManagerGloba…
1.单一职责原则 Single Respoonsibility Principle(SRP) --封装 2.开闭原则 Open Close Principle(OCP)--对扩展开放,对修改封闭 3.里式替换原则 Liskov Substitution Principle(LSP)--所有引用基类的地方必须能透明地使用其子类的对象 4.依赖倒置原则(依赖反转) Dependence Inversion Principle(DIP)--依赖于抽象,而不依赖于细节(即调动的参数为接口或抽象类,而不是…
No1: 模板方法模式包括:抽象类(其中定义了一系列顺序方法).具体实现类A.具体实现类B 如果子类有实现不一样的细节,重写父类的某个方法即可 No2: AsyncTask对象调用execute方法后会依次执行onPreExecute.doInBackground.onPostExecute或onProgressUpdate. 每次使用AsyncTask时都需要重新创建一个对象 No3: execute方法内部封装了onPreExecute.doInBackground.onPostExecut…
[状态模式] No1: Wifi设置界面是一个叫做WifiSetting的Fragment实现的 No2: 在不同的状态下对于扫描Wifi这个请求的处理是完全不一样的.在初始状态下扫描请求被直接忽略,在驱动加载中状态下Wifi扫描请求被添加到延迟处理的消息列表,在驱动加载完成状态下扫描Wifi的请求直接被处理. 它的实现原理就是将请求的处理封装到状态类中,在不同的状态类中对同一个请求进行不同的处理 [责任链模式] No3: 最大缺点:对链中请求处理者的遍历,如果处理者太多,那么遍历必定会影响性能…
No1: 享元模式是对象池的一种实现.享元模式用来尽可能减少内存使用量,它适合用于可能存在大量重复对象的场景,来缓存可共享的对象,达到对象共享.避免创建过多对象的效果,这样一来就可以提升性能.避免内存移除等. No2: UI不能够在子线程中更新.因为并不是UI不可以在子线程更新,而是UI不可以在不是它的创建线程里进行更新. No3: (1)首先构造Java层的Looper对象,Looper对象又会在构造函数中创建Java层的MessageQueue对象 (2)Java层的MessageQueue…
No1: Activity继承于ContextThemeWrapper,继承于ContextWrapper,继承于Context. No2: Context中方法的所有实现均由ContextImpl类承担. No3: 启动一个Activity需要3个非常重要的对象:Application.Context.Configuration. No4: 一个应用中Context对象的总数应该等于Activity对象与Service对象之和再加上一个Application. No5: 当无法确定使用某个Co…
No1: 定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换.策略模式让算法独立于使用它的客户而独立变化. No2: 使用场景: 1)针对同一类型问题的多种处理方式,仅仅是具体行为有差别时 2)需要安全的封装多种同一类型的操作时 3)出现同一抽象类有多个子类,而又需要使用if-else或者switch-case来选择具体子类时 No3: TimeInterpolator时间插值器的作用是根据时间流逝的百分比来计算出当前属性值改变的百分比,系统预置的有 1)线性插值…
No1: 对于一个应用程序来说,其真正的入口是在ActivityThread类中,ActivityThread中含有我们熟悉的main方法.ActivityThread是一个final类,不能被继承.当Zygote进程孵化出一个新的应用进程猴,会执行ActivityThread的main方法,main方法中做了一些比较常规的逻辑,比如准备Looper和消息队列,然后调用ActivityThread的attach方法将其绑定到ActivityManagerService中,开始不断地读取消息队列中…