想再回顾一下Android的知识,又不太想去翻已经看过几遍的书,于是把目光投向了Documentation,阅读的过程中也一边翻译,干脆就来做一系列的译文,记录的同时也帮助自己成长。
Activity简介
Activity类在安卓中是至关重要的一个组成部分,也是四大组件之一。活动(Activity)的启动方式,不同于传统的main()方法,而是通过调用与其生命周期特定阶段对应的特定回调函数来启动Activity中的代码的。并且进入app的第一个Activity需要在mainfest中说明。
移动应用中,当一个app去调用(invoke)另一个时,前者是调用(invoke)了另一个app中的一个Activity,而不是作为一个整体的app。通过这种方式,活动可以作为与用户交互的入口点。我们可以将活动实现为Activity的子类。
活动能提供应用程序绘制其UI的窗口,这个窗口通常充满整个屏幕,也可以是部分屏幕以及悬浮在所有应用之上。
如果想要在app中使用activity,那么就必须在mainfest中进行注册,并且合适地管理其生命周期。
配置mainfest
在mainfest中可以声明Activity,并配置其一些属性。
1,声明Activity
如图所示,仅仅需要android:name就可以声明一个Activity,当然还可以添加一些属性来定义该Activity的一些特性如:icon,UI theme等。
2,声明Intent filter
Intent filters在Android平台是功能十分强大的,它提供隐式启动活动的功能。例如,显示地启动可能告诉系统,“Start the Send Email activity in the Gmail app”。而隐式的方式则会告诉系统,“Start a Send Email screen in any activity that can do the job”。
可以通过在< activity >元素中声明< intent-filter >属性来利用这个功能。这个元素的定义包括一个< action >元素,以及可选的< category >元素或< data >元素。这些元素组合起来去制定活动可以响应的intent类型。如下图:
而下面的代码显示了如何调用这个活动:
如果你打算让你的应用程序自包含(self-contained)并且不允许其他应用程序激活其活动,则不需要任何intent filter。但是你可以显示地启动他们。
3,声明权限
除非两个活动在其清单中具有相同的权限,否则父活动无法启动子活动。如果为父活动声明< uses-permission >元素,则每个子活动必须具有匹配的< uses-permission >元素。例如,父活动声明如下:
那么,在应用程序的mainfest中就要声明对应的权限: