第1章 Android应用与开发环境

来源:互联网 发布:淘宝领取虾米会员 编辑:程序博客网 时间:2024/05/21 10:51
    接触了一段时间思维导图,拜读了东尼·伯赞的系列丛书,也常去比较好的的思维导图学习社区逛逛(推荐两个
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         
<?xml version="1.0" encoding="utf-8"?><resources><string name="app_name">HelloWorld</string></resources>
         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。
·程序权限说明:
    ①声明运行该应用本身所需的权限
    在<manifest../>元素里添加
    <!-- 声明该应用需要打电话的权限 -->
    <uses-permission android:name="android.permission.CALL_PHONE"/>
 
    ②声明调用该应用所需的权限
    通过应用的各组件元素,如在<activity.../>元素里添加
    <!-- 声明调用该应用需要发短信的权限 -->
    <uses-permission android:name="android.permission.SEND_SMS"/>
·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的容器。
7 0
原创粉丝点击