自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

转载 欢迎使用CSDN-markdown编辑器

欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl

2017-05-11 19:01:30 309

原创 RxAndroid使用文档(New)

1 概述RxJava 一个在 Java VM 上使用可观测的序列来组成异步的、基于事件的程序的库.响应式编程是一种基于异步数据流概念的编程模式。数据流就像一条河:它可以被观测,被过滤,被操作,或者为新的消费者与另外一条流合并为一条新的流。Rx并不是一种新的语言,而是一种普通的Java模式,类似于观察者模式(Observer Pattern),可以将它看作一个普通的Java类库。而RxAndroid是

2017-03-05 22:45:52 1977

原创 WebView使用

1 概述WebView是一个基于webkit引擎、展现web页面的控件。Android4.4以后的版本直接使用了Chrome.WebView控件功能强大,除了具有一般View的属性和设置外,还可以对url请求、页面加载、渲染、页面交互进行强大的处理。2 Webview常用方法WebView主要用于解析、渲染Html页面2.1 WebView的状态/**激活WebView为活跃状态,能正常执行网页的

2017-03-05 22:43:47 473

原创 Http之资源

1 概述HTTP协议通过资源才能寻找到请求服务器位置,换句话说资源可以称为各种网络服务的资源地址。2 URIURI是通用的资源标示符,其包含URL和URN两个子集。其中URL是通过描述符的位置来标识资源的;URN是通过名字来标识资源的。3 URL语法基本语法格式如下<scheme>://<user>:<password>@<host>:<port>/<path>;<params>?<query>#<

2016-07-11 18:49:23 602

原创 Http之报文

1 概述HTTP报文是在HTTP程序之间发送的数据块,这些数据块以一些文本形式的元信息(meta-information)开头,描述了报文内容和含义。2 报文流HTTP使用流入(inbound)和流出(outbound)来描述事务处理(transaction)的方向。流入是指报文从客户端或Agent流向源端服务器流出是指报文源端服务器流向客户端或Agent代理3 报文组成HTTP报文由三部分组

2016-07-11 18:48:58 2010 1

原创 mat工具使用

1 概述mat是用于分析java内存泄露的工具之一。2 生成hprof打开Android Device Monitor(或者Eclipse),找到DDMS,如下。第一个图标,是debug 用于调试第二个图标 update heap 更新堆内存第三个图标 Dump HPROF file 用来将堆内存生成HPROF文件。第四个图标 Gause GC 用于触发GC回收内存,一般在

2016-07-11 18:46:15 544

原创 多线程

1 概述2 Runnable为了实现多线程共享同一段代码,一般将共享代码放在runnable中执行,然后new一个runnable出来,给3个thread共享运行。3 interrupted可以在 Thread 对象上调用 isInterrupted()方法来检查任何线程的中断状态。这里需要注意:线程一旦被中断,isInterrupted()方法便会返回 true,而一旦 sleep()方法抛出异常

2016-07-11 18:43:09 1738 2

原创 编译kernel perl版本bug

最近升级了一下MAC系统,突然发现android的Linux kernel无法编译通过了,报了如下错误 Can't use 'defined(@array)' (Maybe you should just omit the defined()?) at kernel/timeconst.pl line 373. 其实,提示的错误信息已经明确告诉你了,你应该省略defined().这里,我们打

2016-03-14 17:08:49 1238

原创 Android 事件拦截机制

1 概述由于android系统是的控件是基于View和ViewGroup的树形结构,其控件嵌套后使用,故Activity,ViewGroup和View之间存在事件传递的问题。事件传递涉及到三个方法:dispatchTouchEvent 事件的分发,通常是由上层(viewgroup)向下层(view)分发onInterceptTouchEvent 事件的拦截,阻止事件继续分发。此方法view是没有

2016-03-14 15:46:03 509

原创 设计模式之策略模式

1 概述策略模式(Strategy) :定义一系列的算法,将每一个算法封装到具有共同接口的独立的类中, 并且使它们可相互替换。其类图如下所示:本模式使得算法可独立于使用它的客户而变化。策略模式把行为和环境分开。环境类负责维持和查询行为类,各种算法在具体的策略类中提供。由于算法和环境独立开来,算法的增减,修改都不会影响到环境和客户端。2 使用场景需要提供了一种用多个行为中的一个行为来配置一个类的方法

2016-02-27 11:06:10 315

原创 设计模式之工厂

1 简单工厂就是建立一个工厂类,对实现了同一接口的一些类进行实例的创建。简单工厂的实现比较容易,这里就不再具体分析。2 工厂方法模式(Factory Method)工厂方法模式是简单工厂的扩张,工厂方法模式针对的是一个产品等级结构。其定义了一个用于创建对象的接口,让子类决定实例化哪一个类。 Factory Method的优点是:使一个类的实例化延迟到其子类.使新增一个新对象,只需添加一套对应

2016-02-27 10:59:15 319

原创 Java虚拟机之字节码执行引擎

1 概述虚拟机执行引擎是Java虚拟机最核心的部分之一,其目的是实现:输入字节码文件,将字节码解析或等效处理后,执行并输出结果。其中两种执行方式:解释执行和编译执行。2 运行时栈帧结构栈帧(Stack Frame)是用于支持虚拟机进行方法调用和方法执行的数据结构,他是虚拟机运行时数据区中的虚拟机栈(Virtual Machine Stack)的栈元素。栈帧存储了方法的局部变量表、操作数栈、动态连接、

2016-01-26 09:35:47 1367

原创 Java虚拟机之内存模型

1 概述Java内存模型(JMM)是Java虚拟机规范中定义的一种用于屏蔽各种硬件和操作系统的内存访问差异,以实现Java平台到达统一访问内存的效果。Java内存模型的目标是定义程序中各个变量(指实例字段,静态字段,构成数组对象的元素;不包括局部变量,方法参数与异常处理参数这些线程私有变量)的访问规则。即虚拟机中变量存储到内存和从内存取出的规则。JMM属于语言级的内存模型,它确保在不同的编译器和不同

2016-01-26 09:33:26 397

原创 Java类加载机制

1 概述虚拟机将class文件加载进内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型的过程,为Java类加载机制。Java加载机制的生命周期:加载 验证 准备 解析 初始化 使用 卸载 7个阶段。在Java语言中,类的加载,连接和初始化都是在程序运行期间完成的。2 初始化有且仅有以下情况下,若类没有初始化过,必须初始化:遇到new getstatic putst

2016-01-26 09:31:50 565

原创 Java虚拟机之类文件结构

1、概述Java编译生成的class文件是运行在JVM虚拟机上的标准。2. ClassFileclass文件是一组以8位字节为基础单位的二进制流。各个数据项目严格排序,没有任何分隔。遇到大于8位的情况,会分隔然后将高8位放在前面。class文件结构定义如下ClassFile { u4 magic; u2 minor_version;

2016-01-13 19:50:55 933

原创 Java虚拟机之指令集

1 概述Javac编译后的java文件的Code部分最终会保存在class文件的属性表集合的Code字段中。Java虚拟机的指令由一个字节长度的、代表着某种特定操作含义的操作码(Opcode)以及跟随其后的零至多个代表此操作所需参数的操作数(Operands)所构成。对于大部分为与数据类型相关的字节码指令,他们的操作码助记符中都有特殊的字符来表明专门为哪种数据类型服务:i代表对int类型的数据操作,

2016-01-08 18:09:12 2759

原创 Java虚拟机之内存

1 概述Java内存包含以下几部分: 方法区/虚拟机栈/本地方法栈/堆/程序计数器 程序计数器:每个线程都有一个独立的程序计数器,即程序计数器是线程私有的。用以实现多线程切换时恢复状态。其生命周期与线程相同。虚拟机栈:Java虚拟机栈也是线程私有的,其生命周期与线程相同,其描述的是Java方法执行模型,由-Xss设置。内存不足可能造成StackOverflowError/OutOfMe

2016-01-07 15:21:27 382

原创 设计模式之概述

1 概述设计模式总体来说分为三大类:创建型模式,共五种:工厂方法模式、抽象工厂模式、单例模式、建造者模式、原型模式。结构型模式,共七种:适配器模式、装饰器模式、代理模式、外观模式、桥接模式、组合模式、享元模式。行为型模式,共十一种:策略模式、模板方法模式、观察者模式、迭代子模式、责任链模式、命令模式、备忘录模式、状态模式、访问者模式、中介者模式、解释器模式。2 设计模式的六大原则单一职责原

2016-01-07 15:14:34 630

原创 Android开启网络adb调试

1 概述现阶段,调试主机,比如mac,USB口经常不够用,这里提供了一种WiFi调试应用的方法。因为Android官方默认是支持WiFi方式adb的,我们需要做的只是启用它。通过它可以实现支持USB和WiFi同时调试哦!要注意,这一操作比较危险,一旦选择“网络adb调试”,只要同一网段的其他用户获知IP和端口号,就可以任意操作你的手机,而且不会有任何提示2 手机设置首先需要手机端支持远程调试,比如C

2015-12-28 21:53:15 40947

原创 Android Style开发之Theme

1概述Theme是针对窗体设计的,用以改变窗体样式;Style是针对窗体元素的,用以改变指定控件或layout的样式。 Android系统的themes.xml和style.xml文件位于frameworks/base/core/res/res/values中。里面涉及到很多.9.png文件,路径位于frameworks/base/core/res/res/drawable-hdpi2 系统主题分

2015-12-25 11:37:52 747

原创 Android样式之layer-list

1 概述layer-list可以将多个drawable按照顺序层叠在一起显示。layer-list可以作为根节点,也可以作为selector中item的子节点。layer-list可以添加多个item子节点,每个item子节点对应一个drawable资源,按照item从上到下的顺序叠加在一起,再通过设置每个item的偏移量就可以看到阴影等效果了.layer-list对应的实体类:LayerDrawa

2015-12-22 15:21:09 1380

原创 Android Style之属性动画

1 概述视图动画只能作用于view,改变的是view的绘制效果,而不是view的属性。视图动画放置在anim中。属性动画改变的是属性。属性动画放在animator目录下。1.1属性动画的原理属性动画要求动画作用的对象提供该属性的get和set方法,属性动画根据你传递的该属性的初始值和最终值,以动画的效果多次去调用set方法,每次传递给set方法的值都不一样,确切来说是随着时间的推移,所传递的值越来越

2015-12-22 15:19:36 4166

原创 Android样式的开发之drawable

0 概述res/drawable目录下是Android用来存放图片资源文件的路径。这里除了有常规的图片外,还支持selector/shape等定制或自定义图片。资源命名规则下面将详细分析:1.1 StateListDrawable见selector部分详细分析1.2 GradientDrawable见shape分析部分1.3 ShapeDrawable2 BitmapDrawable对应的xml标签

2015-12-22 15:18:28 1872

原创 Android 样式开发之shape

1 概述shape,是Android最基础的形状定义工具。一般用shape定义的xml文件存放在drawable目录下,而不是其他drawable-x的目录。shape用于定义单一的形状。shape对应的实体类是GradientDrawable 使用shape可以定义四种类型的形状:rectangle: 矩形,默认的形状,可以画出直角矩形、圆角矩形、弧形等oval: 椭圆形,用得比较多的是画正圆

2015-12-22 15:11:17 631

原创 Android样式开发之selector

1 概述selector标签,可以添加一个或多个item子标签,而相应的状态是在item标签中定义的。selector一般用于改变不同状态下的控件背景、图片文字颜色等属性。例如按钮的按下和弹起。。。定义的xml文件可以作为两种资源使用:drawable和color。作为drawable资源使用时,放于drawable目录下,item必须指定android:drawable属性;作为color资源使

2015-12-22 15:09:02 641

原创 BasePrj使用说明

1、概述BasePrj包含两部分内容:一是公共资源业务等;一是注册登录个人中心模块。其中使用到的第三方库包括:时间传递机制:EventBus;json数据解析:Gson;数据库模块litepal,gif图片显示:giflib等。当然这里还用到了之前提到的VolleySupport和FrescoSupport.2 公共业务该模块位于`com.het.common下.以下是模块UML图: 其中,App

2015-12-15 14:28:04 529

原创 Android Source管理

Android源码是由git管理的。但是Android源码工程比较多,结构复杂,故Google提供了一个Python脚本repo来管理整个仓库。官方提供了完整的repo初始化方法以下为常用的官方未提供的方法查看当前服务器分支命令git --git-dir .repo/manifests/.git/ branch -a查看本地分支命令repo branches或git branch切换本地分支命令

2015-12-14 15:10:53 414

原创 VolleySupport使用说明

1、概述VolleySupport是基于Google的Volley框架,在其基础上简单封装完成的。添加的代码主要位于manager目录下。Volley的源码已经加入到Android Source中,路径为frameworks/volley2 Volley源码分析2.1 功能说明volley提供功能如下:JSON,图像等的异步下载;网络请求的排序(scheduling)网络请求的优先级处理缓存

2015-12-10 17:23:25 376

原创 OpenGL学习笔记

1 概述OpenGL ES是基于OpenGL裁剪的用于Android平台的3D绘图库。主要涉及到的API包有android.opengl //Android GL辅助类,连接OpenGL与Activity Viewjavax.microedition.khronos.egl //EGL管理Display/surface等javax.microedition.khronos.opengles

2015-12-09 17:03:42 2298

原创 FrescoSupport使用说明

1、概述FrescoSupport是基于Facebook开源库Fresco而包装的一个管理类。2、Fresco简介Fresco 是一个强大的图片加载组件,它设计有一个叫做 image pipeline 的模块,负责从网络,从本地文件系统,本地资源加载图片。且包含3级缓存机制(2级内存,1级文件)。Drawees 模块负责图片的显示。2.1 Fresco特性1、在5.0以下系统,Fresco将图片放到

2015-12-09 15:49:26 478

原创 Linux Kernel List

1 链表的数据结构链表是通过指针将一系列数据节点连接成一条数据链的数据结构。相对于数组,链表具有更好的动态性。且对增加删除操作效率高于数组。1.1 单链表单链表是最简单的一类链表,特点是仅有一个指针域指向后续节点。数据结构如图所示:1.2 双链表双链表设计了两个指针域,前驱和后继分别指向上一个节点和下一个节点。双链表可以从两个方向遍历,其数据结构图如下: 1.3 循环链表循环链表的特点是尾节点的后

2015-12-05 22:16:49 468

原创 Java NIO使用分析

1、概述传统的Java io是面向流Stream的,阻塞IO;而nio则是面向缓冲区buffer的,非阻塞的io。区别是流中数据不能移动,而buffer可以移动。Java nio选择器Selectors允许单个线程监控多个通道的输入和输出。Java缓冲区Buffer,本质上其实是一个内存块,可以往里面写入数据,可以从里面读取数据。其被包装成NIO buffer对象,便于操作。 Buffer 一般和

2015-12-03 16:06:09 338

转载 AndroidStudio mac快捷键

Ctrl+G / Ctrl+Alt+Shift+G:查询变量或者函数或者类在哪里被使用或被调用,后者是前者的复杂表现,可以选择查询范围等。Alt+H:查找功能,全局查找F4:查看类继承关系F2:查看文档说明(函数使用说明)Ctrl+E:查看最近打开过的文件Ctrl+Shift+E:查看最近编辑过的文件double Shift:全局查找,这个查看和Alt+H稍稍有些不同,这个是全局文件查找,到文件名称

2015-12-03 10:31:44 364

原创 C++强制类型转换

1、概述传统运转换延续了C的形式,但是只能在数值类型上使用,对于其他类型(引用和指针),标准c++的有以下四种强制类型转换方式:const_cast,reinterpret_cast,static_cast,dynamic_cast2、const_cast用法: const_cast <new_type> (expression)const_cast转换符是用来移除或添加变量的const, vola

2015-12-01 15:34:06 722

原创 GNU __attribute__分析

1 概述__attribute__机制可以设置函数属性(Function Attribute)、变量属性(Variable Attribute)和类型属性(Type Attribute)。主要有用于改变所申明或定义的函数或数据的特性。2 规范语法格式为:__attribute__ ((attribute-list))其位置约束为:放于声明的尾部“;”之前。attribute_适用于函数的声明

2015-11-29 22:12:41 391

原创 CPP Study

1、C++基本语法说明命名空间 namespace 定义:namespace name{ int index; 。。。。。。 } ,大括号内的内容都属于name这个命名空间,用法,name::index,或者先引用using namespace name;然后直接使用index。 c++标准命名空间为std,其所有类库都放在了该命名空间下;2、构造函数对象创建时自己调用构造

2015-11-29 17:36:29 475

原创 c++运算符重载

1、概述基本数据类型间的运算符没有重载的必要,所以运算符重载主要是面向对象之间的。1.1 能够重载的运算符+ - * / % ^ & | ~ ! = < > += -= *= /= %= ^= &= |=<< >> <<= >>= == != <= >= && || ++ -- , ->* -> () []new new[

2015-11-29 16:14:43 344

原创 C++ const

const用法分类1.1 常变量: const 类型说明符 变量名1.2 常引用: const 类型说明符 &引用名1.3 常对象: 类名 const 对象名1.4 常成员函数: 类名::fun(形参) const1.5 常数组: 类型说明符 const 数组名[大小] 1.6 常指针: const 类型说明符* 指针名 ,类型说明符* const 指针名1.7 常函数

2015-11-28 17:43:47 447

原创 Android使用gradle的管理本地Maven服务器

1 环境说明操作系统 Ubuntu 14.04(x64)maven maven3.3.9jdk jdk-1.8.0_65nexus nexus2.11.4gradle gradle2.92安装分别解压缩,然后添加进PATH环境变量。3使用使用maven$M2_HOME/conf/settings.xml: Maven全局配置${USER_HOME}/.m2/s

2015-11-25 11:05:16 3312 2

原创 Handler Looper MessageQueue的应用

1 概述前面几篇介绍了Handler、Looper、MessageQueue的源码实现原理,理解了原理,下一步我们要知道的就是怎么用好这些内容.2 获取Message对象首先,不建议使用new Message方法,而是使用Message.obtain()方法,因为obtain()方法内部有一套消息池机制,首先从消息池获取可用消息,没有的时候才新建消息,这样就避免创建多余的消息对象造成内存浪费。 获

2015-11-23 20:27:40 490

空空如也

空空如也

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

TA关注的人

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