第1章 Android应用与开发环境

    接触了一段时间思维导图,拜读了东尼·伯赞的系列丛书,也常去比较好的的思维导图学习社区逛逛(推荐两个
http://www.mindmap.com.cn/、 http://bbs.21manager.com/forum.php?mod=forumdisplay&fid=161 深感思维导图可以应用在很多地方,做读书笔记、总结、报告、计划管理,甚至编程类库也可应用 (如下图,截图自 穆洪星的《 思维导图简要教程》)。                          第1章 Android应用与开发环境_第1张图片

    所以,想做一些尝试,之后的笔记都会借助MindManager软件画一张导图,梳理清楚思路脉络;在导图的后面会附上详细介绍说明;末尾还会自问自答,看了这章书之后自己设计一些问题,自己来找答案回答(也欢迎大家评论查漏补缺,有需要思维导图mmap格式的也可以邮箱联系)。
以下是李刚的《疯狂Android讲义》的读书笔记:
废话不多说,上图!
第1章 Android应用与开发环境_第2张图片

【知识点】
·Android应用框架层:提供大量API 供开发者使用。
·Dalvik虚拟机:  运行dex,基于寄存器,不需要很快的CPU计算和大量的内存空间。
·DX编译:将.clas文件转换为.dex文件。
·res目录: 存放全部资源,不同资源放在不同文件夹内,方便AAPT来扫描,并生成资源清单类R.java;分两种方式:
    在Java代码中使用资源:
          ①字符串资源等 /res/value/string.xml            


	HelloWorld
            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的容器。

你可能感兴趣的:(Android,思维导图,疯狂Android讲义)