代码改变世界

Android.mk简单分析

2013-01-05 22:51 by ...平..淡..., 12601 阅读, 4 推荐, 收藏, 编辑
摘要:LOCAL_PATH:= $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optionalLOCAL_SRC_FILES := $(call all-java-files-under, src)LOCAL_PACKAGE_NAME := SettingsLOCAL_CERTIFICATE := platforminclude $(BUILD_PACKAGE)# Use the folloing include to make our test apk.include $(call all-makefiles-under,$(LOC 阅读全文

《深入理解Android(卷2)》笔记 6.第二章 深入理解Java Binder

2013-01-04 23:43 by ...平..淡..., 1615 阅读, 1 推荐, 收藏, 编辑
摘要:只学习了这一章中与Binder有关的部分。因为这一部分涉及java层的Binder机制,所以就直接来学习下。先整体总结下:1.AMS如何将自己注册到SM中(1)AMS.setSystemProcess--->SM.addService--->getIServiceManager().addService() (2)分析getIServiceManager函数 getIServiceManager--->SMN.asInterface(BinderInternal.getContextObject()) (3)分析getContextObject函数 ge... 阅读全文

《深入理解Android(卷1)》笔记 5.第六章 深入理解Binder

2013-01-04 09:10 by ...平..淡..., 2039 阅读, 1 推荐, 收藏, 编辑
摘要:第六章 深入理解Binder我的简要总结:根据MediaServer的main函数来分析Main_mediaserver.cpp::main int main(int argc, char** argv){ sp<ProcessState> proc(ProcessState::self()); //(1) 获得一个ProcessState实例 sp<IServiceManager> sm = defaultServiceManager();//(2) 调用defaultServiceManager,得到一个IserviceManager LOGI("Serv 阅读全文

《深入理解Android(卷1)》笔记 4.第四章 深入理解zygote

2012-12-17 10:19 by ...平..淡..., 1923 阅读, 0 推荐, 收藏, 编辑
摘要:第4章 深入理解zygote知识点1:zygote分析关于zygote这一部分,我对它的流程归纳如下:(1) app_main.cpp类的main方法,调用AppRuntime类的start方法。(2) 该start方法执行3个过程: (2.1)创建虚拟机:调用startVm方法。 (2.2)注册JNI方法:调用startReg方法。 (2.3)通过JNI调用java方法:env->callStaticVoidMethod方法。分析(2.1) 该方法确定了一些参数,用于创建虚拟机(调用JNI_createJavaVM方法创建虚拟机)(2.2) 为了让java世界使用native方法,所以 阅读全文

《深入理解Android(卷1)》笔记 3.第三章 深入理解init

2012-12-03 17:00 by ...平..淡..., 861 阅读, 0 推荐, 收藏, 编辑
摘要:知识点7:属性服务(与注册表机制机制类似)在init.c中和属性服务相关的代码如下://调用property_init_action方法,该方法调用property_init方法queue_builtin_action(property_init_action, "property_init");//调用property_service_init_action方法,该方法会调用start_property_service方法queue_builtin_action(property_service_init_action, "property_service_in 阅读全文

《深入理解Android(卷1)》笔记 2.第三章 深入理解init

2012-11-30 13:13 by ...平..淡..., 1419 阅读, 0 推荐, 收藏, 编辑
摘要:重拾书本...作者是基于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 阅读全文

android之Parcel机制学习

2012-11-27 22:52 by ...平..淡..., 2813 阅读, 0 推荐, 收藏, 编辑
摘要: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 ...平..淡..., 918 阅读, 0 推荐, 收藏, 编辑
摘要:对关闭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 ...平..淡..., 417 阅读, 0 推荐, 收藏, 编辑
摘要:Android 支持两种服务类型的服务:本地服务和远程服务。本地服务(Local Service):用于应用程序内部远程服务(Remote Sercie):用于android系统内部的应用程序之间前者用于实现应用程序自己的一些耗时任务,比如查询升级信息,并不占用应用程序比如Activity所属线程,而是单开线程后台执行,这样用户体验比较好。后者可被其他应用程序复用,比如天气预报服务,其他应用程序不需要再写这样的服务,调用已有的即可。远程服务使用 AIDL(Android Interface Definition Language, Android接口定义语言)向客户端定义其自身。 也就是说,通 阅读全文

装饰者模式

2012-11-22 22:28 by ...平..淡..., 230 阅读, 0 推荐, 收藏, 编辑
摘要:利用继承设计子类的行为,是在编译时静态决定的,而且所有的子类都继承到相同的行为。然而,如果能够利用组合的做法扩展对象的行为,就可以在运行时动态地进行扩展。通过动态地组合对象,可以写新的代码添加新功能,而无须修改现有代码。既然没有改变现有代码,那么引进bug或产生意外副作用的机会将大幅度减少。设计原则类应该对扩展开发,对修改关闭。定义装饰者模式动态地将责任附加到对象上。若需要扩展功能,装饰者提供了比继承更有弹性的替代方案。类图:写个具体的例子(蛋糕~~)来演示下://Cake类public abstract class Cake { public String descriprion = ... 阅读全文
上一页 1 2 3 4 5 6 7 ··· 15 下一页