生如夏花

生如夏花的.net 博客空间

导航

(原创)Android入门教程(十五)之-- Activity生命周期及其配置使用

一、 Activity介绍

      activity可以算是开发者遇到的最频繁,也是android当中最基本的模块之一,在android的程序中,activity一般代表手机屏幕的一屏,如果把手机比作一个浏览器,那么activity就相当于一个网页, 对于Activity,关键是其生命周期的把握(如下图),


正如图形所示,当我们第一次启动一个Acitivity1时,会按下列顺序调用Acitivity1的方法onCreate()->onStart()->onResume(),然后Acitivity1就会显示在手机屏幕上。这个时候如果你点击按钮或者做操作切换到了另外一个Activity2,Activity2遮挡住了Activity1,Actitity1就会调用onPause()方法,这时Activity1有三种可能,第一种Activity2被关闭,Activity1重新显示在手机屏幕中,这时会调用Activity1的onResume()方法,重新显示Activity1。第二种Activity1不能再显现,会调用其onStop()方法。第三种就是Activity1被onPause()后,系统内存不够,要释放空间,就可能会杀掉Activity1,如果要重新显示Activity1需要重新调用其onCreate()方法。

     当Activity1调用onStop()以后,同样有三种选择,第一种是调用onDestroy()销毁,结束Activity1。第二种是又让Activity1显现出来,这时调用的是Activity1的onRestart()方法。

最后一种是系统内存不够,释放空间。

引用一段网上比较好的比喻可以这样比喻:

   我们把Activity比作一本书,我们要看书,首先从书架上取出书(onCreate),然后放到桌上(onStart),接着打开书(onResume),这样我们就可以看书并可以在书本上写字了。

如果这时候我们要启动另一个Activity,也就是要看另一本书,首先我们放下手中的笔或者说合上书(onPause),然后从书架上拿下另一本书(书2:onCreate),然后把书本2放到桌上并打开(书2:onStart、onResume)。

如果书本1被书本2完全盖住了,即不可见了,就调用书本1的onStop;而如果书本2较小,没有完全盖住书本1,则不会调用。

我们还可以把书本1放回书架上,即onDestroy。

另外,还有一点要注意,Activity在处于onPause、onStop、onDestroy状态下,系统都可以销毁该Activity所在进程,所以我们在处理一些要保存的数据时,必须在onPause方法中进行,因为onStop和onDestroy方法不一定会被调用。

 二、 Activity配置与使用

    在Android项目中有一个非常重要的配置文件AndroidManifest.xml,

<application android:icon="@drawable/myicon" android:label="@string/app_name">  application配置节点用来设置应用程序的配置信息,

android:icon表示应用程序的图标,android:label表示应用程序的名称,我这里的示例配置中@drawable/myicon表示图标取自res->drawable->myicon.jpg

android2.1以后图标资源又分成了三个子目录,应该是res->drawable-hdpi->myicon.jpg,string/app_name表示应用程序名称取自res->values->strings.xml中的<string name="app_name">项目名称</string>配置节

项目中的所有的Acitivity要能运行,必须在<application >节点下配置<activity/>节点基本规则如下:<activity android:name="您要使用的Activity所在的类名"></activity>

activity 这么多,怎么确定哪个activity 是启动项目时第一个运行的呢?

 <activity android:name="com.ui.Main"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>       
   </activity>

像以上这个示例如果有 <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>     表示这个Activity是启动时运行的第一个Activity。

类名是com.ui.Main;

 

posted on 2011-08-10 16:07  生如夏花之灿烂  阅读(1330)  评论(0编辑  收藏  举报