10 2017 档案
摘要: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)--所有引用基类的
阅读全文
摘要:No1: 实现语言无关性的基础仍然是虚拟机和字节码存储格式,虚拟机只与Class文件这种特定的二进制文件格式所关联,并不关心Class的来源是何种语言。 No2: Class文件是一组以8位字节为基础单位的二进制流,整个Class文件本质上就是一张表 No3: 常量池可以理解为Class文件中的资源
阅读全文
摘要:效果图: 需求: 刚进入视频播放页时,屏幕中间有加载进度条 视频播放过程中,视频界面不动了,正在缓冲时,屏幕中间有加载进度条 这里有些坑要注意: 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是基于寄存
阅读全文
摘要:需求:输入密码必须为字母、数字或特殊字符 方法一: 方法二: 方法一是将每个字符转为ASCII码,方法二是将每个字符匹配正则
阅读全文
摘要:No1: 线程安全:当多个线程访问一个对象时,如果不用考虑这些线程在运行环境下的调度和交替执行,也不需要进行额外的同步,或者在调用方进行任何其他的协调操作,调用这个对象的行为都可以获得正确的结果,那这个对象就是线程安全的。 No2: java语言中各种操作共享的数据分为以下5类:不可变、绝对线程安全
阅读全文
摘要:No1. No2. java内存模型规定了所有的变量都存储在主内存中(Main Memory)中 每条线程还有自己的工作内存(Working Memory) 线程的工作内存中保存了被该线程使用到的变量的主内存副本拷贝,线程对变量的所有操作(读取、赋值等)都必须在工作内存中进行,而不能直接读写主内存中
阅读全文
摘要:效果图: 需求:每个item的文字都有两部分是连接可点击 当然需要用到SpannableString和ClickableSpan。 注意: 1.继承ClickableSpan用来改链接颜色和去掉下划线 2.文字的每个部分的链接都要单独生成一个SpannableString和ClickableSpan
阅读全文