使用手机的大多数时候,你会停留在某一个“页面”,比如和恋人的对话页面、切水果页面、相机的取景页面。用安卓的术语讲,页面是一个Activity,它是一个占据整个屏幕的界面。用户和手机可以通过Activity交流。页面,也就是Activity,是手机应用中如此常见的概念,以至于用户有时会忽视它们的存在,就像那些无比普通的小步兵。
观察这些页面,我们会发现一些共同点:
一个应用往往包含多个页面。在某些情况下,我们会从当前Activity离开,激活并前往下一个Activity。
在联系人条目菜单的页面上,点击某个联系人,进入一个新的页面,这个新的页面上包含该联系人的具体信息;再点击返回键,我们退出了包含具体信息的页面,又回到联系人条目菜单的页面上。
应用的进程空间中有一个栈(stack),用来记录我们依次激活的各个Activity。新激活的Activity被压入到栈的顶端。在手机屏幕上,我们只能看到栈顶的这个Activity,也只能和该Activity互动。当我们点击返回键时,当前Activity结束,从栈中弹出。上一个被激活的Activity出现在栈顶,重新占领手机屏幕。这也就是我们按返回键时,能回到历史页面(联系人条目菜单)的原理。
正如默默守卫的小步兵,Activity也总是处于一种相对静止的某个状态,比如运行、暂停、停止等。
Activity的许多功能,都是在状态切换中完成的。状态转换过程中执行的命令,都是程序员预设好的,包含在特定的方法中。比如一个Activity从未激活状态到运行状态的过程中,会自动执行Activity对象的onStart()方法。安卓程序员在该方法中,设计Activity在目标状态的效果:实现特定的页面布局,为按钮注册回调函数,访问互联网获取信息等。再比如,Activity从暂停到恢复的状态,会执行onRestart()方法。安卓程序员可以在该方法中,实现诸如调整亮度和弹出提示之类的功能。这正如小兵在平时训练时,预设了切换过程中要做的事情。小兵从一个状态进入到另一个状态,比如从“警戒”到“预备射击”。在该状态过程中,士兵执行预设动作,即装填子弹,随即进入射击待命状态。
有趣的是,一个安卓的Activity与互联网上的一个Web页面非常相似。它们都是充斥屏幕的页面,包含视觉元素和信息。用户可以通过这样的页面实现某些功能。就连这些界面的编写方式,也有相似之处:安卓用XML设计一个页面,而Web用HTML设计一个页面。你甚至于可以把一个应用直接看做包含了多个页面的小型网站。
现代魔法 推荐于 2013-02-27 10:23