计算机科学与技术专业毕业论文--android平台天气预报widget的设计与实现内容摘要:

个开发者都可以加入移动互联的世界,共同推动移动互联的发展。 应用程序框架 普通的开发者可以使用 Android 核心应用程序的系统 API。 Android 的应用开发框架涉及的非常巧妙,通过这套应用框架,各种组件可以被用户的应用重复利用,各种服务也可以被各种应用重复应用。 开发人员应该很好地理解这套框架的工作机制,这样才能开发出 更好的应用程序。 下面列举应用框架的主要部分: 一. 一组 Views。 这些 UI 组件包括列表、文本框、按钮等。 通过这些UI 组件,可以构建应用程序的试图部分,这部分也就是用户能看到的部分。 二. ContentProviders。 主要是提供一种机制,通过这种机制,各个应用程序之间可以实现数据的互访和共享。 三. Resource Manager。 它负责管理非代码的访问。 如本地图片资源,设计布局的 XML 文件等的访问。 四. Notification Manager。 它能让程序的将自己的警示信息显示在状态栏上。 例如,当有短信的时候,可以在 状态栏上显示新短信的信息。 五. Activity Manager。 它管理应用的生命周期,并且提供应用页面退出 12 的机制。 在 Android 应用中,一个应用一般都是多个页面组成,而每个页面的单位就是 Activity。 库和运行环境 Android 包括一些 C/C++库,这些库能被 Android 系统的不同组件使用。 他们通过 Android 应用程序框架为开发者提供服务。 Android 应用程序组成 要进行应用开发,还需要对 Android 应用构造进行深入的分析。 Android应用程序由以下 4 个模块构造而成: Activity Broadcast Intent Receiver Service Content Provider 当然,也不是每个 Android 应用程序都必须由这 4 部分组成,它可以根据开发者需求来进行组合。 在这里还需要介绍 Intent 的概念和使用方法,他在应用程序的运行中连接两个不同的组件,通过 Intent 你的程序可以向 Android 表达某种请求或者意愿, Android 会根据意愿的内容选择适当的组件来请求。 Avtivity介绍 Activity 是最基本的模块。 我们称之为 活动 ,在应用程序 中,一个活动( Activity)通常就是一个单独的屏幕。 每一个活动都被实现为一个独立的类,并且从活动基类中继承而来,活动类将会显示由视图控件组成的用户接口,并对事件作出响应。 大多数的应用都是由多个 Activity 显示组成,例如,对一个文本信息应用而言,第一个屏幕用来显示发送消息的联系人 13 列表,第二个屏幕用来写文本消息和选择收件人,第三个屏幕查看消息历史或者消息设置操作等。 这里的每一个屏幕就是一个活动,很容易实现从一个屏幕到一个新的屏幕,并且完成新的活动。 当一个新的屏幕打开后,前一个屏幕将会暂停,并保存在历 史栈中。 用户可以返回到历史栈中的前一个屏幕,当屏幕不再使用时,还可以从历史栈中删除。 简单理解, Activity 代表一个用户所能看到的屏幕,主要用于处理应用程序的整体性工作,例如,监听系统事件(按键事件、触摸屏事件等),为用户显示指定的 View,启动其他 Activity 等。 所有应用的 Activity 都继承于 类,该类是 Android 提供的基层类,其他的 Activity继承该父类后,通过父类的方法来实现各种功能,这种设计在其他领域也较为常见。 Broadcast Intent Receiver 介绍 可以使用 BroadcastReceiver 来让应用对一个外部的时间作出相应。 例如,当电话呼入这个外部时间到来的时候,可以利用 BroadcastReceiver 进行处理。 BroadcastReceiver 不能生成 UI,也就是说对用户是不透明的,用户是看不到的。 BroadcastReceiver 通过 NotificationManager 来通知用户这些事情发生了。 BroadcastReceiver 既可以在 中注册,也可以在运行时的代码使用 ()进行注册。 只要是注册了,当时间来临的时候,即使程序没有启动,系统也在需要的时候启动程序。 各种应用程序还可以通过 ()将他们自己的 intent 14 broadcasts 广播给其他应用程序。 Service介绍 Service 即 服务 的意思,既然是服务,那么 Service 将是一个生命周期长而且没有用户界面的程序。 比如一个正在从播放列表中播放歌曲的媒体播放器,在这个媒体播放器应用中,应该会有多个 activity,让使用者可以选择歌曲 并播放歌曲。 然而,音乐重放这个功能并没有对应的 activity,因为使用者会认为在导航到其他屏幕时音乐应该还在播放。 在这个例子中,媒体播放器这个 activity 会使用 ()来启动一个 service,从而可以在后台保持音乐的播放。 同时,系统也将保持这个 service 一直执行,直到这个 service 运行结束。 另外,我们还可以通过使用 ()方法连接到一个 service 上(如果这个 service 当前还没有处于启动状态,则将启动它)。 当连接到一 个 service 之后,还可用 service 提供的接口与它进行通讯。 以媒体播放器为例,我们还可以执行暂停、重播等操作。 Content Provider 介绍 Android 这个系统和其他的操作系统还不太一样,我们需要记住的是,数据在 Android 当中是私有的,当然这些数据包括文件数据和数据库数据,以及一些其他类型的数据。 一个 ContentProvider 类实现了一组标准的方法接口,从而能够让其他的应用保存或读取此 ContentProvider 的各种数据类型,也就是说,一个程序可以通过实现一个 ContentProvider 的抽象接口将自己的数据暴露出去。 外界根本看不到,也不用看到这个应用暴露的数据在应用当中是如何存储的,即用数据库存储还是文件存储,还是通过网上 15 获得,这一切都不重要,重要的是外界可以通过这一套标准而统一的接口和程序里面的数据打交道。 可以读取程序数据,也可以删除程序的数据,当然中间会涉及一些权限问题。 Intent介绍 Intent 是一种运行时绑定( runtime binding)机制,它能在程序运行的过程中连接两个不同的组件。 通过 Intent,你的程序可以向 Android 表达某种请求或者意 愿, Android 会根据意愿的内容选择适当的组件来请求。 比如,有一个 Activity 希望打开网页浏览器查看某一网页的内容,那么这个Activity 只需要发出 WEB_SEARCH_ACTION 请求给 Android, Android 会根据 Intent 的请求内容,查询各组件注册时声明的 IntentFilter,找到网页浏览器 Activity 来浏览网页。 Android 的三个基本组件 —— Activity, Service 和 BroadcastReceiver,它们都是通过 Intent 机制激活的,而不同类型的组件有传递 Intent 的不同方式。 (1) 要激活一个新的 Activity,或者让一个现有的 Activity 执行新的操作,可以通过调用 ()或者 ()方法。 这两个方法需要传入的 Intent 参数也称为 Activity Action Intent(活动行为意图),根据 Intent 对象对目标 Activity 描述的不同,来启动与之相匹配的 Activity 或传递信息。 (2) 要启动一个新的服务,或者向一个已有的服务传递新的指令,调用 16 ()方法或调用 ()方法将调用此方法的上下文对象与 Service 绑定。 (3) 通过 () 、 () 和() 这 三 个 方 法 可 以 发 送 BroadcastIntent。 BroadcastIntent 发送后,所有已注册的拥有与之相匹配 IntentFilter 的BroadcastReceiver 就会被激活。 这种机 制被广泛运用于设备或系统状态变化的通知,一个常见的例子是,当 Android 的电池电量过低时,系统会发送Action 为 BATTERY_LOW 的广播,接着任何可匹配该 Action 的 IntentFilter注册的 BroadcastReceiver 都会各自运行自定义的处理代码,比如关闭设备的 WIFI 和 GPS 以节省电池消耗。 Intent 一旦发出, Android 都会准确找到相匹配的一个或多个 Activity、Service 或 BroadcastReceiver 作为响应。 所以,不同类型的 Intent 消息不会出现重叠: BroadcastIntent 消息只会发送给 BroadcastReceiver,而绝不可能发送给 Activity 或 Service。 由 startActivity()传递的消息也只可能发送给Activity,由 startService()传递的 Intent 只可能发送给 Service。 Intent 对象抽象地描述了要执行的操作,其描述的基本内容可以分为组件名称、 Action(动作)、 Data(数据)、 Category(类别)、 Extra(附加信息)和 Flag(标志位) 6部分 Intent 分为显式 Intent 和 隐式 Intent : 对于明确指出了目标组件名称的 Intent,我们称之为“显式 Intent”。 对 17 于没有明确指出目标组件名称的 Intent,则称之为“隐式 Intent”。 Android系统使用 IntentFilter 来寻找与隐式 Intent 相关的对象。 显式 Intent 直接用组件的名称定义目标组件,这种方式很直接。 但是由于开发人员往往并不清楚别的应用程序的组件名称,因此,显式 Intent 更多用于在应用程序内部传递消息。 比如在某应用程序内,一个 Activity 启动一个 Service。 隐式 Intent 恰恰 相反,它不会用组件名称定义需要激活的目标组件,它更广泛地用于在不同应用程序之间传递消息。 Android 应用程序工程文件 典型的工程文件如下图所示: 与一般的 Java 项目一样, src 文件夹是项目的所有包及源文件( .java),res 文件夹中则包含了项目中的所有资源,比如:程序图标( drawable)、布局文件( layout)、常量( values)等。 下面来介绍其他 Java 项目中没有的gen 文 件 夹 中 的 文 件 和 每 个 Android 项 目 都 必 须 有 的 18 文件。 是在建立项目时自动生成的,这个文件是只读模式,不能更改, 文件是定义该项目所有资源的索引文件。 文件则包含了该项目中所使用的 Activity、 Service、Receiver。 相当于应用的配置文件,在应用中是一个相当重要的文件。 19 第 4章 天气预报 widget的设计 网络功能实现 Android 可以使用以下两种网络接口 标准 Java接口 .*下面提供了访问 HTTP 服务的基本功能。 使用这部分接口的基本操作主要包括: 创建 URL 以 及 URLConnection / HttpURLConnection 对象 设置连接参数 连接到服务器 向服务器写数据 从服务器读取数据 import。 import。 import。 import。 import。 try { // 创建一个 URL 对象 URL url = new URL(your_url)。 // 创建一个 URL 连接,如果有代理的话可以指定一个代理。 URLConnection connection = (Proxy_yours)。 // 对于 HTTP 连接可以直接转换成 HttpURLConnection, // 这样就可以使用一些 HTTP 连接特定的方法,如 setRequestMethod() 等 //HttpURLConnection connection = (HttpURLConnection)(Proxy_yours)。 20 // 在开始和服务器连接之前,可能需要设置一些网络参数 (10000)。 (UserAgent, J2me/)。 // 连接到服务器 ()。
阅读剩余 0%
本站所有文章资讯、展示的图片素材等内容均为注册用户上传(部分报媒/平媒内容转载自网络合作媒体),仅供学习参考。 用户通过本站上传、发布的任何内容的知识产权归属用户或原始著作权人所有。如有侵犯您的版权,请联系我们反馈本站将在三个工作日内改正。