接触了一段时间思维导图,拜读了东尼·伯赞的系列丛书,也常去比较好的的思维导图学习社区逛逛(推荐两个
http://www.mindmap.com.cn/、 http://bbs.21manager.com/forum.php?mod=forumdisplay&fid=161
)
,
深感思维导图可以应用在很多地方,做读书笔记、总结、报告、计划管理,甚至编程类库也可应用
(如下图,截图自
穆洪星的《
思维导图简要教程》)。
所以,想做一些尝试,之后的笔记都会借助MindManager软件画一张导图,梳理清楚思路脉络;在导图的后面会附上详细介绍说明;末尾还会自问自答,看了这章书之后自己设计一些问题,自己来找答案回答(也欢迎大家评论查漏补缺,有需要思维导图mmap格式的也可以邮箱联系)。
以下是李刚的《疯狂Android讲义》的读书笔记:
废话不多说,上图!
【知识点】
·Android应用框架层:提供大量API
供开发者使用。
·Dalvik虚拟机:
运行dex,基于寄存器,不需要很快的CPU计算和大量的内存空间。
·DX编译:将.clas文件转换为.dex文件。
·res目录:
存放全部资源,不同资源放在不同文件夹内,方便AAPT来扫描,并生成资源清单类R.java;分两种方式:
在Java代码中使用资源:
①字符串资源等 /res/value/string.xml
R.java里为每份资源分别定义一个内部类,其中每个资源项对应内部类里的一个int的Field
//对应一份资源
public static fianl class string{
//对应一个资源项
public static int app_name=0x7f040000;
}
Java代码中可用R.string.app_name来引用"HelloWorld"字符串常量。
②标识符,无须用专门的资源定义,直接在XML文档中分配:@+id/<标识符代号>
android:id="@+id/ok"
Java代码中获取该组件,通过Activity的findViewById()方法即可。
在XML文件中使用资源:
①字符串资源等
@<资源对应的内部类的类名>/<资源项的名称>
@string/app_name
②标识符
在XML文件中获取该组件
@+id/<标识符代号>
·src目录:保存Java源文件。
·AndroidMainfest.xml:
清单文件:
整个Android应用的全局描述文件,说明该应用的名称、所用图标及包含的组件、
兼容的最低版本、使用系统所需的权限声明、其他程序访问它所需的权限声明。
·build.xml:
Ant生成文件,通过它,开发者用Ant来生成、安装项目.
·R.java:
由aapt工具根据资源文件自动生成,是Android应用的资源字典。
规则:
每类资源对应R类的一个内部类;
每个具体资源项对应内部类的一个public static final int类型的Field。
·程序权限说明:
①声明运行该应用本身所需的权限
在元素里添加
②声明调用该应用所需的权限
·Activity和View:
Activity:用户交互
只能通过setContentView(View)或者setContentView(一个布局管理资源的ID)来显示指定组件。
setTheme(int resid)设置窗口风格
Activity栈:多个Activity,当前活动的Activity位于栈顶
View:所有UI控件、容器控件的基类
View组件就是实实在在看到的部分,但需要放在容器组件中,或者使用Activity将它显示出来。
·Service:
通常位于后台运行,没有图形界面。
一个Service被运行后,将拥有自己独立的生命周期,常用于为其他组建提供后台服务或监控其他组件的运行状态。
·BroadcastReceiver:
广播消息接收器,监听的事件源是Android应用中的其他组件
只要实现自己的BroadcastReceiver子类,并重写onReceive(Context context,Intent intent)方法即可。
·ContentProvider:
应用之间的实时的数据交换,当用户实现自己的ContentProvider时,需要实现如下抽象方法:
insert(Uri,ContentValues):向ContentProvider插入数据
delete(Uri,ContentValues):删除ContentProvider中指定数据
update(Uri,ContentValues,String,String[]):更新ContentProvider中指定数据
query(Uri,String[],String,String[],String):从ContentProvider查询数据
一个应用程序使用ContentProvider来暴露自己的数据,而另一个应用程序使用ContentResolver来访问数据。
·Intent和IntentFilter:
不同组件之间通信的载体,当Android运行时需要连接不同的组件时,就需要借助于Intent来实现。
Intent封装了当前组件需要启动或触发的目标组件的信息,当一个组件通过Intent表示了启动或触发另一个组件的“意图”之后,
这个意图可分为两类:
显示Intent:明确指定需要启动或触发的的组件的类名
隐式Intent:只指定需要启动或触发的组件应满足怎样的条件
·签名应用程序:
作用:
确定发布者身份;
确保应用的完整性
方法:
①Eclipse:创建或沿用keystore;
②命令行
【问题】
·问:Dalvik虚拟机和JVM区别?
答:虽然Android应用程序的编程语言是Java,但Dalvik并未完全遵守JVM规范,两者也不兼容。
①实际上,JVM虚拟机运行的是Java字节码,Dalvik运行的是其专有的dex文件,它无法直接从.class文件或JAR包中加载字节码,需
要通过DX工具将应用程序所有的.class文件编译成.dex文件,专有的.dex文件减少了.class文件中的冗余信息,并且把所
有.class文件整合到一个文件中,从而提高运行性能。
②Dalvik虚拟机非常适合在移动终端上使用,相比在PC或服务器上运行的虚拟机,则不需要很快的CPU计算速度和大量内存空间;
③大多数虚拟机(包括JVM)都是基于栈的,而Dalvik虚拟机则是基于寄存器,性能表现更好但是硬件通用性略差。
·问:如果应用程序不调用Activity的
setContentView()来设置该窗口显示的内容,那么程序会显示什么?
答:一个空窗口,实际上Activity是Window的容器。