android-简述

1.android框架图

   

   SGL:面向嵌入式设备终端的2D图形引擎

   Webkit:提供浏览器引擎

   FreeType:位图和矢量字体的绘制。

   Dalvik虚拟机:与java虚拟机不同,经过优化后,它可以将class文件经过”dx”工具转换成.dex文件格式,

   dex文件格式更紧凑,执行效率更高。每个android应用程序都运行在单独的虚拟机实例上。互不影响,

   而且它可以高效的产生多个虚拟机实例。

2.Android NDK

   android native development kit 简称Android NDK,可以允许你在Android应用程序上使用c/c++编写的组件。

   好处:

  •     java编写的代码容易反编译,而c/c++编写的反编译比较难,所以可以达到保护代码的作用
  •     可以更容易复用第三方的代码库,因为大多数的第三方代码库时c/c++编写的
  •     执行速度更高。
  •     便于移植,较容易运行在其他嵌入式设备中,如使用OpenGL ES 可以同时在Android和iOS设备上运行。
  •     使用NDK方式:1.使用SDK提供的NativeActivity类。2,使用JNI来访问。

3.Android应用程序基础

   应用程序运行时,系统会启动一个Linux进程,并为该应用程序分配一个Linux用户ID,应用程序

   只在程序内部可见,其他程序无法访问,但是可以通过Content Provider将数据暴露给其他应

   用程序。

   一个应用程序,一个进程,一个虚拟机实例。

   Zygote是一个虚拟机进程,同时也是一个虚拟机实例的孵化器。每当系统要执行一个

   应用程序时,Zygote就会fork出一个子进程来执行该应用程序。Zygote进程是在系统启动时就

   已经初始化产生了,它可以通过复制自身,快速提高一个新的虚拟机实例。对于只读的系统库,

   所有的虚拟机实例和Zygote共享同一块内存区域。节省了内存开销。

4.APK文件的结构

  应用程序apk文件是一种能与Zip文件格式兼容的文件。SDK提供了aapt工具,它可以将类文件

  和资源文件打包成apk文件。打包过程:将class文件转换成dex文件生成资源表优化XML文件

   使用appt命令方式:

   1.先将”SDK文件夹/platform-tools”路径添加到Path环境下。

   2.进入Androidproject的bin目录下:输入“appt list <Android应用程序名>.apk”即可

   也可以右键Androidproject,选择Android tools下的export…即可生成apk文件。

   

    在java文件中:对资源的引用,R.resources_type.resources_name 或android.R.resources_type.resources_name (系统自带的资源)。

    在xml文件中:引用方式,@resources_type.resources_name或@android:resources_type.resources_name

5.Intent 使用

  Action:执行的动作。如 Intent.ACTION_VIEW,android.content.Intent.ACTION_CALL

  Data:操作的数据,通常是Uri类型,如 Uri uri=Uri.parse(“smsto:10086”);

  Type: String类型,用来指定Data的MIME类型,“text/plain”,“audio/mp3”等

  Component:由哪个组件(Activity或broadcast)处理该Intent。

  Extras:额外的信息,通常以Bundle形式放入。

  //intent的作用:
    //1.调用浏览器
    Uri uri1=Uri.parse("http://www.baidu.com");//data数据
    Intent intent1=new Intent();
    intent1.setAction(Intent.ACTION_VIEW);
    intent1.setData(uri1);
    //2.电话呼叫功能
    Uri uri2=Uri.parse("tel:10086");
    Intent intent2=new Intent(android.content.Intent.ACTION_CALL,uri2);
    //3.发送短信
    Uri uri3=Uri.parse("smsto:10086");
    Intent intent3=new Intent(Intent.ACTION_SENDTO,uri3);
    intent3.putExtra("sms_body", "welcome to android world");
       //4.发送电子邮件,自己可能有多个邮件客户端,所以用
      //intent.createChooser()创建一个ACTION_CHOOSER的intent
       //1.收件人地址,发送邮件的动作
      Uri uri4=Uri.parse("mailto:123@163.com");
      Intent intent4=new Intent(Intent.ACTION_SEND,uri4);
       //2.自己的邮件客户端,和发送的内容
     intent4.putExtra(Intent.EXTRA_EMAIL, "my@gmail.com");
     intent4.putExtra(Intent.EXTRA_TEXT, "android mail");
        //3.指定data数据的类型,默认值
     intent4.setType("text/plain");
      //createChooser启动intent
    startActivity(Intent.createChooser(intent4, "选择Email客户端"));

 

posted @ 2015-03-11 22:47  beyondbycyx  阅读(315)  评论(0编辑  收藏  举报