1 / 34

Android 入门

android入门

gyro
Télécharger la présentation

Android 入门

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Android开发入门

  2. Outline • Android 简介 • Android 系统架构 • Android 应用开发调试 • Android 主要组件介绍

  3. Outline • Android 简介 • Android 系统架构 • Android 应用开发调试 • Android 主要组件介绍

  4. Android大事件 • 2003年10月,Andy Rubin等人组建Android团队。 • 2005年8月17日,Google低调收购了成立仅22个月的高科技企业Android及其团队。 • 2007年11月5日,组建开放手持设备联盟(Open Handset Alliance): 84家硬件制造商、软件开发商及电信营运商,以Apache开源许可证的授权方式,发布了Android的源代码。 • 2008年10月, 第一部Android智能手机发布。 • 2011年第一季度,Android在全球的市场份额首次超过塞班系统,跃居全球第一。 • 2012年11月数据显示,Android占据全球智能手机操作系统市场76%的份额,中国市场占有率为90%。

  5. Android 版本 • Android 1.5 Cupcake • Android 1.6 Donut • Android2.0/2.0.1/2.1 Eclair • Android 2.2/2.2.1 Froyo • Android 2.3 Gingerbread • Android 3.0-3.2 Honeycomb • Android 4.0/4.0.3Ice Cream Sandwich • Android 4.1/4.2 Jelly bean • Android 5.0 Key lime pie

  6. Outline • Android 简介 • Android 系统架构 • Android 应用开发调试 • Android 主要组件介绍

  7. Android全景结构

  8. Android架构 • Linux Kernel: • Android的核心系统服务依赖于Linux2.6内核,包括安全性、内存管理、进程管理、网络协议栈和驱动模型。 • 隐藏了硬件、网络等相关的细节,为上层提供了一个统一接口。 • 通过HAL接口,分离 framework开发对不同硬件驱动的依赖 • Android的底层实现具备超强的可移植性

  9. Android架构 • Android Runtime: • Dalvik虚拟机,Android的Java虚拟机 • Java基础库 • 为上层JAVA程序提供服务 • 核心的和扩展的类库 • 本地的C/C++实现。 • 开源的SQLite、WebKit、OpenGL • 上层函数调用该层类库必须要通过JNI的导出相应的接口函数

  10. Android架构 • 框架层 • 所有开发所用的SDK类库 • 一些未公开接口的类库和实现 • 整个Android平台核心机制的体现

  11. Android架构 • 应用层 • 系统应用 • 第三方开发的所有应用 • 两者差别,就是系统应用会用一些隐藏的类,而第三方的应用,总是基于SDK提供的类

  12. Outline • Android 简介 • Android 系统架构 • Android 应用开发调试 • Android 主要组件介绍

  13. 开发环境准备 • JDK下载 • http://www.oracle.com/technetwork/java/javase/downloads/index.html • Eclips, Android SDK,ADT 下载: • http://developer.android.com/sdk/index.html • Eclips->windows->perference->android

  14. 简单示例demo • ADT提供了一个新的工程向导,你可以快速的创建一个新的工程或者在现有代码上创建工程。创建工程的步骤如下: • 选择File > New > Project 选择 Android > Android Project, 然后按下 Next • 选择项目内容: • 选择 Create new project in workspace, 为编码创建一个全新的工程。 输入工程名称(project name),基础软件包的名称(the base package name),以及Activity 类的名称。 • 选择Create project from existing source ,为已有代码创建一个工程。如果你想编译运行SDK中提供的示例程序,可以使用这个选项。示例程序的存放在SDK的samples/目录下。 浏览包含已有代码的目录,点击ok,如果目录中包含有可用的android manifest 文件,ADT将为你填写合适的软件包,activity,和应用程序名称。 • 按下Finish. • ADT插件会根据你的工程类型创建合适的文件和文件夹,如下: • src/   包含stub .java Activity文件的文件夹. • res/   资源文件夹. • AndroidManifest.xml 工程清单.

  15. 和Java项目结构相同src文件夹是项目的所有包及源文件(.java)和Java项目结构相同src文件夹是项目的所有包及源文件(.java) R.java是在建立项目时自动生成的,这个文件是只读模式,不能更改,R.java文件是定义该项目所有资源的索引文件。 res文件夹中则包含了项目中的所有资源,比如:程序图标(drawable)、布局文件(layout)、常量(values)等。 AndroidManfest.xml文件则包含了该项目中所使用的Activity、Service、Receiver等。

  16. AndroidManifest.xml

  17. Android的应用包生成过程

  18. DDMS 使用 1. DDMS的简介: • DDMS 的全称是Dalvik Debug Monitor Service • 作用:Debug、为测试设备截屏,针对特定的进程查看正在运行的线程以及堆信息、Logcat、广播状态信息、模拟电话呼叫、接收SMS、虚拟地理坐标等等 • 安装好ADT后会有一个DDMS的perspective

  19. DDMS的使用——Debug 在坐上角的Devices中,选中要Debug的工程,然后点击 图标, 这样便可以进入Debug模式

  20. DDMS的使用emulator control • emulator control也是非常重要的,通过它可以像手机发送短信, 打电话,更新手机位置信息。 • Telephony Status: 通过选项模拟语音质量以及信号连接模式。  • Telephony Actions: 模拟电话接听和发送SMS到测试终端。  • Location Control: 模拟地理坐标或者模拟动态的路线坐标变化并显示预设的地理标识,可以通过以下3种方式: • Manual: 手动为终端发送二维经纬坐标。 • GPX: 通过GPX文件导入序列动态变化地理坐标,从而模拟行进中GPS变化的数值。 • KML: 通过KML文件导入独特的地理标识,并以动态形式根据变化的地理坐标显示在测 试终端

  21. DDMS的使用—信息查看 • 右边窗口中有threads, heap , file explorer选项卡。分别显示线程统计信息,栈信息,以及android的文件系统。 • file explorer非常有用,他可以把文件上传到android手机,或者从手机下载下来,也可以进行删除操作。 • 选中file explorer选项卡后,按下面三个按钮便可实现对android手机文件系统的上传,下载,删除操作。

  22. Outline • Android 简介 • Android 系统架构 • Android 应用开发调试 • Android 主要组件介绍

  23. Android 进程管理 • Android系统会尽可能长的延续一个应用程序进程,但在内存过低的时候,仍然会不可避免需要移除旧的进程。为决定保留或移除一个进程,Android 将每个进程都放入一个“重要性层次”中,依据则是它其中运行着的组件及其状态。重要性最低的进程首先被消灭,然后是较低的,依此类推。 • 前台进程 • 可视进程 • 服务进程 • 背景进程 • 空进程

  24. Android 四大组件 • Activity • Service • BroadcastReceiver • Content Provider

  25. Activity: 每个activity都要继承android.app.Activity类, 并重写其中的某些方法 onCreate() onStart() onResume() onPause() onStop() onDestroy() onSaveInstanceState(Bundle) onRestoreInstanceState(Bundle) Activity

  26.  Android will display the ANR dialog when: No response to an input event (such as key press or screen touch events) within 5 seconds. A BroadcastReceiver hasn't finished executing within 10 seconds. In order to avoid ANR and keep your App responsive, the time-consuming  operations should run in a new thread : AsyncTask , thread/handler/looper Activity

  27. Service • Service • perform long-running operations in the background and does not provide a user interface,ex:play music. • start/stopService • bind/unbindService

  28. Service • Service killed by system? • Not kill:Running a Service in the Foreground • startForeground() and stopForeground() • Restart service : • onStartCommand()  • START_NOT_STICKY/START_STICKY/START_REDELIVER_INTENT

  29. BroadcastReceiver • BroadcastReceiver: • receive intents sent by sendBroadcast(). ex:incoming call, sms, battery change • 2种监听方式: • 程序中动态注册registerReceiver/unregisterReceiver • AndroidManifest.xml中注册 • 生命周期只有十秒左右,如果在 onReceive() 内做超过十秒内的事情,就会报ANR(Application No Response) • 如果需要完成一项比较耗时的工作 , 应该通过发送 Intent 给 Service, 由Service 来完成 ,不能使用子线程来解决

  30. Content Provider • 结构化数据,统一数据访问方式,实现不同应用间数据共享. Ex:联系人 • Content provider提供共享数据, 通过ContentResolver来跟provider的一个实例进行交互。 • 每个contentprovider定义一个唯一的公开的URI,用于指定到它的数据集。一个contentprovider可以包含多个数据集,需要有多个URI与每个数据集对应。URI 格式 : content:// • 通过 Query, insert,update,retrieve, delete 来进行数据的查询修改。

  31. Content Provider 创建ContentProvider共享数据,继承ContentProvider并重写下面方法: public class PersonContentProvider extends ContentProvider{ public booleanonCreate() public Uri insert(Uri uri, ContentValues values) public int delete(Uri uri, String selection, String[] selectionArgs) public int update(Uri uri, ContentValues values, String selection, String[] selectionArgs) public Cursor query(Uri uri, String[] projection, String selection, String[] selectionArgs, String sortOrder) public String getType(Uri uri)} AndroidManifest.xml使用<provider>对该ContentProvider进行配置,为了能让其他应用找到该ContentProvider , ContentProvider采用了authorities(主机名/域名)对它进行唯一标识: <manifest .... > <application android:icon="@drawable/icon" android:label="@string/app_name"> <provider android:name=".PersonContentProvider" android:authorities="cn.itcast.providers.personprovider"/> </application> </manifest>

  32. Intent andIntent Filters • Intent: an abstract description of an action to be performed. • startActivity()来启动一个activity, • 由broadcast Intent()来传递给所有感兴趣的BroadcaseReceiver, • startService()/bindservice()来启动一个service • Intent组成 : • action,data • other parts: category/type/component/extras • IntentFilter : An IntentFilter can match against actions, categories, and data (either via its type, scheme, and/or path) in an Intent. 

  33. 其他开发组件 • UI: • Button,textview,listview , xxxLayout… • Input event: • TouchEvent,KeyDown,multi-touch … • System service: • Location service,telephony service,sensor service, wifi service, usb service … • http://developer.android.com/index.html

  34. QA

More Related