摘要:
重拾书本...作者是基于2.2源码分析的,由于我参照的是2.3,有些方法略有不同,我按照2.3的来总结,不过会在不同的地方标记下。第三章 深入理解init知识点1:init概述init是一个进程,而且是Linux系统中用户空间的第一个进程。主要工作概述为:(1)init负责创建系统中的几个关键进程,包括zygote。(2)init提供property service(属性服务)来管理Android系统的属性。这一章是从init如何创建zygote和 init的属性服务如何工作两个方面分析init。知识点2:init工作流程(精简)(1)解析两个配置文件 (init.rc 和 init.hard 阅读全文
随笔档案-2012年11月
android之Parcel机制学习
2012-11-27 22:52 by ...平..淡..., 2824 阅读, 收藏, 编辑
摘要:
Parcel源码的分析,可以参考曹文斌的探索Android中的Parcel机制(上)。本质上把Parcel当成一个Serialize,不同在于它是在内存中完成的序列化和反序列化,利用的是连续的内存空间,因此会更加高效。在Android中,最常见的使用Parcel类的情况是:在Activity间传递数据。在Activity间通过Intent传递数据的时候,可以利用Parcelable机制传递复杂的对象。通过创建一个工程来学习使用Parcel机制。创建Text.java类实现Parcelable接口。package com.cb.test;import android.os.Parcel;impo 阅读全文
关闭cursor的几个注意点
2012-11-27 15:58 by ...平..淡..., 993 阅读, 收藏, 编辑
摘要:
对关闭cursor的案例:案例1:Cursor mCursor = query(...);关闭方法:最好用Try{ ......}finally{ If(mCursor != null) mCursor.close();}因为可能会在关闭cursor前 直接return,那么这个cursor就没有被关闭。而finally中的语句,不管前面是否return,都会执行到!网上找到一个比较有趣的关于return和finally 谁先执行的回答:可以形象的说,方法在顺序化的一直往下走,走着走着,发现了Rerurn(并未执行),它知道它快活不下去了,临死前.他就去找finally,让... 阅读全文
笔记之Android服务
2012-11-26 23:03 by ...平..淡..., 420 阅读, 收藏, 编辑
摘要:
Android 支持两种服务类型的服务:本地服务和远程服务。本地服务(Local Service):用于应用程序内部远程服务(Remote Sercie):用于android系统内部的应用程序之间前者用于实现应用程序自己的一些耗时任务,比如查询升级信息,并不占用应用程序比如Activity所属线程,而是单开线程后台执行,这样用户体验比较好。后者可被其他应用程序复用,比如天气预报服务,其他应用程序不需要再写这样的服务,调用已有的即可。远程服务使用 AIDL(Android Interface Definition Language, Android接口定义语言)向客户端定义其自身。 也就是说,通 阅读全文
装饰者模式
2012-11-22 22:28 by ...平..淡..., 233 阅读, 收藏, 编辑
摘要:
利用继承设计子类的行为,是在编译时静态决定的,而且所有的子类都继承到相同的行为。然而,如果能够利用组合的做法扩展对象的行为,就可以在运行时动态地进行扩展。通过动态地组合对象,可以写新的代码添加新功能,而无须修改现有代码。既然没有改变现有代码,那么引进bug或产生意外副作用的机会将大幅度减少。设计原则类应该对扩展开发,对修改关闭。定义装饰者模式动态地将责任附加到对象上。若需要扩展功能,装饰者提供了比继承更有弹性的替代方案。类图:写个具体的例子(蛋糕~~)来演示下://Cake类public abstract class Cake { public String descriprion = ... 阅读全文
(转)Android WebView总结
2012-11-19 21:53 by ...平..淡..., 692 阅读, 收藏, 编辑
摘要:
今天找资源文件没找到,最后发现是通过WebView组件加载assert文件夹中的html文件。所以找些资料,总结下WebView的用法。转自Android WebView小结在Android手机中内置了一款高性能webkit内核浏览器,在SDK中封装为一个叫做WebView的组件。什么是webkit WebKit是Mac OS X v10.3及以上版本所包含的软件框架(对v10.2.7及以上版本也可通过软件更新获取)。 同时,WebKit也是Mac OS X的Safari网页浏览器的基础。WebKit是一个开源项目,主要由KDE的KHTML修改而来并且包含了一些来自苹果公司的一些组件。 传.. 阅读全文
Head First 设计模式之入门
2012-11-17 15:47 by ...平..淡..., 188 阅读, 收藏, 编辑
摘要:
开启自己的设计模式学习。先来用一个老套的鸭子的例子做介绍,来初涉设计模式领域。Duck具有功能:但继承Duck类的子类在fly和quack方法上,会有改变。修改后,最终效果为:设计原则:(1)从基类找出应用中可能需要变化之处,把它们独立出来,不要把它们和不需要变化的代码混在一起。(把这些需要改变的行为用分别创建接口来表示)(2)针对接口编程,而不是针对实现编程。 (创建子类实现接口,将具体实现放在这些子类中;而不是直接定义在Duck类中,或者Duck的子类中)一、分析:"针对接口编程"真正含义是"针对超类型编程"。针对接口编程,关键在于多态。例子: 针对 阅读全文
观察者模式
2012-11-16 16:13 by ...平..淡..., 226 阅读, 收藏, 编辑
摘要:
观察者模式涉及对象:被观察者类、观察者类。(一对多的关系)观察者模式简单地说:就是当被观察者发生改变时,通知所有观察者。具体做法是(主要部分分析):被观察者类中定义setChanged方法,设置改变;定义notifyObservers方法(该方法中会调用观察者的update方法)通知观察者。观察者类是一个接口,定义update方法。(多个观察者都是实现这个接口)其实就是在被观察者类中定义一个判断条件,当观察者发生变化时,调用setChanged方法(即将判断条件的值置为true);然后调用Observable类的notifyObservers方法,该方法中会调用Observer类的update 阅读全文
(转)DBUS基础知识
2012-11-13 18:21 by ...平..淡..., 498 阅读, 收藏, 编辑
摘要:
API:Message bus APIs1. 进程间使用D-Bus通信D-Bus是一种高级的进程间通信机制,它由freedesktop.org项目提供,使用GPL许可证发行。D-Bus最主要的用途是在Linux桌面环境为进程提供通信,同时能将Linux桌面环境和Linux内核事件作为消息传递到进程。D-Bus的主要概率为总线,注册后的进程可通过总线接收或传递消息,进程也可注册后等待内核事件响应,例如等待网络状态的转变或者计算机发出关机指令。目前,D-Bus已被大多数Linux发行版所采用,开发者可使用D-Bus实现各种复杂的进程间通信任务。2. D-Bus的基本概念D-Bus是一个消息总线系统 阅读全文