随笔分类 - Android
摘要:【简单工厂、工厂方法、抽象工厂、Builder模式的区别】 No1: 核心定义: 1)简单工厂模式:一个工厂方法创建不同类型的对象 2)工厂方法模式:一个具体的工厂类负责创建一个具体对象类型 3)抽象工厂模式:一个具体的工厂类负责创建一系列相关的对象 4)Builder模式:对象的构建与表示分离,它
阅读全文
摘要:No1: Model一般用来保持程序的数据状态,比如数据存储、网络请求等 No2: Android开发中应用到MVC的地方:比如ListView与Adapter,如果把ListView看作View层,那么Adapter则可以看作Controller,获取ListView展示数据的相关实现类则看作Mo
阅读全文
摘要:No1: 享元模式是对象池的一种实现。享元模式用来尽可能减少内存使用量,它适合用于可能存在大量重复对象的场景,来缓存可共享的对象,达到对象共享、避免创建过多对象的效果,这样一来就可以提升性能、避免内存移除等。 No2: UI不能够在子线程中更新。因为并不是UI不可以在子线程更新,而是UI不可以在不是
阅读全文
摘要:No1: Activity继承于ContextThemeWrapper,继承于ContextWrapper,继承于Context。 No2: Context中方法的所有实现均由ContextImpl类承担。 No3: 启动一个Activity需要3个非常重要的对象:Application、Conte
阅读全文
摘要:需求: 屏幕中间弹出一个对话框,动画效果从中间伸展放大,背景变暗,消失向中间缩小,背景变亮
阅读全文
摘要:需求: 页面顶部搜索框背景色随着列表的滑动而变色,中间有渐变的效果,如下图 思路:布局画两个起始(透明度为1)和结束(透明度为0)状态的layout,根据滑动的距离,起始布局的透明度逐渐变成0,结束布局的透明度逐渐变成1
阅读全文
摘要:No1: 模板方法模式包括:抽象类(其中定义了一系列顺序方法)、具体实现类A、具体实现类B 如果子类有实现不一样的细节,重写父类的某个方法即可 No2: AsyncTask对象调用execute方法后会依次执行onPreExecute、doInBackground、onPostExecute或onP
阅读全文
摘要:【状态模式】 No1: Wifi设置界面是一个叫做WifiSetting的Fragment实现的 No2: 在不同的状态下对于扫描Wifi这个请求的处理是完全不一样的。在初始状态下扫描请求被直接忽略,在驱动加载中状态下Wifi扫描请求被添加到延迟处理的消息列表,在驱动加载完成状态下扫描Wifi的请求
阅读全文
摘要:No1: 定义:策略模式定义了一系列的算法,并将每一个算法封装起来,而且使它们还可以相互替换。策略模式让算法独立于使用它的客户而独立变化。 No2: 使用场景: 1)针对同一类型问题的多种处理方式,仅仅是具体行为有差别时 2)需要安全的封装多种同一类型的操作时 3)出现同一抽象类有多个子类,而又需要
阅读全文
摘要:No1: 4种MediaPlayer Factory分别会生成不同的MediaPlayer基类:StagefrightPlayer、NuPlayerDriver、MidiFile和TestPlayerStub。四者均继承与MediaPlayerBase。 No2: 抽象工厂模式在android源码中
阅读全文
摘要:No1: 对于一个应用程序来说,其真正的入口是在ActivityThread类中,ActivityThread中含有我们熟悉的main方法。ActivityThread是一个final类,不能被继承。当Zygote进程孵化出一个新的应用进程猴,会执行ActivityThread的main方法,mai
阅读全文
摘要:No1: 原型模式使用场景: 1)类初始化需要消耗非常多的资源,这个资源包括数据、硬件资源等,通过原型复制避免这些消耗 2)通过new产生一个对象需要非常繁琐的数据准备货访问权限,这是可以使用原型模式 3)一个对象需要提供给其他对象访问,而且各个调用者可能都需要修改其值时,可以考虑使用原型模式复制多
阅读全文
摘要:No1: 将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示 No2: 在Android源码中,最常用到的Builder模式就是AlertDialog.Builder No3: WindowManager在java层的具体实现是WindowManagerImpl,Window对
阅读全文
摘要:No1: 懒汉单例模式优缺点分析 优点:单例只有在使用时才会被实例化,在一定程度上节约了资源 缺点:第一次加载时需要及时进行实例化,反应稍慢,最大的问题是每次调用getInstance都进行同步,造成不必要的同步开销。 所以这种模式一般不建议使用 No2: Double Check Lock(DCL
阅读全文
摘要:1.单一职责原则 Single Respoonsibility Principle(SRP) --封装 2.开闭原则 Open Close Principle(OCP)--对扩展开放,对修改封闭 3.里式替换原则 Liskov Substitution Principle(LSP)--所有引用基类的
阅读全文
摘要:效果图: 需求: 刚进入视频播放页时,屏幕中间有加载进度条 视频播放过程中,视频界面不动了,正在缓冲时,屏幕中间有加载进度条 这里有些坑要注意: 1.本来我是想通过MediaPlayer.setOnBufferingUpdateListener得到缓冲进度和播放进度比较来判断是否显示,结果发现缓冲进
阅读全文
摘要:No1: Java在内存分配时会涉及到以下区域: 寄存器:我们在程序中无法控制 栈:存放基本类型的数据和对象的引用,但对象本身不存放在栈中,而是存放在堆中 堆:存放用new产生的数据 静态域:存放在对象中用static定义的静态成员 常量池:存放常量 非RAM存储:硬盘等永久存储空间 No2: 栈中
阅读全文
摘要:No1: 虚拟机是指通过软件模拟的具有完整硬件系统功能的、运行在一个完全隔离的环境中的完整计算机系统。 No2: Java虚拟机由如下五个部分组成:一组指令集、一组寄存器、一个栈、一个无用单元收集堆、一个方法区域。 No3: Java虚拟机中有4种寄存器: 1)pc:Java程序计数器 2)opto
阅读全文
摘要:No1: 操作系统层包括各种驱动程序:显示、Flash内存、照相机、音频、WiFi、键盘、蓝牙、Binder IPC、能源管理。 各种库和Android运行环境大多是用C和C++实现的。 Android运行环境主要指虚拟机技术 Dalvik。 Java VM是基于栈的虚拟机,而Dalvik是基于寄存
阅读全文
摘要:效果图: 需求:每个item的文字都有两部分是连接可点击 当然需要用到SpannableString和ClickableSpan。 注意: 1.继承ClickableSpan用来改链接颜色和去掉下划线 2.文字的每个部分的链接都要单独生成一个SpannableString和ClickableSpan
阅读全文