• 20169207 2016-2017-2 《移动平台应用开发实践》第十一周作业


    近期任务:最近几天以项目环境搭建,程序基本需求分析和程序数据设计阶段,除了必要的知识储备外,我们还需要了解一些andrid 的其他知识。

    Android是什么?
    Android是一个面向移动设备的软件堆层( software stack),包含了一个操作系统,中间件和关键的应用程序。 Android SDK提供了必要的工具和API,你可以在这些的基础上使用java编程语言开发 Android平台上的应用程序。
    特性
    应用程序框架 支持组件的复用和更换
    Dalvik虚拟机 专门为移动设备进行过优化
    集成的浏览器 基于开源的 WebKit 引擎
    优化的图形机制 自定义的2D图形库,基于OpenGLES 1.0 规范的3D图形实现(本项硬件加速器可选SQLite 轻量级的数据库,支持结构化数据的存储媒体支持 面向常见的音频、视频以及静态图形档案格式 (MPEG4H.264,MP3,AAC,AMR,JPG,PNG,GIF)
    GSM 技术 (依赖硬件支持 )
    Bluetooth , EDGE , 3G,和 WiFi (依赖硬件支持 )
    Camera, GPS, compass,和 accelerometer (依赖硬件支持 )
    丰富的开发环境包含一套硬件仿真器,一些用于程序调试、内存和性能剖析的工具,以及支持Eclipse集成开发环境的插件(ADT)。
    Android 框架
    应用
    Android 将预装一组核心应用程序,包括 email 客户端、短信服务、日历日程、地图服务、浏览器、联系人和其他应用程序。所有应用程序都是 Java编程语言编写的。
    应用框架
    通过提供一个开放的开发平台,开发者使用 Android 可以开发出极为丰富且新颖的应用程序。开发者可以自由地利用设备硬件优势、访问位置信息、运行后台服务、设置闹钟、向状态栏添加通知等等。
    开发者拥有对核心应用程序所使用的相同框架 API 的完全访问权力。应用程序框架的设计
    旨在简化组件的复用;所有应用程序都可以发布其能力。任何应用程序都可以发布自己的功能,然后其他任何应用程序都可以使用这些功能 (需要符合框架强制要求的安全约束 )。这一相同的机制允许用户替换组件。
    所有应用都是一组系统和服务,一般包含:
    一组丰富和可扩展的,可以用来构建应用程序的 视图 组件,含有 lists, grids , text
    boxes, buttons,甚至内嵌网络浏览器
    Content Providers (内容提供器) 使一个应用程序可以访问另外一个应用程序的数据 (如联系人),或者应用程序内部共享自有数据
    Resource Manager (资源管理器),提供对本地化字符串、图形和布局文件等非代码资源的访问通道
    Notification Manager (通知管理器),使所有的应用程序在状态栏显示自定义的警告
    通知
    Activity Manager (活动管理器)负责管理应用程序的生命周期,提供通用导航回退

    Android 包含一组各种各样的 Android 系统组件都在使用的 C/C++ 库。这些功能通过 Android应用程序框架提供给开发者。下面列举一些核心库:
    系统 C 库—— 基于 BSD 的标准 C 系统库(libc )实现,移植到了 Linux 嵌入式设备上
    媒体库 —— 基于 PacketVideo 的 OpenCORE;媒体库支持很多流行音频和视频格式、静
    态图形文件(包括 MPEG4, H。 264, MP3, AAC , AMR , JPG 和 PNG)的播放和录制
    表面管理器 —— 管理对显示子系统访问,无缝组合多个应用程序的二维和三维图形层
    LibWebCore —— 是流行的浏览器引擎,可以支持 Android 浏览器和嵌入式的网页视图
    SGL—— 底层的 2D 图形引擎
    3D 库—— 基于 OpenGL ES 1.0 API 的实现;该类库使用硬件 3D 加速器(有相应硬件时)或者内置的、高度优化的 3D 软件加速机制。
    FreeType—— 支持位图和矢量字体渲染
    SQLite—— 面向所有应用的,强大且轻量级的关系型数据库引擎

    Android 运行时刻 (Android Runtime)
    Android 的核心类库提供 Java类库所提供的绝大部分功能。每个Android应用程序都通过Dalvik虚拟机在自己的进程中运行。Dalvik 被设计来使一台设备有效地运行多个虚拟机。 Dalvik 虚拟机执行的是 Dalvik 格式的可执行文件(.dex) ——
    该格式经过优化,以降低内存耗用到最低。虚拟机是基于寄存器,运行 Java 编译器编译的类,这些类通过 Android 内置的 “dx工具编译成了。 ” dex 格式。
    在一些底层功能,比如线程和低内存管理方面, Dalvik 虚拟机是依赖 Linux 内核的。
    Android 应用程序基础
    Android 应用程序是用 java 语言写的,通过 aapt 工具把编译好的 java 代码和应用程序所需要的所有数据、资源文件打包成 Android 包,即后缀为 .apk 的压缩文件,这个文件是发布应用程序和在移动设备上安装应用程序的媒介,是用户下载到他们设备上的文件。一个 .apk文件中的所有代码同属于一个应用程序。从很多方面来说,每个 android 应用程序都运行在自己的空间里:默认每个应用程序在自己的 Linux 进程中运行,当应用程序中的任何代码需要执行时android 就启动一个的进程,当不再需要或系统资源被其他应用程序请求时 android 就关闭这个进程。每个进程都有其专属的 Java 虚拟机(VM ) ,所以应用程序代码运行时与其他的应用程序是彼此隔离的。默认的,每个应用被赋予一个唯一的 Linux 用户 ID,由于权限设置的原因,一个应用程序的文件只有本用户 (应用程序本身) 可见 —— 当然,也有把他们导出给其他应用程
    序的机制。可以为两个应用程序安排使用同一个用户 ID ,这种情况下他们彼此之间是可以看见对方的文件。为了节约系统资源,拥有相同 ID 的应用也能被安排运行在一个相同的 Linux 进程中,共享同一个虚拟机。
    应用程序组件 (Application Components)
    Android 一个核心特点就是一个应用程序能使用另一个应用程序的元素(在提供元素的
    应用程序允许的情况下) 。例如,如果你的应用程序想要显示一个滑动图片列表,另一个应
    用程序正巧开发了合适的滑动模块,并且同意共享,你就可以调用那个滑屏模块处理这些
    图片并显示出来,而不是自己再去开发一个。你的应用程序并没有包含或链接了提供元素
    的应用程序的代码,只是在需要的时候启动使用其他程序的部分功能。
    为了实现这样的过程,系统必须在应用程序的任何部分被请求时启动这个程序的进程,
    实例化那部分 Java 对象。因此,和其他大多数系统不同的是, android 应用程序没有一个单
    独的程序入口 (例如:没有 main 函数) 。 而是包含运行所需的必要组件, 使得系统可以实例
    化对象。 android 中有四种组件:
    活动 ( Activity)
    一个 Activity 表示用户可视化界面,用户可以在上面进行一些操作。例如,活动会显示一个用户可选的菜单项的列表,或是显示带有标题的图片。一个文本信息应用程序可能有一个活动来显示将要发送信息的联系人对象,一个活动用于显示撰写信息文本给选定的联系人,其它的活动用于查看旧的消息或者显示设置的界面。虽然它们作为一个整体的用户界面进行协同工作,但是每一个活动都是相对独立的。每一个活动都是活动基类(类 Activity )的一个子类实现。
    一个 Android 应用可能由一个活动组成,或者像上面提到的文本信息应用程序一样包含了多个活动。活动是什么样的以及需要多少的活动,这些取决于你的应用程序是如何设计的。最典型的是将一个活动被标记为第一个,当应用被加载时显示给用户。从
    一个活动转到另一个活动是通过在当前活动来运行下一个活动实现的。每个活动提供了一个用于绘制的默认窗口。通常窗口将占满整个屏幕,但是也有可能比屏幕小并且浮在另一个窗口的上面。一个活动可以使用多个窗口——例如,在活动中央显示一个需要用户回应的弹出对话框,或者当用户选择屏幕上一个特定项目时为用户显示一些重要信息的窗口。窗口中的可见的内容是由一组继承自 View 基类的 view 组成的层次体系。每个 view 控制窗口中一块特定的矩形区域,父 view 包含并组织子 view 的布局。叶 view (层次底端的 view)绘制它们管理的矩形,并且负责响应用户在此区域的操作,因此 view 就是活动和用户交互的地方。例如,一个 view 显示一个小图片,当用户点击这个图片后开始一个操作。 Android 有很多已经做好view 你可以选择使用,包括按钮,文本输入框,滚动条,菜单项,多选列表等等。通过使用 Activity.setContentView() 方法将一组 view 层放置到一个活动窗口中, contentview 是 view 层中最顶端的那个 view。(参见 User Interface 的文档获取更多有关 view和层次的信息。)
    服务 (Services)
    服务没有可见的用户界面,但是可以在后台运行任意长的时间。例如,一个服务可以在用户转向其他工作后仍然在后台播放音乐,或者从网上下载数据,或者计算一些东西然后在需要的时候提供给活动。每个服务都继承自 Service 基类。一个主要的例子就是从列表中播放音乐的媒体播放器。播放器程序可能会有一个或几个活动,这些活动可以让用户选择希望播放的音乐然后显示播放。但是音乐播放过程本身不会使用一个活动,因为用户希望在切出播放器界面做别的事情时音乐也能一直放下去。为了保持播放继续,播放器的活动可以启动一个在后台运行的服务。然后即使启动这个服务的活动退出,音乐播放服务也能继续运行。
    你可以连接( connect)或者绑定( bind)到一个正在运行的服务(如果这个服务还没运行的话就启动它) 。当连接到服务后,你可以通过服务暴露出来的接口和这个服务进行通信,对音乐播放服务来说,这个接口可能允许用户暂停,后退,停止,重新播放等操作。像活动和其他组件一样,服务运行在这个应用程序进程的主线程中。 因此为了不阻塞其他的组件或者用户界面,服务经常为那些耗时长的任务单独开一个线程 (比如音乐播放 )。
    广播接收器 (Broadcast receivers)
    广播接收器只是接收广播并对广播信息做出作出反应,多数的广播是由系统代码发出的—— -比如反应时区变化的通知,电量低的通知,照了一张照片的通知,或者用户修改了系统语言的通知。应用程序也可以自己定义广播,比如定义这样一个广播,让其他的应用程序知道某些数据已经下载完毕了可以使用了。应用程序可以有任意数量的广播接收器来对他所关心的广播进行监听并作出反应。所有的广播接收器都继承自 BroadcastReceiver 基类。广播接收器不显示在用户界面上,但是可以启动一个活动来对接收到的信息进行响应,或者可以使用 BroadcastReceiver 来警告用户。 Notifications( 通知 )可以通过不同的方式引起用户的注意,比如使背景灯闪烁,使设备振动,播放声音等等。通常是在状态栏上显示一个不会消失的图标,用户可以打开这个图标查看通知。
    内容提供者 (Content providers)
    内容提供者使程序中特定的数据可以被其他程序使用。这些数据可以存储在文件系统中,SQLite 数据库中,或者任何其他可以存数据的地方。内容提供者继承自 ContentProvider基类,实现了一系列的使其他程序获取和存储其支持的数据格式的方法,但是应用程序不直接调用这些方法。而是使用一个 ContentResolver 对象,然后调用这个对象的方法。ContentResolver 可以和任何的内容提供者交流,它和提供者协作来管理所有涉及到的进程间的通信。获取更多使用内容提供者的详细信息请参见另一篇文档—— Content Providers 。无论何时请求都应该由一个特定的组件来处理, Android 将确认组件的应用程序进程是否处于运行状态,并在需要的时候启动它,以及组件的一个特定实例是否可得,并在需要的时
    候生成该实例.

  • 相关阅读:
    Android SDK Manager下载和更新失败的解决方法!!!
    java反射详解
    Maven--->学习心得--->maven project的标准目录结构
    Maven--->学习心得--->maven 的生命周期(LifeCycle)
    Maven--->学习心得--->maven的配置文件pom.xml
    硬盘管理
    JavaScript------>调试JavaScript代码------>使用 浏览器 中的 “开发者工具” 来调试
    java框架---->spring框架---->使用实例
    step5--->往工程中添加Spring框架---->修改maven的配置文件pom.xml,向工程中添加spring框架的某些模块
    JavaScript------第一课
  • 原文地址:https://www.cnblogs.com/littletang/p/6850761.html
Copyright © 2020-2023  润新知