zoukankan      html  css  js  c++  java
  • Activity及其生命周期

    题记: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
    看不清未来,那就看脚下。
  • 相关阅读:
    关于oracle的相关基础语句
    devexpress中如何给TabPage控件的Tab定义背景色
    asp.net中当点击按钮时出现grid编辑弹框
    DEV中dx:ASPxPopupControl 控件的使用(在窗口关闭或隐藏时,清楚文本框中的内容)
    aspx中如何绑定llistbox数据列表
    asp.net中选择数字时,另外的数字同时发生变化(适用dev控件)
    js中substring和substr的用法(文章来自bobo327的博客园)
    QT中常用控键
    sqlite常用语句
    计算机视觉-基于内容的图像检索
  • 原文地址:https://www.cnblogs.com/caiwan/p/2874950.html
Copyright © 2011-2022 走看看