含一个Activity或多个Activity。一般情况下,在启动一个应用程序之后就会显示一个Activity,以表明程序正常启动了。Activity在界面上的表现形式一般是全屏窗体,也可以是非全屏悬浮窗体或者对话框。Activity有一定的生命周期,指Activity从生成到销毁的全过程,在这个过程中,Activity一般表现为活动、暂停、停止和非活动四种状态是可以相互转换的,图5是四种状态的转换图:
Activity启动后处于活动状态位于界面的最上层,是与用户相互交互的界面,所以Android系统会保持当前处于活动状态的Activity的资源内存需求,资源紧张的时候可以终止其他状态的Activity。Android系统会跟踪所有运行的Activity对象,并将这些对象放入一个专门存储Activity的堆栈中,当一个新的Activity启动时,将会被放于栈顶,原处于栈顶的Activity会暂停,当一个新的Activity被完成时,它将会被从栈中移除,而先前被压入栈的Activity会重新回到栈顶,如图6所示:
Activity生命周期的回调函数,这些回调函数如图7所示:
当Activity启动时,首先调用的是onCreat()方法进行一些初始化工作,再调用onStart(),最后调用onResume(),这就完成了Activity第一次启动的过程,下面是本文设计的一个例程来说明整个生命周期,使用Log.d(String tag, String content)打印出结果,如图8所示,此文以后不写打印代码,打印方法都是一样的。
当按home键的时候,当前Activity就会被压入栈,home界面Activity就会被放到栈顶,这样当前Activity就会依次调用onPause()和onStop()方法,如图9所示:
当重新启动Activity时,程序就会依次自动调用onRestart()、onStart()和onResume(),这样界面就又可以回到原来的界面,因为Activity是再次被唤醒,所以不需要调用onCreat(),如图10所示:
当退出程序后,系统会销毁当前Activity,依次自动调用onPause()、onStop()和onDestroy(),如图11:
Activity在AndroidManifest.xml文件中最简单的注册格式如图12:
Service一般情况下没有用户界面,可以长期在后台运行,Service不能与用户交互,不能自启动,是应用程序运行在后台的程序,退出应用时,Service进程并没有结束,它仍然在后台运行。Service的生命周期并不像Activity那么复杂,它只继承了onCreate()、onStart()、onDestroy()三个方法,第一次启动Service时,依次调用了onCreate(),onStart(),当停止Service时,则执行onDestroy(),需要注意的是,如果Service已经启动了,当我们再次启动Service时,不会再执行onCreate(),而是直接执行onStart(),启动Service通过Context.startService(Intent i),Service结束通过 Context.stopService(Intent i),启动一个Service的过程如图13:
onStartCommand()和onStart()是一样的,都是在Service启动的时候调用,onStart()是Android老版本的调用方法,onStartCommand()是新版本的调用方法,效果是一样的,如下图14所示:
以下是绑定服务的生命周期,绑定服务是调用onDestroy()和onBind(),如图15所示:
当服务完成了自身工作,或者系统销毁的时候,会单独调用onDestroy()方法,如图16示:
Service的生命周期如图17。需要注意的是绑定后的Service在Activity被销毁后,自己也会销毁,未绑定的则不会。Service在AndroidManifest.xml文件中最简单的注册格式如图18所示:
Broadcast Receiver是用来接收广播消息的组件,在实际应用中,我们常常需要等待,等待系统抑或其他应用发出一些指令,让自己的应用接收这些指令。而这种等待,在很多的平台上,都会付出很大的代价。在Android中采用Broadcast Receiver来实现,大部分广播接收器接收的是系统所产生的广播消息,比如来电,短信,电量低,语言选项的一些改变等等,一些广播接收器也可以接收其他应用程序发出的广播消息,可使用ContextWrapper.sendBroadcast()方法。要实现Broadcast Receiver必须继承类Broadcast Receiver并重载onReceive(Context context,Intent Intent)方法,所有接收广播后的响应,都可以写在这个方法中, Broadcast Receiver在AndroidManifest.xml文件中最简单注册格式如图19所示:
其中Intent-filter只是为了表明接收的广播类型,本文中接收的是SMS短信。
Content Provider可实现应用程序之间进行数据访问和共享,它不仅可以访问应用程序的数据而且还可以访问Android本身的一些内置数据,比如CallLog内容提供器就是允许其他应用访问手机内部通话记录,可以计算通话时间及通话次数;Contacts内容提供器允许访问联系人信息,比如联系人,电话,地址等,还可以通过Settings内容提供器来修改系统设置。Content Provider还允许访问外部数据,比如Media Store内容提供器就允许访问SD卡中的所有媒体(包括音频,视频和图像)信息。AndroidManifest.xml文件中最简单注册格式如图20:
Intent作为其他组件之间相互调用或者数据访问的一个媒介,其功能和信使相似,Intent负责对应用中一次操作的动作、动作涉及的数据、附加数据进行描述,Android则根据此Intent的描述,负责找到对应的组件,将Intent传递给被调用的组件,并完成组件的调用。
Notification一般会用在有电话,短信,闹铃,邮件信息等发生的时候,作为一种提示手段使用户知道有这些时间来了,进行一些提示处理。Notification主要是作为一些用户可能会遗忘,但是用户其实是需要处理的一些事件。这里可以使用获取系统服务的方式进行获取Notification Manager对象,这里和Location Manager的获取方法是一样的,我们会在后边详细介绍如何获取。
本文的应用程序是构建在Android2.3.3的基础之上,API等级为10,使用三星的Galaxy系机型进行研发工作。
第三章 位置和天气模块功能设计
3.1、位置和天气模块功能分析
本文完成的是位置服务和天气应用程序开发,主要分为两大模块,一是天气服务,一是位置服务,位置服务定位自己的位置功能,还可以实现在他人同意的情况下,可以获取对方的位置;天气服务实现本人和他人当天以及未来几天的天气信息,并可将天气信息保存到后台,同时还需要提供一定的天气查询服务,比如说其他手机向本手机发送需要天气服务短信的时候,可以准确获取对方需要的天气信息,然后通过SMS短信发送给服务申请者,而且这些信息可被记录下来已备查看。
本程序的界面内容包括。一是显示天气信息的界面和浏览回复短信存储的界面,二是短信显示界面,三是地图显示界面,可方便显示需要的地图信息,四是配置界面,配置各种功能的开关。
(1)显示天气信息界面:显示今天和未来5天内天气的显示界面。由于无法自己制作天气预报数据,需要从互联网上来获取,然后经过加工处理,制作出自己需要的信息。这里主要需要加工成两大块,一块是界面显示的天气信息,一块是SMS短信回复的天气信息;
(2)短信显示界面:显示请求发送天气信息的短信。必须对请求短信进行监听,然后根据请求内容进行SMS短信回复,同时需要将这些内容存储到数据库中;
(3)显示地图信息的界面:可以获取对方位置,并将自己的位置和对方的位置绘画出来以供使用者方便找到自己想要找的人的位置;
(4)配置界面:加载默认配置信息,储存用户自己的配置信息,并可以恢复默认配置的功能。
根据这些功能分析,可以用下面的关系简略表示:
(1)、显示今天和未来几天内天气的显示界面。
获取中国气象局天气信息并将之加工。
(2)、显示要求要发送
上一篇:
基于Android的多功能视频播放器的系统设计
下一篇:
面向android系统的测试工具_毕业论文