android基础知识(1)

来源:互联网 发布:linux删除用户附加组 编辑:程序博客网 时间:2024/06/05 19:15

android基础知识系列文章,均是本人从网上所的资料,觉得不错便转过来,只为将来温故之用。

 

1、intent分两种:显式intent(Explicit Intent)和隐式Intent(Implicit Intent)。explicit intent 是明确指定启动哪个Activity,比如 Intent intent= new Intent(ActivityA.this, ActivityB.class)。而implicit intent并不明确指定启动那个Activity,而是通过设置一些Intent Filter来让系统去筛选合适的activity来处理。Implicit intent可以让用户选择自己喜欢的Activity来处理,若在系统匹配filter时,发现多个符合目标的activtiy就会弹出对话框让用户来选择Activity。

 

 

2、关于Dalvik虚拟机及apk的生成

每一个Android应用在底层都会对应一个独立的Dalvik虚拟机实例,其代码在虚拟机的解释下得以执行。
很多人认为Dalvik虚拟机是一个Java虚拟机,因为Android的编程语言恰恰就是Java语言。但是这种说法并不准确,因为Dalvik虚拟机并不是按照Java虚拟机的规范来实现的,两者并不兼容;同时还要两个明显的不同:

    * Java虚拟机运行的是Java字节码,而Dalvik虚拟机运行的则是其专有的文件格式DEX(Dalvik Executable)。
    * 在Java SE程序中的Java类会被编译成一个或者多个字节码文件(.class)然后打包到JAR文件,而后Java虚拟机会从相应的CLASS文件和JAR文件中获取相应的字节码;Android应用虽然也是使用Java语言进行编程,但是在编译成CLASS文件后,还会通过一个工具(dx)将应用所有的 CLASS文件转换成一个DEX文件,而后Dalvik虚拟机会从其中读取指令和数据。

 

每一个Android应用都运行在一个Dalvik虚拟机实例里,而每一个虚拟机实例都是一个独立的进程空间。

DEX是Dalvik虚拟机专用的文件格式。一个应用中会定义很多类,编译完成后即会有很多相应的CLASS文件,CLASS文件间会有不少冗余的信息;而DEX文件格式会把所有的CLASS文件内容整合到一个文件中。这样,除了减少整体的文件尺寸,I/O操作,也提高了类的查找速度。如何生成DEX文件呢?Android系统和Dalvik虚拟机提供了工具(DX),在把Java源代码编译成CLASS文件后,使用DX工具。

 

Android应用开发和Dalvik虚拟机Android应用所使用的编程语言是Java语言,和Java SE一样,编译时使用Sun JDK将Java源程序编程成标准的Java字节码文件(.class文件),而后通过工具软件DX把所有的字节码文件转成DEX文件(classes.dex)。最后使用Android打包工具(aapt)将DEX文件,资源文件以及AndroidManifest.xml文件(二进制格式)组合成一个应用程序包(APK)。应用程序包可以被发布到手机上运行。