题记:Activity给用户提供了一个用于交互的屏幕,实际上可以看成多个View的容器。

 

主要对以下三部分进行学习以及加入自己的理解:

    1.activity基本概念以及如何创建

    2.启动和关闭activity

    3.activity生命周期

一、基本概念

    1.Activity

    相当于一个交互界面,里面承载了多个View用来和用户进行交互。当有新的activity创建时,当前的activity会放入栈中,使用返回键可以再次打开activity.那么它本身的创建、暂停、停止、销毁等,包含在整个生命周期中。

    2. 创建

    onCreate():在该方法中,必须调用setContentView()来指定所要展现的View,实际上也就是一个承载View的容器Activity及其生命周期 - 笨小孩 - 我要当地主,展现与数据处理相分离。

 

二、启动和关闭

    1.启动

    通过onStartActivity():不接受返回值处理,只是单纯的调用其他的activity。

    通过onStartActivityForResult():调用其他Activity后接受其返回状态,通过onActivityResult()方法接收,实际上也类似于一个回调函数Activity及其生命周期 - 笨小孩 - 我要当地主

    2.关闭

    通过finish()或者finishActivity()方法来关闭Activity,但是API说不推荐直接使用该方法。因为,Android系统本身会对Activity的生命周期做管理,强制关闭可能会引起不可预知的异常。当然,若是确认用户不再回到该Activity,可以调用上述方法来强制关闭Activity及其生命周期 - 笨小孩 - 我要当地主

 

三、生命周期

    嘿嘿,借用下android官网关于生命周期的图,如下:

Activity生命周期图

    1.整个生命周期。

    从onCreate()开始,到onDestroy()结束。需要在onCreate中注册全局的资源(setContentView,设置按钮监听事件等),在onDestroy中释放资源(关闭线程、释放图片资源)。

    2.可见的生命周期。

    从onStart()开始,到onStop()结束。这个生命周期也即用户能够看见Activity并且与之交互的时期。这两个方法也可能被调用多次。

    3.展示出来的生命周期。

    从onResume()开始,到onPause()结束。这两个方法会频繁调用,因此不要在该方法中添加耗时的操作。

 

   需要注意的方法:

    onPause().是指当前活动的Activity非该Activity,但是又能看见该Activity时。

    onStop().是指当前活动Activity非该Activity,并且该Activity也不可见。顺序上,总是先onPause然后再有onStop的。

    onDestroy().是指在Activity销毁之前调用的方法,有可能在销毁方法调用过程中,也会被系统给杀掉。

 

    有可能会被系统杀掉的状态:

    onPause、onStop、onDestroy。

 

四、保存状态。

    当activity在生命周期各阶段徘徊时,当前View下的状态值或者一些用户数据会丢失掉,因而需要保存activity的状态。

    当activity被系统以为杀掉或者由于横竖屏的切换导致重新创建时,需要调用onSaveInstanceState()方法来保存状态。

    当重新加载activity时,调用onRetoreInstanceState()方法来恢复之前保存的状态。

 

    经过实验发现:onSaveInstanceState()方法一般在onPause和onStop之间调用,onRestoreInstanceState()方法在onStart和onResume方法之间调用。但是不是每次都会调用到。其实View都有实现了这两个回调函数,用来保存当前UI界面上面本身所对应的值。只要View的Id不为空,则会自动来保存当前View上的内容。我们需要做的只是保存自己所定义的成员变量。


总结:
    Activity的生命周期无外乎这几个方法,需要仔细斟酌的地方有以下几点:
  1. 何时唤醒资源、何时保存状态、何时保存数据;
  2. 注意可能会被系统杀掉的状态下保存数据;


其中:Activity生命周期图引用于android开发官网-Activities
posted on 2013-01-24 14:41  西瓜瓜瓜瓜瓜  阅读(265)  评论(0编辑  收藏  举报