首页 > 代码库 > Android Day1_快速入门

Android Day1_快速入门

---1--------------------------------------------------
手机制式
3G、4G中的G:generation
1G:大哥大  通话是锁定在一定频率的
2G:GSM、CDMA等数字手机  稳定的通话质量、可上网WAP等
        GSM:2G网   G
        EDGE:2.5G网   E
3G:网速更快、手机性能变强了  多种媒体形式,提供视频通话等
        3G:       3G   国内3G标准有3个
        3.5G:    H
4G:网速更快,高清在线视频,视频会议等
        TD-LTE:
        FDD-LTE :   
 
 买手机注意网络制式:
 
 2G制式:
     GSM:移动/联通
     CDMA:电信
 3G制式:
     WCDMA:联通            世界范围
     TD-SCDMA:移动       移动、巴基斯坦
     CDMA2000:电信       日本、电信
 4G制式:
     FDD-LTE:电信/联通
     TD-LTE:移动/电信/联通
 1G制式:
     彻底退出历史舞台  
 
2G   拨号上网   带宽12.2K每用户
3G   宽带上网   带宽384~2M每用户
4G   光纤到户   带宽可以达到100M每用户
 
---2----------------------------------------------------------------------
 
JVM和DVM的区别:
技术分享
JVM:
.java->.class->.jar
基于架构:基于栈的架构
栈:内存中的一个数据结构
 
 
DVM:
.java->.class->.dex(有且仅有一个,提高效率)->.apk
基于架构:基于寄存器的架构
寄存器:CPU中的一个存储单元
寄存器里保存的是DVM内存里内容的指针
比如说一个应用,要操作硬盘本地的一个图片的话,第一步把图片读取到内存之中才可以操作,把图片读到内存中的是图片的内存地址,有个指针,JVM内存地址是保存在栈里的,DVM内存地址保存在寄存器中;
 
CPU读取寄存器里内容的速度肯定快于读取栈里的内容的速度,所以这里DVM更快一步了;
 
 
Android的新虚拟机ART:
Dalvik:应用每次运行的时候,字节码都需要通过即时编译器转换为机器码,这会拖慢应用的运行效率。
 
ART:应用在第一次安装的时候,字节码就会预先编译成机器码(预先把Java指令转换为C指令,再把这个C指令保存在本地,下次运行的时候就直接运行预先转换好的C指令),使其成为真正的本地应用,应用的启动和执行速度都会显著提升;
但是ART比Davik应用占用内存更多些,因为ART虚拟机除了保存应用本身的这个字节码之外,还要保存预先编译好的机器码,而不用每次执行再取编译,这是一种牺牲存储效率换执行效率的方式;
 
---3-----------------------------------------------------------------------
 SDK目录结构   见图片
技术分享
---4-----------------------------------------------------------------------
模拟器—创建   见图片
技术分享
RAM是手机的运行内存,是来运行程序的,程序运行的快慢,就看RAM剩余空间了,就是好比电脑内存条;
ROM则是手机的自带空间,让你用来放东西,如电脑里面的硬盘
RAM在断电后不能储存数据,就是说RAM断电后数据就没了,RAM存数据必须要通电
ROM在断电后可以储存数据。
一般硬盘、U盘都属于ROM类型,内存条是RAM
---5-----------------------------------------------------------------
创建Android项目   见视频
Android体系结构
技术分享
 
---6----------------------------------------------------------------
 
Android项目的目录结构
 
Activity:应用被打开时显示的界面
 
--src:项目代码
    |---包 com.ithmac.hello
          |---MainActivity.java
         (java类,这个类是自动生成的,就是最初看到的hello界面,可以改)
--gen:
    |---包 com.ithmac.hello:应用是否可以debug
          |---BuildConfig.java
              (自动生成的,不要去改)
 
          |---R.java :项目中所有资源文件的资源id
               (自动生成的,不要去改)
               (里面有很多静态final类)
               (里面定义了很多静态整型常量:这些静态整型常量全都是在安卓中所使用到的资源id)       
--Android4.3:编译的版本
    |---android.jar-D:\adt-bundl......
        (android的jar包,之所以能用android的API就是因为导入了jar包) 
--Android Dependencies
    |---android-support-v4.jar - D:\workspace\......
      (为了兼容高版本特性能在低版本系统上用,是个兼容包,系统自动导入的,有的情况下可删除,不过是在libs下删除)
      (真实位置是在libs下)
--libs:导入第三方jar包
    |---android-support-v4.jar
      (这里兼容包不是第三方包,但也放在这里)  
--assets:存放资源文件,比方说mp3、视频文件
      (这个文件夹下的资源是没有资源id的,用IO流来读取引用)
--bin:存放应用编译打包后的文件
    |---classes.dex
    |---项目名字.apk
      (eclipse自动打包)
--res:存放资源文件
      (存放在此文件夹下的所有资源文件都会生成资源id)
      (资源id不能出现中文,文件名不能一样,要符合java命名规范)
    |---drowable-hdpi:存放图片资源
       |---center.png                    安
          (72*72)
    |---drpwable-ldpi
        |---center.png
          (屏幕分别率最小)
    |---drpwable-mdpi                卓
        |---center.png
          (48*48)
    |---drpwable-xdpi                  适
        |---center.png
          (96*96)
    |---drpwable-xxdpi                配
        |---center.png
          (144*144)
--layout:存放布局文件,安卓中所有布局文件都是xml文件
      (把布局文件通过资源id指定给activity,界面就会显示出该布局文件定义的布局)
--menu:菜单配置文件夹,保存菜单的配置文件,决定菜单的样式
--values:R.java中没有values内部类
    |---strings.xml:存放字符串资源,每个资源都会有一个资源id,name就是其id
      (R.java中有个string内部类)
    |---dimens.xml:长度资源文件,定义长度的资源id
      (dp:安卓中的长度单位,长度不固定)
      320*480            20dp           20px
      720*1280          20dp           40px
    |---styles.xml:样式和主题资源文件,定义样式和主题,name即是其资源id  
--values-sw600dp
--values-v11
--values-us
1)dimens.xml做屏幕适配的,多个values,每个values下对应一个dimens.xml
2)国际化,多个国家的文字需要多个values,一个values下只能有一个strings.xml ,每个strings.xml对应一种语言,直接创建values-us文件夹就可以 
 
---7--------------------------------------------------------------------
 
Android的配置文件(清单文件)
 
---AndroidMainfest.xml
 
指定应用的包名
<manifest
package="com.itheima.helloworld"
(应用在系统中的唯一识别,和代码包没什么关系,只是碰巧名字一样,也可以起得不一样)
android:versionCode="1"   应用的版本号,谁大谁是高版本  系统看的
android:versionName="1.0"   给人看的
>
<application
android:icon="@drowable/center"    指定downloud中的应用图标
android:label="@string/app_name"  指定downloud中的应用名字
>
      <activity   如果里面没有自己指定的 label,icon,就会用<application里定义的label,icon
        android:name="com.ithemac.hello.MainActivity"
        android:label="@string/lizhi"            指定屏幕应用名字
        android:icon="@drowable/photo2"  指定屏幕应用图标
        >
        <intent-filter>  决定安卓应用的入口界面,哪个界面里有它,哪个界面就是安卓入口界面
            <action android:name="android.intent.action.MAIN"/>
 
            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
 
 
data/data/com.itheima.helloworld(上面代码指定的包名)
 
Android四大基本组件分别是Activity,Service服务,Content Provider内容提供者,BroadcastReceiver广播接收器。
 
Android的四大组件在使用前全部需要在清单文件中配置
 
---project.properties
    target=android-18  这里也可以修改编译版本
 
---8----------------------------------------------------------------------------
程序打包和安卓的过程   见图片
技术分享
技术分享
.apk的安装路径:
   第三方应用保存路径:data/app
   系统应用保存路径:system/app
 
data/data/包名文件夹:
系统为每一个应用所生成专属文件夹,用来保存应用在运行过程中产生的文件
 
1.生成.apk文件
    1)编译所有的.class文件,生成.dex文件
    2)编译resources文件
         1>xml资源文件从文本格式编译转换为二进制格式
         2>生成资源索引表resources.arsc,相当于是一个资源索引表
(Android资源打包工具aapt在编译和打包资源的过程中,会执行以下两个额外的操作:
        1. 赋予每一个非assets资源一个ID值,这些ID值以常量的形式定义在一个R.java文件中。
        2. 生成一个resources.arsc文件,用来描述那些具有ID值的资源的配置信息,它的内容就相当于是一个资源索引表。
有了资源ID以及资源索引表之后,Android资源管理框架就可以迅速将根据设备当前配置信息来定位最匹配的资源了。)
         3>准备未编译文件
         4>清单文件AndroidManifest.xml文件转换为二进制
         5>使用debug.keystore对整个应用程序进行打包、签名
2.加载.apk文件到模拟器中
    把apk文件加载到/data/local/tmp/xxx.apk
    安装完成后系统自动删除.apk安装包
 
3.安装应用
    安装路径:
    第三方应用保存路径:data/app
    系统应用保存路径:system/app
 
    data/data/包名文件夹:
    系统为每一个应用所生成专属文件夹,用来保存应用在运行过程中产生的文件,也是内部存储空间的路径
 
 
 
---9------------------------------------------------------------------------
 
DDMS
Dalvik debug monitor service 
Dalvik虚拟机的调试的监控服务
 
DDMS:
Devices:
罗列出所有当前与你的eclipse所建立连接的安卓设备
File Explorer:
查看文档目录结构
Emulator Control:
模拟器控制
    |---speed:设置模拟器的网速  调试在低网速下会不会有bug
    |---Incoming number:来电号码
       |---SMS:短信(只能发短信,不能收短信,还不能发中文)   
                      (测试和短信相关的代码)
       |---voice:打电话 
 
 DDMS中的选项卡可以直接拖到java界面使用
 
 ---10-------------------------------------------------------------------------
 
ADB:进程  占用5037端口
Android debug bridge(安卓调试桥  )
      1)建立eclipse和android设备之间的连接
 
cmd中可以通过adb指令控制abd进程:
adb start-server    启动adb指令
adb kill-server  杀死adb指令
adb install  E:\yyh.apk 安装adb指令
adb ininstall 应用包名  卸载adb指令   
adb devices 列出与开发环境建立连接的android设备的列表
adb shell 进入安卓的命令行
   |---ls  列出安卓目录  
     |---cd data  进入data目录
   |---ps  列出当前我的安卓设备上的所有进程  
 
netstat -ano(window指令) 查看当前系统环境下端口的占用情况   
因为adb占用端口号是5037,里面应该运行adb相关进程,但有时会被其他流氓程序占用进程,所以把这个流氓进程找出来,杀死
 
---11-------------------------------------------------------------------------------
安卓中布局中所有的组件都要指定宽、高,否则会报错
 
---12 -----------------------------------------------------------------------------
电话拨号器     按钮的点击事件第1种方法:内部类
---13-------------------------------------------------------------------------------------------
按钮的4种点击事件
技术分享
‘,‘hspace‘:null,‘vspace‘:null,‘align‘:null,‘bgcolor‘:null}" />

Android Day1_快速入门