这是我参与「第四届青训营 」笔记创作活动的第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的生命周期状态:
图1-Activity生命周期
虽然图1中列举了很多状态,但只有三个状态时稳定的:Resumed、Paused、Stopped;而其他状态都属于过渡态,不会停留。当我们打开一个Activity页面时,步骤流程从1 -> 2 -> 3;关闭页面时的步骤为4 -> 5 -> 6。
下图说明了Activity暂停与恢复的过程:
图2-Activity的暂停与恢复过程
Activity的暂停也就是对栈顶的Activity进行部分遮挡,调用onPause()方法使Activity进入Pause状态,当结束遮挡后,调用onResume()方法使之恢复到Resume状态。当一个Activity从后台重新回到前台状态时,即下图所示的1->2->3->4的过程。
图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只能进行跳转切换。