摘要:
什么是任务栈(Task) 官方文档是这么解释的 任务是指在执行特定作业时与用户交互的一系列 Activity。 这些 Activity 按照各自的打开顺序排列在堆栈(即“返回栈”)中。 其实就是以栈的结构(先进后出)将依次打开的activity记录. 为什么要用任务栈 为了记录用户开启了那些acti 阅读全文
摘要:
该类其实就是普通使用的Adapter的一个包装类,就是为了添加header和footer而定义的。该类一般不直接使用,当ListView有header和footer时,ListView中会自动把Adapter封装成一个HeaderViewListAdapter。源码很简单,相信都能看懂的。下面是an 阅读全文
摘要:
【转载自 http://blog.csdn.net/yanbober 】 1 背景 Android异步处理机制一直都是Android的一个核心,也是应用工程师面试的一个知识点。前面我们分析了Handler异步机制原理(不了解的可以阅读我的《Android异步消息处理机制详解及源码分析》文章),这里继 阅读全文
摘要:
Android的注解有编译时注解和运行时注解,本文就介绍下运行时注解。 其实非常简单,直接上代码:本文主要是替代传统的findViewById()的功能,就是在我们Activity中不需要再使用findViewById()去给View赋值了,通过注解在运行阶段自动赋值。以及setOnClickLis 阅读全文
摘要:
四大图片缓存基本信息 Universal ImageLoader 是很早开源的图片缓存,在早期被很多应用使用。 Picasso 是 Square 开源的项目,且他的主导者是 JakeWharton,所以广为人知。 Glide 是 Google 员工的开源项目,被一些 Google App 使用,在去 阅读全文
摘要:
随着时代的发展,Android的状态栏都不是乌黑一片了,在Android4.4之后我们可以修改状态栏的颜色或者让我们自己的View延伸到状态栏下面。我们可以进行更多的定制化了,然而有的时候我们使用的是淡色的颜色比如白色,由于状态栏上面的文字为白色,这样的话状态栏上面的文字就无法看清了。因此本文提供一 阅读全文
摘要:
从JDK1.5开始,Java在java.net包下提供了Proxy和ProxySelector两个类,其中Proxy代表一个代理服务器,可以在打开URLConnection连接时指定所用的Proxy实例,也可以在创建Socket连接时指定Proxy实例。而ProxySelector代表一个代理选择器 阅读全文
摘要:
在《重构——改善既有代码的设计》一书中,有一种重构手法叫Encapsulate Collection(封装集群),为了演示该重构手法,我写了四个类,通过对比重构前后的代码,加深对这一重构手法的理解。 类Student有一ArrayList属性,如果没有阅读《重构——改善既有代码的设计》一书,很多人可 阅读全文
摘要:
装饰模式又名包装(Wrapper)模式。装饰模式以对客户端透明的方式扩展对象的功能,是继承关系的一个替代方案。 装饰模式的结构 装饰模式以对客户透明的方式动态地给一个对象附加上一些责任。换言之,客户端并不会觉得对象在装饰前和装饰后有什么不同。装饰模式可以在不使用创造更多子类的情况下,将对象的功能加以 阅读全文
摘要:
http://frodoking.github.io/2015/03/12/android-okhttp/ Android为我们提供了两种HTTP交互的方式:HttpURLConnection 和 Apache HTTP Client,虽然两者都支持HTTPS,流的上传和下载,配置超时,IPv6和连 阅读全文
摘要:
这是一堂关于UML基础知识的补习课;现在我们做项目时间都太紧了,基本上都没有做过真正的class级别的详细设计,更别提使用UML来实现规范建模了;本篇主要就以前自己一直感觉很迷糊的几种class之间的关系进行整理,让我们在真正用UML进行比如类图设计时能够更加清晰明了;以下就分别介绍这几种关系: 继 阅读全文
摘要:
一、观察者模式定义 如上图所示(截取自《Head First Design Patterns》一书),主要包括四个部分: 1. Subject被观察者。是一个接口或者是抽象类,定义被观察者必须实现的职责,它必须能偶动态地增加、取消观察者,管理观察者并通知观察者。 2. Observer观察者。观察者 阅读全文
摘要:
一、组合模式定义 将对象组合成树形结构以表示“部分-整体”的层次结构,使得用户对单个对象和组合对象的使用具有一致性。Compose objects into tree structures to represent part-whole hierarchies. Composite lets cli 阅读全文
摘要:
很多新人不知道从事java开发,具体的发展路径是怎么样的,甚至很多人都不能区分程序猿和攻城师的区别。包括不少小白,从事java开发都半年,甚至1年了,对职业发展还没有清晰的认证。这非常不利于自己的发展,人要往哪走,首先需要明确的是方向。今天,就给大家揭露一下java开发从程序猿到CTO的路线图,以及 阅读全文
摘要:
享元模式 定义:共享元对象,运用共享技术有效地支持大量细粒度对象的复用。如果在一个系统中存在多个相同的对象,那么只需要共享一份对象的拷贝,而不必为每一次使用创建新的对象。 享元模式是为数不多的、只为提升系统性能而生的设计模式,主要作用就是复用大对象(重量级对象),以节省内存空间和对象创建时间。 面向 阅读全文
摘要:
下图说明JVM内存模型和JVM参数的关系: JAVA堆的描述如下: 内存由Perm和Heap组成。其中Heap = {Old + NEW = { Eden , from, to } } JVM内存模型中分两大块: NEW Generation:程序新创建的对象都是从新生代分配内存,新生代由Eden 阅读全文
摘要:
class文件简介及加载 Java编译器编译好Java文件之后,产生.class 文件在磁盘中。这种class文件是二进制文件,内容是只有JVM虚拟机能够识别的机器码。JVM虚拟机读取字节码文件,取出二进制数据,加载到内存中,解析.class 文件内的信息,生成对应的 Class对象: class字 阅读全文
摘要:
代理设计模式 定义:为其他对象提供一种代理以控制对这个对象的访问。 1. 静态代理 静态代理在使用时,需要定义接口或者父类,被代理对象与代理对象都实现相同的接口或者是继承相同父类。 接口:IUserDao.java /** * 接口 */ public interface IUserDao { vo 阅读全文
摘要:
一、 什么是泛型? 泛型(Generic type 或者 generics)是对 简单的理解,就是对类型的参数化,比如我们定义一个类属性或者实例属性时,往往要指定具体的类型,如Integer、Person等等, 但是如果使用了泛型,我们把这些具体的类型参数化,用一个广泛的可以表示所有类型的“类型”T 阅读全文
摘要:
原型模式(Prototype):用原型实例指定创建对象的种类,并且通过拷贝这些原型创建新的对象。 原型模式结构图 原型模式结构图 通俗来说:原型模式就是深拷贝和浅拷贝的实现。 浅拷贝 只实现了值拷贝,对于引用对象还是指向原来的对象。 父类实现clone方法,子类没有实现clone方法,其效果是浅拷贝 阅读全文
摘要:
创建型模式共5种,单例模式、工厂方法模式、抽象工厂模式、建造者模式、原型模式。 单例模式 定义:确保某一个类的实例只有一个,而且向其他类提供这个实例。 单例模式的使用场景:某个类的创建需要消耗大量资源,new一个对象代价太大,如访问IO和数据库等资源,或者避免多次创建该对象消耗内存过多。 懒汉模式是 阅读全文
摘要:
工厂模式:主要用来实例化有共同接口的类,工厂模式可以动态决定应该实例化那一个类。工厂模式的形态工厂模式主要用一下几种形态:1:简单工厂(Simple Factory)。2:工厂方法(Factory Method)。3:抽象工厂(Abstract Factory)。简单工厂(Simple Factor 阅读全文
摘要:
⑴强引用(StrongReference)强引用是使用最普遍的引用。如果一个对象具有强引用,那垃圾回收器绝不会回收它。当内存空间不足,Java虚拟机宁愿抛出OutOfMemoryError错误,使程序异常终止,也不会靠随意回收具有强引用的对象来解决内存不足的问题。 ps:强引用其实也就是我们平时A 阅读全文
摘要:
浏览Heap Dump 可以使用VisualVM浏览heap dump文件的内容,从而快速查看在堆中分配的对象。Heap dumps在主窗口的heap dump子标签页中显示。你可以打开保存在本地的heap dump文件(.hprof)或者使用VisualVM捕获正在运行的程序的heap dumps 阅读全文
摘要:
VisualVM 是一款免费的\集成了多个JDK 命令行工具的可视化工具,它能为您提供强大的分析能力,对 Java 应用程序做性能分析和调优。这些功能包括生成和分析海量数据、跟踪内存泄漏、监控垃圾回收器、执行内存和 CPU 分析,同时它还支持在 MBeans 上进行浏览和操作。 在内存分析上,Jav 阅读全文
摘要:
转载http://my.oschina.net/feichexia/blog/196575 摘要 JDK本身提供了很多方便的JVM性能调优监控工具,除了集成式的VisualVM和jConsole外,还有jps、jstack、jmap、jhat、jstat、hprof等小巧的工具,本博客希望能起抛砖引 阅读全文
摘要:
定义:将一个复杂对象的构建与它的表示分离,使得同样的构建过程可以创建不同的表示。 类型:创建类模式 类图: UML图 四个要素 Builder: 抽象建造者ConcreteBuilder: 具体建造者Director: 指挥者Product: 产品角色 产品类:一般是一个较为复杂的对象,也就是说创建 阅读全文
摘要:
单例模式Singleton 面试的时候,问到许多年轻的Android开发他所会的设计模式是什么,基本上都会提到单例模式,但是对 单例模式也是一知半解,在Android开发中我们经常会运用单例模式,所以我们还是要更了解单例模式才对。 定义:保证一个类仅有一个实例,并提供一个访问它的全局访问点。 单例模 阅读全文
摘要:
介绍下针对移动端的网络优化,不限于 Android,同样适用于 iOS 和 H5。 一个网络请求可以简单分为连接服务器 -> 获取数据两个部分。 其中连接服务器前还包括 DNS 解析的过程;获取数据后可能会对数据进行缓存。 一、连接服务器优化策略 1. 不用域名,用 IP 直连 省去 DNS 解析过 阅读全文
摘要:
HTTP 请求方式: GET和POST的比较 请求包.png 例子.png 响应包.png 例子.png 请求头描述了客户端向服务器发送请求时使用的http协议类型,所使用的编码,以及发送内容的长度,等等。 相应的响应头用来描述服务器回给你对所返回的content的一些描述,服务器类型,我返回的编码 阅读全文
摘要:
1.Activity生命周期理解生命周期就是两张图:第一张图是回字型的生命周期图第二张图是金字塔型的生命周期图 注意点(1)从stopped状态重新回到前台状态的时候会先调用onRestart方法,然后再调用后续的onStart等方法;(2)启动另一个Activity然后finish,先调用旧Act 阅读全文
摘要:
随着项目越来越多,代码的复用就变得异常重要,这时候就要进行模块化编程,就是把一些通用的组件或者类库做成单独的模块,其他项目直接进行引用就好。针对Android开发最常见的就是Android Library,在Gradle出现之前引用Android Library的方式也很繁琐,但是有了Gradle一 阅读全文
摘要:
1.屏幕尺寸信息 屏幕大小:屏幕对角线长度,单位“寸”;分辨率:手机屏幕像素点个数,例如720x1280分辨率;PPI(Pixels Per Inch):即DPI(Dots Per Inch),它是对角线的像素点数除以屏幕大小得到的;系统屏幕密度:android系统定义了几个标准的DPI值作为手机的 阅读全文
摘要:
1.Android控件架构下图是UI界面架构图,每个Activity都有一个Window对象,通常是由PhoneWindow类来实现的。PhoneWindow将DecorView作为整个应用窗口的根View,DecorView将屏幕分成两部分:TitleView和ContentView。Conten 阅读全文
摘要:
1. Dalvik 和 ART(Android Runtime) 在Dalvik中应用好比是一辆可折叠的自行车,平时是折叠的,只有骑的时候,才需要组装起来用。在ART中应用好比是一辆组装好了的自行车,装好就可以骑了。 2. Android源码目录结构:(一个可以查看Android源代码网站:http 阅读全文