您的位置:首页 > 移动开发 > Android开发

Android系列之Activity

2016-04-28 21:43 281 查看
Activity,活动界面。直接与用户进行交流的桥梁。包含了所有该应用需要与用户交互的组件。

如何生成一个Activity呢?(本文的IDE是Eclipse)

在src文件夹下新建一个包,在包下新建自己的Activity。在新建的Activity中,就要编写我们需要这个Activity所要完成的各种内容操作以及显示效果。当然,一个单纯的类无法完成各种操作以及界面的显示。因此Android的API中包含了各种方法及类使得我们方便的与手机进行操作而不需要关系底层与前端是如何连接的。在我们自己的类中继承Activity这个类,这个类包含了Activity的各种操作。对于我们的类最重要也是最关键的就是重写onCreate方法。通过该方法可以在手机中创建一个Activity(即我们自己的Activity)。

现在有了Activity了,但是这个Activity是一片空白的,我们需要添加我们想要的显示效果。Android将UI的设计与Activity的交互操作分开,使得我们可以分别设计两者相应的内容。在Android中,我们使用XML文件给我们的Activity设计UI布局相关内容。XML是一种可扩展标记语言,其最大的好处就是可以自定义。可以创建开发者想要的各种内容。唯一的限制就是开发者的想象力了。那么Activity和XML是如何联系起来的呢?在Activity这个父类中,包含着setContentView这个方法。这个方法即为Activity与XML连接的桥梁。那么这个方法是如何使用的呢?那么就要提到XML文件其实是一种资源文件,不过它是布局的资源文件。在Android中为了方便管理各种资源,统一将其放入名为R.java的文件中。并且各个资源以唯一的ID进行标识。因此,只需要在setContentView这个方法中传入我们想要的布局ID即可将Activity与XML文件关联起来了。

好,现在Activity有了,相应的布局也有了,那么Android如何检测到该Activity呢?AndroidManifest.xml文件就诞生了。该文件管理了本APP的基本信息,包名,主题,名称以及包含的Activity。那么当我们新建了自己的Activity并添加了相应的布局后,为了让该APP知道这个Activity属于该APP,就要将该Activity加入AndroidMainfest.xml文件中。告诉APP,嘿,大家是自家人。当然,一个APP通常有着不止一个Activity,那么我们怎么知道哪个Activity应该在用户点击APP图标后首先进入用户的眼帘呢?这就需要我们希望作为首页的Activity下加入标签了只要有了这个标记,即告诉APP,我是第一个,其他的往后站。

到此为止,一个活生生的Activity就被我们带到了这个世界。

那么这个活生生的“生命”会的寿命有多长呢?(Activity的生命周期)

那么在讲到生命周期之前,要提出返回栈的概念。什么是返回栈呢?在Android手机中,一个应用软件(APP)即为一个任务,为了管理这个任务,就诞生了返回栈,由于APP是由多个Activity组成的,所以管理这个APP就是管理其中的返回栈。在默认的情况下,就采用的是栈的先进后出的概念,并规定栈顶的Activity即为此时正显示给用户的Activity。当我们启动一个新的Activity,它就会被压入栈,处于栈顶位置。当我们按下back返回键时,需要销毁一个Activity时,此Activity又出栈。基于此,管理APP。

那么一个人的一辈子有幼儿,少年,青年,中年和老年几个不同的时期,也即不同的状态。对于一个Activity来说,同样存在几个不同的时期,称为运行状态。就一个Activity来说,它包含4种不同的运行状态:

运行状态:当前正在运行,与用户正“聊天”的状态。

暂停状态:由于“第三者”的插足,不得不暂停与用户的交流,但不会消失于用户眼前。并且在手机内存极度缺少的时候就会狠下心消灭它。

停止状态:被打入冷宫,连皇上的面都见不到。甚至可能在不为人知的时候被系统给悄悄消灭掉。

销毁状态:惨被抛弃,并成为系统最喜欢的点心。

那么Activity是如何在各个状态间进行切换的呢?Android提供了7个回调函数,对应了Activity的7个生命周期。通过这7个重要角色,使得Activity在各个状态间来回穿梭(当然,若被销毁了,就永远的Say goodbye了)。

onCreate():创建Activity的方法,前面也提到过,这是最重要的方法了,它仿佛上帝之手,一手创建了Activity这个可爱的孩子。

onStart():该方法最吃香,因为它掌管着可以见到用户的大权。

onResume():Activity准备了一肚子话要说,这个方法告诉Activity:“说吧。”。

onPause():红灯标志,不好意思,你先休息一会让其他操作先走。

onStop():各个Activity都很讨厌它,因为,它直接撤走了和用户交流的权利,甚至都不让见面了。

onDestroy():最令人生畏的方法了,Activity见到无不避而远之。它就是个杀人狂,建谁杀谁。

onRestart():这个方法是个宠儿,它会重新赋予与用户交流的权利。

一个完整的生命周期从onCreate()开始直至onDestroy()。

一个用户可见的生命周期则从onStart()到onStop()。

一个前台生命周期则是从onResume()至onPause()为止。

对于一个APP我们可以以不同的方式启动它,即不同的方式管理其Activity。Android为我们提供了4种不同的方式:

standard:标准模式,即默认的启动模式,管理方式如上所述,采取先入后出的管理方式,并且不管栈内的内容,只要显示一个Activity就产生一个对应的实例。

singleTop:该模式在栈的基础上,在新产生一个Activity之前,会首先检测栈顶是否就是所需的Activity,若是则直接使用。否则再创建。

singleTask:同样在栈的基础上,在新产生一个Activity之前,会检测整个栈中是否就有该Activity的实例,若有则调用该实例,否则再创建。

singleInstance:这个模式最顽皮,我们知道启动一个APP就会生成一个返回栈管理Activity。那么若需要同一个Activity在不同的APP中调用的话,就需要在各自的返回栈中都产生对应的实例。此模式的优点就体现出来了。它会单独生成一个返回栈专门用于管理这些需要共享的Activity。而不需要为各个返回栈都生成一个实例。

到此为止,Activity的一切信息都被我们扒拉的差不多了。Activity也无奈的喊了声:“你真是够够的了!”。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: