传智播客学习之Android运行原理

(2010-03-20 22:45:15)

今天终于忙里偷闲,和大家探讨一下android技术,第一次听到3G应该追溯到大学三年级的时候了,记得当时现代通信技术老师给我们提到了3G技术,一直到今天,3G真正开始走入我们的生活,据不完全统计,截止09年年底,中国目前从事Android开发人员不足500人,而我们现在却在一步步走入这个行列,这也无不归功于传智的优秀的课程体系,更加应该归功于像黎活明老师这样执着于技术研究和学习的老师们,虽然android的学习仅仅六天,里面的学习内容以及学习方法和思想已经足够我们在日后开发的需要了,因为这套课程是黎老师经过数个月的研究学习总结出来的一系列知识点以及学习方法,由于目前从事3G开发的人员并不多,所以相关的学习资料也是少之甚少,而黎老师为了教授给我们足够多的东西,为了让我们更容易吸收,花了大量的时间去试验,研究底层源代码,最后形成的这套完美的课程体系,真的感觉是受益匪浅,所以实在忍不住要和大家一起分享下。

一、Android应用程序架构

当我们安装好Android到IDE后,我们可以看到如下程序架构,其中:

l src

java原代码存放目录

l gen

gen 目录中存放所有由Android开发工具自动生成的文件。目录中最重要的就是R.java文件。 这个文件由Android开发工具自动产生的。Android开发工具会自动根据你放入res目录的xml界面文件、图标与常量,同步更新修改R.java文件。正因为R.java文件是由开发工具自动生成的,所以我们应避免手工修改R.java。R.java在应用中起到了字典的作用,它包含了界面、图标、常量等各种资源的id,通过R.java,应用可以很方便地找到对应资源。另外编绎器也会检查R.java列表中的资源是否被使用到,没有被使用到的资源不会编绎进软件中,这样可以减少应用在手机占用的空间。

l Res

在这个目录中我们可以存放应用使用到的各种资源,如xml界面文件,图片或数据。具体请看ppt下方备注栏。

l AndroidManifest.xml

功能清单文件,这个文件列出了应用程序所提供的功能,在这个文件中,你可以指定应用程序使用到的服务(如电话服务、互联网服务、短信服务、GPS服务等等)。另外当你新添加一个Activity的时候,也需要在这个文件中进行相应配置,只有配置好后,才能调用此Activity

l default.properties

项目环境信息,一般是不需要修改此文件

二、编写应用程序思路

在建立一个应用程序,我们先要去配置清单AndroidManifest.xml中指定应用程序的基本信息,例如图标,标题,应用程序名称(相关值的设置可以在values中配置string.xml)等,然后我们需要注册一个activity(一般一个应用程序对应一个activity),然后我们可以注册一下意图。详细说明如下:

<intent-filter>

<action android:name="android.intent.action.MAIN" />

<category android:name="android.intent.category.LAUNCHER" />

</intent-filter>

以上代表意图过滤器,匹配了意图,那么就有activity处理这件事情,例如我们点击图标的时候,被包装成为一个意图intent(action和category两参数),然后android.intent.action.MAIN被包装成为一个action,android.intent.category.LAUNCHER被包装成为一个category,然后有和这两个参数匹配的意图过滤器,相应去找对应的activity

接下来我们需要修改res中的drawable的图标信息,layout(修改布局信息main.xml)以及values(修改字符串信息)。配置好后,进行相应的业务逻辑代码编写,最后发布到手机上即可。

三、运行原理

当我们点击一个应用的时候,系统会自动创建一个相应的activity类实例,然后执行Oncreate方法,接着会执行以下两行代码,解释如下:

super.onCreate(savedInstanceState);一定要执行。完成一些图形的绘制

setContentView(R.layout.main);指定由哪个文件指定布局(main.xml),可以将这个界面显示出来,然后我们进行相关操作,我们的操作会被包装成为一个意图,然后这个意图对应有相关的activity进行处理。

传智播客学习之Android运行原理 (转)的更多相关文章

  1. 传智播客学习之HTML基础语法

    一.基本格式 1.不用区分大小写. 2.HTML代码由<html>开始</html>结束.里面由头部分<head></head>和体部分<body ...

  2. [android视频教程] 传智播客android开发视频教程

    本套视频共有67集,是传智播客3G-Android就业班前8天的的课程量.本套视频教程是黎活明老师在2011年底对传智播客原来的Android核心基础课程精心重新录制的,比早期的Android课程内容 ...

  3. 传智播客.NET视频学习课件

    传智播客.NET视频学习课件访问.NET网站了解更多课程详情http://net.itcast.cn(小提示:为什么本书中超链接打不开?)此套课件是伴随 传智播客.net实况教学视频 (小提示:为什么 ...

  4. 【传智播客】Libevent学习笔记(五):基本类型和函数

    目录 00. 目录 01. 基本类型 1.1 evutil_socket_t类型 1.2 标准类型 1.3 各种兼容性类型 02. 可移植的定时器函数 03. 套接字API兼容性 04. 可移植的字符 ...

  5. 【传智播客】Libevent学习笔记(四):事件event

    目录 00. 目录 01. 事件概述 02. 创建事件 03. 事件的标志 04. 事件持久性 05. 超时事件 06. 信号事件 07. 设置不使用堆分配的事件 08. 事件的未决和非未决 09. ...

  6. 【传智播客】Libevent学习笔记(三):事件循环

    目录 00. 目录 01. event_base_loop函数 02. event_base_dispatch函数 03. event_base_loopexit函数 04. event_base_l ...

  7. 【传智播客】Libevent学习笔记(二):创建event_base

    目录 00. 目录 01. 简介 02. 创建默认的event_base 03. 创建复杂的event_base 3.1 event_config_new函数 3.2 event_base_new_w ...

  8. 传智播客JavaWeb day01 快捷键、XML

    2015-01-14 一直计划着学习java,今天晚上终于下定决心看了下传智播客朴乾老师的javaweb开发视频day01之第一讲,主要内容是开发工具简单介绍.怎么创建工程.Junit的介绍,我是C# ...

  9. 传智播客C语言视频第二季(第一季基础上增加诸多C语言案例讲解,有效下载期为10.5-10.10关闭)

    卷 backup 的文件夹 PATH 列表卷序列号为 00000025 D4A8:14B0J:.│  1.txt│  c语言经典案例效果图示.doc│  ├─1传智播客_尹成_C语言从菜鸟到高手_第一 ...

随机推荐

  1. Tire树(字典树)

    from:https://www.cnblogs.com/justinh/p/7716421.html Trie,又经常叫前缀树,字典树等等.它有很多变种,如后缀树,Radix Tree/Trie,P ...

  2. 学习spring第三天

    Spring第三天笔记 今日内容 Spring的核心之一 -  AOP思想 (1) 代理模式- 动态代理 ① JDK的动态代理 (Java官方) ② CGLIB 第三方代理 (2) AOP思想在Spr ...

  3. Linux] Git: push 出错的解决 master -> master (branch is currently checked out)

      在使用Git Push代码到数据仓库时,提示如下错误: [remote rejected] master -> master (branch is currently checked out ...

  4. DRF一对多序列化和反序列化

    models.py # 商品分类 class Category(models.Model): name = models.CharField(max_length=32) # 商品 class Goo ...

  5. linux c 调用 so 库

    /***********编译时要链接 -l dl 库************/ #include<stdlib.h> #include<stdio.h> #include< ...

  6. [GX/GZOI2019]特技飞行(扫描线+置换)

    感觉是6题中最难的一题,其实这题是一个二合一: 第一问:给定平面上若干点和k个关键点,关键点覆盖一个45°倾斜的正方形范围r,求有多少点被至少一个关键点覆盖.这个可以曼哈顿转切比雪夫距离,然后再扫描线 ...

  7. Java--类以及对象

    什么是类 就是将一类事物的相同的本质特性抽象出来,类具有属性和方法,属性就是特征(具有什么),方法就是行为(能做什么). 类是一种引用的数据类型,类创建的对象的过程叫做实例化 什么是对象 对象就是类中 ...

  8. 序列化模块Serializer

    序列化组件: 知识点:Serializer(偏底层).ModelSerializer(重点).ListModelSerializer(辅助群改) Serializer 序列化准备: 模型层:model ...

  9. 自定义字段从BOM带入生产用料清单

    自定义字段从BOM带入生产用料清单

  10. Docker系列五: docker-compose部署Docker容器

    Docker使用Dockerfile来实现对现有镜像的修改来创建新的镜像, 那docker-compose则完成镜像的自动部署, 可以实现多个容器同时部署 Dockerfile可以让用户管理一个单独的 ...