片连同它的标题。一个文本短信应用程序可能有一个活动,显示联系人的名单发送信息;第二个活动,写信息给选定的联系人;其他活动,重新查看旧信息或更改设置。虽然他们一起工作形成一个整体的用户界面,但是每个活动是独立于其他活动的。每一个都是作为Activity基类的一个子类的实现。
android.app.Activity类:因为几乎所有的活动(activities)都是与用户交互的,所以Activity类关注创建窗口,你可以用方法setContentView(View)将自己的UI放到里面。然而活动通常以全屏的方式展示给用户,也可以以浮动窗口或嵌入在另外一个活动中。有两个方法是几乎所有的Activity子类都实现的:
onCreate(Bundle):初始化你的活动(Activity),比如完成一些图形的绘制。最重要的是,在这个方法里你通常将用布局资源(layout resource)调用setContentView(int)方法定义你的UI,和用findViewById(int)在你的UI中检索你需要编程地交互的小部件(widgets)。setContentView指定由哪个文件指定布局(main.xml),可以将这个界面显示出来,然后我们进行相关操作,我们的操作会被包装成为一个意图(Intent),然后这个意图对应有相关的activity进行处理。
onPause():处理当离开你的活动时要做的事情。最重要的是,用户做的所有改变应该在这里提交(通常ContentProvider保存数据)。
生命周期如图3-1
图3-1Android的生命周期
每一个应用程序可能只包含一个活动,或者是像短信应用程序一样,它可能会包含几个活动。这些活动分别是什么,以及有多少,这个当然取决于它的应用程序自己的设计。根据一般情况来说,当一个应用程序被启动的时候,会被标记为第一个的活动,应该展示给用户。从一个活动转移到另外一个活动由当前的活动完成从而开始下一个。
每一个活动都会有一个默认的窗口。根据一般情况来说,窗口是会填满整个屏幕的,但是它也有可能比屏幕小或者是浮在其他窗口上,这个就是程序员代码的编写情况了。一个活动还可以使用额外窗口。比如弹出式对话框,或者是当一个用户选择屏幕上一个特定的项时,会跳出一个窗口来显示给用户重要的信息。
窗口的可视化内容是由继承自接口为View基类,一个分层的视图-对象提供。每个可视化控件是窗口内的一个特定的矩形空间。父视图包含和组织子女视图的布局。叶子视图--分层的底层。绘制的矩形会直接控制和响应用户的操作。所以,一个视图活动是与用户发生交互的地方。比如说,一个视图显示一个小的图片和当用户点击图片时发起一个动作行为。Android有一些现成的可视化控件你可以使用,其中包括按钮(buttons)、图片按钮(ImageButton)、文本域(text fields)、可编辑文本控件(EditText)、菜单项(menu items)、仿真时钟(AnalogClock)滚动条(scroll bars)、开关按钮(ToggleButton)、复选按钮(check boxes)等等。
通过Activity.setContentView() 方法来设置一个视图层次在我们的活动窗口中。内容视图(content view)是层次结构的根视图对象。层次结构如下图3-2所示:
图3-2 View的层次结构
Activity.setContentView()方法:public void setContentView (int layoutResID):根据布局资源的设置活动界面。资源将会被夸大,添加布局资源文件中的所有的最高层的视图( top-level views )到活动.
3.2.2、 服务(Services)
与Activity相反,Service是没有可视化的用户界面,但是Service的特点是能长时间在后台运行的。所以,也可以这样去理解,Service是具有一段较长生命周期而且没有用户界面的程序。比如说一个服务可能要播放背景音乐但是用户做可以去做其他一些事情,或者它也可能从网络获取数据,也或者是计算一些东西并会提供一个结果给需要的活动(activities)。每一个服务都继承自Service基类。
每一个服务类都惠子在AndroidManifest.xml中有自己相应的
声明。服务必须可以通过Context.startService()或者Context.bindService()启动因为service是有两个不同的生命周期的。
一个非常典型的例子是媒体播放器播放一个播放列表中的歌曲文件。该播放器应用程序将可能有一个或者是多个活动(activities),可以允许用户选择要听的歌曲和开始播放。然而,音乐播放本身就不会被一个活动处理,因为用户是希望保持音乐一直播放的,当用户离开播放器的时候而去做其他事情。为了保持音乐能够继续播放,媒体播放器活动可以启动一个服务运行在后台的运行。系统将会保持音乐播放服务运行,甚至媒体播放器离开屏幕的时候。
可以连接到(绑定到)一个持续运行的服务(并启动服务,如果它尚未运行)。连接之后,你可以通过服务暴露的接口与服务交流。对于音乐服务,这个接口可以允许用户暂停、倒带、停止和重新播放。
像活动(activities)和其他组件一样,服务(services)运行在应用程序进程中的主线程中。因此,他们将不会阻止其他组件或用户界面,他们往往产生其他一些耗时的任务(如音乐播放)。
3.2.3、广播接收者(Broadcast receivers)
一个广播接收者是这样一个组件,它不做什么事,仅是接受广播公告并作出相应的反应。许多广播源自于系统代码,例如公告时区的改变、电池电量低、已采取图片、用户改变了语言偏好。应用程序也可以发起广播,例如为了他其他程序知道某些数据已经下载到设备且他们可以使用这些数据。
一个应用程序可以有任意数量的广播接收者去反应任何它认为重要的公告。所有的接受者继承自BroadcastReceiver基类。
BroadcastReceiver类:是接受sendBroadcast()发送的意图(intents)的基类。可以用Context.registerReceiver()动态地
上一篇:在线音乐管理系统毕业论文(word论文)
下一篇:女人七种行为逼男人想离婚