界面容器 | 青训营笔记

76 阅读3分钟

这是我参与「第四届青训营 」笔记创作活动的第1天,在完成大项目的过程中对界面组件有了一个相对完整的理解。

1. Activity

Activity是安卓开发过程中可以直观看见的界面容器,其中可放置UI组件,用于用户和软件的交互。

    创建方法很简单,概括只有三步:
    注册—>布局—>绑定;
    在项目文件中,首先在Manifest文件中声明一个类文件,比如MainActivity,再声明一个布局文件,如activity_main.xal,最后在MainActivity中通过setContentView进行绑定,就简单完成了一个Activity界面的创建。
Activity的生命周期:
    -onCreate():创建时回调,在此时创建视图和绑定数据
    -onStart():Activity已启动,即将进入前台,界面不可见
    -onResume():界面完全可见,用户开始交互,位于Activity栈顶
    -onPause():要进入下一个Activity或者退出时进入此周期,界面部分可见,下一个生命周期是onResume()或onStop()
    -onStop():Activity不再可见,下一个回调是onRestart()或onDestroy()
    -onRestart():重启已停止的Activity,下一个回调是onStart()
    -onDestroy():销毁Activity,释放该Activity的所有资源
    -onSaveInstanceState():系统回收界面时回调,用于保存数据,不支持持久化数据
    -onRestoreInstanceState():恢复数据

其实在实现项目作业的过程中,我们没有完全实现所有的生命周期里的方法,但还是需要对每一个生命周期状态的含义,下面用图示来说明Activity的生命周期状态:

image.png

图1-Activity生命周期

虽然图1中列举了很多状态,但只有三个状态时稳定的:Resumed、Paused、Stopped;而其他状态都属于过渡态,不会停留。

当我们打开一个Activity页面时,步骤流程从1 -> 2 -> 3;关闭页面时的步骤为4 -> 5 -> 6。

下图说明了Activity暂停与恢复的过程: image.png

图2-Activity的暂停与恢复过程

Activity的暂停也就是对栈顶的Activity进行部分遮挡,调用onPause()方法使Activity进入Pause状态,当结束遮挡后,调用onResume()方法使之恢复到Resume状态。

当一个Activity从后台重新回到前台状态时,即下图所示的1->2->3->4的过程。 image.png

图3-Activity的暂停与恢复过程

这张图示与图2不同的地方在于,图2中的Activity只是进行了部分界面内容的遮挡,而图3中的Activity界面已经进入后台,不再可见。此时的Activity要么调用onRestart()进行恢复,要么就是进行销毁。

从图3中也可以看出,当Activity由不可见到可见的过程中,都调用了onStart()方法。

2. Fragment

Fragment是依赖于Activity的模块化的界面组件,可以说一个Activity由多个Fragment组成,有自己独立的生命周期,但也受Activity的影响。

    创建方法:
        1、创建Fragment布局文件
        2、创建子类,加载布局文件
        3、Activity加载Fragment
            静态加载:布局中绑定
            动态加载:FragmentManager加载
Fragment的生命周期:
    -onAttach():和Activity建立关联时调用
    -onCreateView():创建视图时调用
    -onActivityCreated():Activity的onCreate()方法已返回时调用
    -onDestroyView():视图被移除时调用
    -onDetach():和Activity取消关联时调用

3.Activity&Fragment小结:

Fragment的出现是为了适配平板等多种移动设备,依附于Activity存在的,二者的生命周期有一定的区别,但Fragment会受到Activity生命周期的影响。

Fragment比Activity更灵活,Fragment可以在一个界面上替换一部分的页面,Activity只能进行跳转切换。