andorid应用程序结构和activity生命周期

上传人:第*** 文档编号:61906392 上传时间:2018-12-14 格式:PPT 页数:54 大小:1.13MB
返回 下载 相关 举报
andorid应用程序结构和activity生命周期_第1页
第1页 / 共54页
andorid应用程序结构和activity生命周期_第2页
第2页 / 共54页
andorid应用程序结构和activity生命周期_第3页
第3页 / 共54页
andorid应用程序结构和activity生命周期_第4页
第4页 / 共54页
andorid应用程序结构和activity生命周期_第5页
第5页 / 共54页
点击查看更多>>
资源描述

《andorid应用程序结构和activity生命周期》由会员分享,可在线阅读,更多相关《andorid应用程序结构和activity生命周期(54页珍藏版)》请在金锄头文库上搜索。

1、Andorid应用程序结构 和Activity生命周期,本次课内容,1,以HelloAndroid为例,详细介绍android工程结构。 2,深入理解android程序运行过程,activity的生命周期。,HelloAndroid,src中是Java程序 res中是各种资源,包括图像、布局和字符串等,他们都有惟一一个ID assets也可放资源,但不会产生ID gen中有一个自动生成的文件R.java ,该文件不能修改,其中存放的是res资源ID Android 2.1-update1中是android.jar包 AndroidManifest.xml是配置文件,HelloAndroid.j

2、ava,Java程序,package com.android.hello; import android.app.Activity; import android.os.Bundle;,HelloAndroid.java,public class HelloAndroid extends Activity /* Called when the activity is first created. */ Override public void onCreate(Bundle savedInstanceState) super.onCreate(savedInstanceState); setC

3、ontentView(R.layout.main); ,R.java,自动生成,不能修改,/* AUTO-GENERATED FILE. DO NOT MODIFY. */ public final class R public static final class attr public static final class drawable public static final int icon=0x7f020000; ,R.java,public static final class layout public static final int main=0x7f030000; pub

4、lic static final class string public static final int app_name=0x7f040001; public static final int hello=0x7f040000; ,main.xml,布局,main.xml,strings.xml,字符串, Hello World, hello! HelloAndroid ,RUN,右键项目名称,选择Run As -Android Application,模拟运行,命令行运行,启动模拟器 emulator -avd android2.1 -skin HVGA-p 连接模拟器: telnet

5、localhost 5554 拨打电话: gsm call 1351112341 发送短信: sms send 1351112341 HelloAndroid,显示图像,增加 ImageView,Android虚拟机Dalvik,Dalvik和标准Java虚拟机(JVM)的差别 Dalvik 更适合手机所用的嵌入式环境,占用内存少。 JVM 通用Java虚拟机。 Dalvik虚拟机特点 Dalvik 允许在有限的内存中同时运行多个虚拟机实例。 每一个Dalvik 应用作为一个独立的Linux 进程执行。 独立进程可防止在虚拟机崩溃的时候所有程序都被关闭。 Dalvik 提供了一个拥有较Java

6、少限制许可证的平台。,重要包的描述,Android.app :提供高层的程序模型、提供基本的运行环境 Android.content :包含各种的对设备上的数据进行访问和发布的类 Android.database :通过内容提供者浏览和操作数据库 Android.graphics :底层的图形库,可以将它们直接绘制到屏幕上. Android.location :定位和相关服务的类 Android.media :提供一些类管理多种音频、视频的媒体接口 A :提供帮助网络访问的类,超过通常的.* 接口 Android.os :提供了系统服务、消息传输、IPC 机制 Android.opengl :

7、提供OpenGL 的工具 Android.provider :提供类访问Android 的内容提供者 Android.telephony :提供与拨打电话相关的API 交互 Android.view :提供基础的用户界面接口框架 Android.util :涉及工具性的方法,例如时间日期的操作 Android.webkit :默认浏览器操作接口 Android.widget :各种UI 元素(大部分可见)在应用程序的屏幕中使用,Android的相关文件类型,Java文件-应用程序源文件 android 本身相当一部分都是用java 编写而成 android 的应用使用java 编程语言。 Cl

8、ass文件-Java编译后的目标文件 Google使用Dalvik 来运行应用程序 Android的class 文件是编译过程中的中间目标文件,需要链接成dex 文件才能在Dalvik 上运行。,Dex文件,Dex文件-Android平台上的可执行文件 Android 虚拟机Dalvik 支持的字节码文件格式。 这种虚拟机执行的并非Java 字节码,而是另一种字节码:dex 格式的字节码。 在编译Java 代码之后,通过Android 平台上的工具可以将Java 字节码转换成Dex 字节码。 Dalvik VM 针对手机程式/CPU 做过最佳化,可以同时执行许多VM 而不会占用太多资源。,Ap

9、k文件,Apk文件-Android上的安装文件 Apk 是Android 安装包的扩展名,一个Android 安装包包含了与该Android 应用程序相关的所有文件。 apk文件将AndroidManifest.xml文件、应用程序代码(.dex 文件)、资源文件和其他文件打成一个压缩包。 一个工程只能打进一个.apk文件。 apk 文件的本质是一个zip包。,AndroidManifest.xml文件,AndroidManifest.xml是每一个应用都需要的文件, 位于应用根目录下,它描述了程序包的全局变量, 包括暴露的应用组件(activities, services等等)和为每个组件的

10、实现类,什么样的数据可以操作,以及在什么地方运行。 主要包括以下各个元素。 A.包名(package):指定本应用内java主程序包的包名。当没有指定apk的文件名时,编译后产生程序包将以此命名。本包名应当在Android系统运行时唯一。 B.认证(certificate):指定本应用程序所授予的信任级别,目前有的认证级别有platform(system)、shared、media以及应用自定义的认证。不同的认证可以享受不同的权限。,AndroidManifest.xml文件,C.权限组(permission-group):权限组的定义是为了描述一组具有共同特性的权限。 D.权限(permis

11、sion):权限用来描述是否拥有做某件事的权力。Android系统中权限是分级的,前分为普通级别(Normal),危险级别(dangerous),签名级别(signature)和系统/签名级别(signature or system)。 系统中所有预定义的权限根据作用的不同,分别属于不同的级别。对于普通和危险级别的权限,我们称之为低级权限,应用申请即授予。其他两级权限,我们称之为高级权限或系统权限,应用拥有platform级别的认证才能申请。当应用试图在没有权限的情况下做受限操作,应用将被系统杀掉以警示。 E.权限树(permission-tree)权限树的设置是为了统一管理一组权限,声明于该

12、树下的权限所有者归属该应用。系统提供了API,应用可以在运行时动态添加。 PackageManager.addPermission() F.使用权限(uses-permission):应用需要的权限应当在此处申请,所申请的权限应当被系统或某个应用所定义,否则视为无效申请。同时使用权限的申请需要遵循权限授予条件,非platform认证的应用无法申请高级权限。 G:SDK(uses-sdk):标识本应用运行的SDK版本。高兼容性的应用可以忽略此项。,AndroidManifest.xml文件,H.application:application是Android应用内最高级别(top level)的模

13、块,每个应用内最多只能有一个application,如果应用没有指定该模块,一个默认的application将被启用。application将在应用启动时最先被加载,并存活在应用的整个运行时生命周期。因此一些初始化的工作适合在本模块完成. Application元素有许多属性,其中:“persistent”表示本应用是否为常驻内存,“enable”表示本应用当前是否应当被加载。,AndroidManifest.xml文件,在AndroidManifest.xml文件中,运行时模块的定义都作为本模块的子元素。当运行时模块被调度时,如果应用没有启动,将首先启动应用进行初始化,然后调度对应模块。 I

14、.activity:activity是application模块的运行时子元素,标识了一个UI。除了application,一个应用可以声明并实现零至多个其它运行时模块,activity也同样。activity也包含了许多定义它工作状态的属性,其中:“name”是必须的,它指定了该activity所在的文件名,如果该文件所属包不同于该应用的包名(即本描述文件的最开始处),那么名字前面需要加入所在包名。activity通过增加intent-fliter来标识哪些intent可以被处理,同时intent也是调度activity的主要参数。 J.receiver:receiver也是applicat

15、ion的运行时子元素。receiver通过增加intent-fliter来标识它需要接受哪些intent。当收到intent后,receiver将根据不同的intent进行不同的处理。当一个Intent发出后,所有注册了该intent的receiver都将会收到,系统会根据receiver在系统中的注册次序顺序发送。当一个receiver处理完该Intent后,系统才会向下一个receiver发送。当一个receiver有多个未接收的intent时,将按照intent发送的次序顺序接收。,AndroidManifest.xml文件,例,intent-filter如下: K.service:se

16、rvice也是application的运行时子元素。Service属于后台模块,启动后将长时间运行,除非停止该service或所在应用进程被杀死。 L.provider:provider也是application的运行时子元素。它继承于ContentProvider,是对该应用管理的用户数据的结构化接入,是基于数据库操作方式的封装。如果应用允许外部应用访问管理它的用户数据,provider是Android平台提供的最佳方式。 M.activity-alias:顾名思义,是已有activity的别名。 N:uses-library:标识应用启动所必须的共享库。,AndroidManifest.xml 结构大纲, 文件根节点, 描述了程序包的所有内容. 请求一个安全授权, 必须被授予该权限, 您的程序包才能正确的操作. 0N 声明一个安全授权, 用来限制哪些应用可以访问您的程序包内的组件和特有机制. 0N 描述程序包内应用级别组件的根节点. 该节点能够

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号