- 博客(26)
- 资源 (9)
- 收藏
- 关注
原创 深入理解Android消息处理系统——Message、Looper、Handler
熟悉Windows编程的朋友可能知道Windows程序是消息驱动的,并且有全局的消息循环系统。而Android应用程序也是消息驱动的,按道理来说也应该提供消息循环机制。实际上谷歌参考了Windows的消息循环机制,也在Android系统中实现了消息循环机制。Android通过Looper、Handler来实现消息循环机制,Android消息循环是针对线程的(每个线程都可以有自己的消息队列和消息循环
2015-08-30 21:25:59 412
原创 Android的JSON数据解析
json(Javascript Object Notation)是一种轻量级的数据交换格式,相比于xml这种数据交换格式来说,因为解析xml比较的复杂,而且需要编写大段的代码,所以客户端和服务器的数据交换格式往往通过json来进行交换。尤其是对于web开发来说,json数据格式在客户端直接可以通过javascript来进行解析。一、JSON数据结构 json一共有两种数据结
2015-08-30 08:47:03 365
原创 Android的XML解析
在Android系统提供了3种XML解析器,即Pull解析器、DOM解析器和Sax解析器。开发时可以根据使用场景进行选择。Pull解析器用于处理简单的XML数据,DOM解析器和Sax解析器均可解析复杂的数据,其中DOM解析器是完全加载后才能解析,而SAX解析器可以随时加载随时解析。 在具体的解析器选择上,DOM解析器适合处理文件不大,嵌套的分支比较多,需要反复查询的场景;相比DO
2015-08-29 10:45:08 353
原创 Android的Http网络通信
在Android中针对HTTP进行网络通信有两种:一是HttpURLConnection;二是Apache HTTP客户端。HTTP通信中使用最多的就是Get和Post,Get请求可以获取静态页面,也可以把参数放在URL字符串后面,传递给服务器。Post与Get的不同之处在于Post的参数不是放在URL字符串里面,而是放在http请求数据中。1、HttpURLConnection接口
2015-08-25 21:03:07 1120
原创 Android的Content Provider组件
在Android中,应用程序之间是相互独立的,分别运行在各自的进程中。如果应用程序之间相互共享数据该如何实现呢?例如当我们要发送一条短信时,需要用到联系人应用程序,从中选择要发送的人。在这种情况下,Android提供了应用程序之间相互访问的统一接口,这些接口被定义在Content Provider中,其中包括添加、删除、修改和查询等操作。 ContentProvider定义在an
2015-08-23 16:50:53 449
原创 Android的Broadcast Receiver组件
Broadcast Receiver顾名思义是指广播接收器,它和事件处理机制类似,只不过事件处理机制是程序组件级别的,而广播事件处理机制是系统级别的。我们可以使用Intent来启动一个程序组件,我们可以通过使用sendBroadcast()方法来发起一个系统级别的事件广播来传递消息。我们可以
2015-08-22 12:57:20 490
原创 Android的Service组件
Service是Android系统提供的四种组件之一,顾名思义Service就是运行在后台的一种服务程序,一般很少和用户交互,因此没有可视化界面。定义一个Service类比较简单,只要继承Service类,实现其生命周期中的方法就可以了。一个定义好的Service必须在AndroidManifest.xml配置文件中通过元素声明才能使用。Service中定义了一系列和自身生命周期相关的方法,这些方
2015-08-21 22:52:27 725
原创 Android组件之间的信使Intent
Intent的中文意思是“意图,意向”,可以把它理解为不同组件之间的通信“媒介”或者“信使”。Intent可以启动一个Activity,也可以启动一个service,还可以发起一个广播(Broadcast)。Intent由以下几个部分组成:动作(Action)、数据(Data)、分类(Category)、类型(Type)、组件(Component)和扩展信息(Extra)。通过这些可以启动其他组件
2015-08-20 20:21:31 535
原创 屏幕旋转与Activity的生命周期
旋转屏幕会改变设备配置,设备配置就是用来描述当前状态的一系列特征。这些特征包括:屏幕的方向、屏幕的密度、屏幕的尺寸、键盘类型、底座模式及语言等等。屏幕的旋转同时会影响着Activity的生命周期。‘ 下面通过一个实例来测试一下Activity的生命周期各个方法的调用情况,在这里我们把Activity的所有方法都覆盖,并通过日志的方式来观察运行结果。public class
2015-08-16 15:30:43 501
原创 Activity的生命周期
在Android系统中Activity作为Activity栈(Stack)被管理,当前活动的Activity处于栈顶,之前的非活动Activity被压入下面成为非活动Activity,等待是否可能被恢复为活动状态。在Activity的生命周期中有四个重要的状态:活动 ——显示在屏幕的前面(在栈顶),有焦点并可见暂停——失去焦点,但是它仍然可见停止——失去焦点,不可见销毁——被系统或进程
2015-08-16 09:22:37 538
原创 Android组件之Activity讲解
在Android系统中activity提供可视化的用户界面,一个Android应用通常由多个activity组成。多个activity组成了Activity栈,当前活动的Activity处于栈顶。Activity有自己的生命周期,由Android系统来控制。 创建一个Activity界面一般是继承Activity类(当然也可以继承ListActivity、MapActivity等)
2015-08-15 16:27:32 648
原创 设计模式--备忘录模式
场景— 录入大批人员资料。正在录入当前人资料时,发现上一个人的资料录错了,此时需要恢复上一个人的资料,再进行修改。— Word文档编辑时,突然电脑死机或者断电,再打开时,可以看到word提示你恢复以前的文档。核心— 就死保存某个对象内部状态的拷贝,这样以后就可以将该对象恢复到原先的状态。结构— 源发器类Originator— 备忘录类Mement
2015-08-15 11:51:07 323
原创 设计模式--观察者模式
场景:- 聊天室程序里,服务器创建好后,A,B,C三个客户端连接上来公开聊天。A向服务器发送数据,服务器端聊天数据改变。我们希望将这些聊天数据分别发给其他在线客户。也就是说,每个客户端需要更新服务器端的数据。这个场景我们可以使用观察者模式来处理。我们可以把客户称之为观察者。需要同步给多个观察者的数据封装到对象中,称之为目标。核心- 观察者模式主要用于1:N的通知。当一个对象(目
2015-08-15 09:57:51 288
原创 设计模式--模板方法模式
模板方法模式是编程中经常用到是模式。它定义了一个操作中的算法骨架,将某些步骤延迟到子类中实现。这样,新的子类可以在不改变一个算法结构的前提下重新定义该算法的某些特定步骤。处理某些流程的代码已经都具备,但是其中某个节点的代码暂时不能确定。因此,我们采用模板方法模式,将这个节点的代码实现转移给子类完成。即:处理步骤父类中定义好,具体实现延迟到子类中定义。比如,实现一个算法时,整体步骤很固定。但是,
2015-08-12 21:21:08 336
原创 设计模式--中介者模式
场景假如没有总经理,下面三个部门:财务部,市场部,研发部。财务部要发工资,让大家核对公司需要跟市场部和研发部都通气;市场部要接新项目,需要研发部处理技术、需要财务部出资金。市场部跟各个部门打交道。虽然只有三个部门,但是关系非常乱。实际上,公司都有总经理。各个部门有什么事情都通报到总经理这里,总经理再通知各个相关部门。这就是一个典型的“中介者模式”,总经理起到一个中介、协调的作用。
2015-08-09 20:21:48 355
原创 设计模式--责任链模式
定义将能够处理同一类请求的对象连成一条链,所提交的请求沿着链传递,链上的对象逐个判断是否有能力处理该请求,如果能则处理,如果不能则传递给链上的下一个对象。场景公司里面,请假条的审批过程:如果请假天数小于3天,主任审批。如果请假天数大于等于3天,小于10天,经理审批如果请假天数大于等于15天,小于30天,总经理审批如果大于等于30天,提示拒绝。假如,使用i
2015-08-09 17:30:38 317
原创 设计模式--享元模式
场景内存属于稀缺资源,不要随便浪费。如果有很多完全相同或相似的对象,我们可以通过享元模式,节省内存。核心:享元模式以共享的方式高效地支持大量细粒度对象的重用。享元对象能做到共享的关键是区分了内部状态和外部状态。内部状态:可以共享,不会随环境变化而变化。外部状态:不可以共享,会随着环境变化而变化。比如,围棋软件设计中,每个围棋棋子都是一个对象,有 颜色,形状,大小和位
2015-08-09 16:10:43 342
原创 设计模式--装饰模式
装饰模式职责:— 动态地为一个对象增加新的功能。— 装饰模式是一种用于代替继承的技术,无需通过继承增加子类就能扩展对象的新功能。使用对象的关联关系代替继承关系,更加灵活,同时避免类型体系的快速膨胀。
2015-08-08 22:11:51 385
原创 设计模式--组合模式
使用场景— 把部分和整体的关系用树形结构来表示,从而使客户端可以使用统一的方式处理部分对象和整体对象。组合模式核心:— 抽象构件(Component)角色:定义了叶子和容器构件的共同点。— 叶子(Leaf)构件角色:无子节点— 容器(Composite)构件角色:有容器特征,可以包含子节点。组合模式工作流程分析:— 组合模式为处理树形结构提供了完美的
2015-08-08 16:19:03 271
原创 设计模式--桥接模式
生活中场景-商城系统中常见的商品分类,以电脑为例,如何良好地处理商品分类销售的问题?我们可以用多层继承结构实现下图的关系。问题:— 扩展性问题(类个数膨胀问题)如果要增加一个新的电脑类型:只能手机,则要增加各个品牌下面的类。如果要增加一个新的品牌,也要增加各种电脑类型的类。— 违反单一职责原则桥接模式核心要点:— 处理多层继承结构,处理多
2015-08-08 15:15:28 309
原创 设计模式--代理模式
代理模式的核心作用是通过代理,控制对对象的访问,可以详细控制访问某个对象的方法,在调用这个方法前做前置处理,调用这个方法后做后置处理。从而实现将统一流程代码放到代理类中处理。代理模式的核心角色:
2015-08-08 10:41:37 321
原创 设计模式--适配器模式
适配器模式就是将一个类的接口转换成客户希望的另外一个接口。Adapter模式使得原本由于接口不兼容而不能一起工作的那些类可以在一起工作。 模式中的角色: — 目标接口(Target):客户所期待的接口。目标可以是具体或抽象的类,也可以是接口。 — 需要适配的类(Adaptee):需要适配的类或适配者类。 — 适配器(Adapter) 通过
2015-08-07 23:27:32 334
原创 设计模式--原型模式
原型模式: 通过new产生一个对象需要非常繁琐的数据准备或访问权限,则可以使用原型模式。原型模式就是java中的克隆技术,以某个对象为原型,复制出新的对象。显然,新的对象具备原型对象的特点。 原型模式优势:效率高(直接克隆,避免了重新执行构造过程步骤)。 克隆类似于new,但是不同于new。new创建新的对象属性采用的是默认值。克隆出的对象的属性完全和原型对
2015-08-07 21:04:30 308
原创 设计模式--建造者模式
建造者模式的本质: 分离了对象子组件的单独构造(由Builder类负责)和装配(由Director负责)。从而可以构造出复杂的对象。这个模式适用于:某个对象的构建过程复杂的情况下使用。 由于实现了构建和装配的解耦。不同的构建器,相同的装配,也可以做出不同的对象;相同的构建器,不同的装配顺序也可以做出不同的对象。也就是实现了构建算法、装配算法的解耦,实现了更好的复用。
2015-08-06 22:55:43 318
原创 设计模式--工厂模式
工厂模式: - 实现了创建者和调用者的分离,实例化对象,用工厂方法代替new操作。将选择实现类、创建对象统一管理和控制。从而将调用者跟我们的实现类解耦。 - 详细分类: 1、简单工厂模式 用来生产同一等级结构中的任意产品。(对于增加新的产品,需要修改已有的代码) 2、工厂方法模式 用来生产同一等级结构中的固定产品。
2015-08-02 16:58:14 347
原创 设计模式--单例模式
单例模式的核心作用是保证一个类只有一个实例,并且提供一个访问该实例的全局访问点。 单例模式的优点: - 由于单例模式只生成一个实例,减少了系统性能开销,当一个对象的产生需要比较多的资源时,如读取配置、产生其他依赖对象时,则可以通过在应用启动时直接产生一个单例对象,然后永久驻留内存的方式来解决。 - 单例模式可以在系统设置全局的访问点,优化环境共享资源访问,例
2015-08-02 15:34:43 332
Android Dalvik虚拟机结构及机制剖析(第2卷)
2015-08-17
Android应用开发详解PDF+源码
2015-08-07
Android面试题
2015-07-31
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人