美文网首页
Android四大组件-Activity

Android四大组件-Activity

作者: 雷根儿 | 来源:发表于2021-08-13 11:52 被阅读0次

    今天复习Android四大组件ActivityServiceBroadcastReceiverContentProvide

    一、Activity

    1.Activity是什么?
    Activity是一种展示型组件,主要是向用户展示一个界面,并且可以接收用户的输入信息从而和用户进行交互。每个活动都有一个窗口,用于绘制其用户界面。窗口通常填满屏幕,但可能比屏幕小,并漂浮在其他窗口的顶部。例如:"android:theme="@android:style/Theme.Dialog" 将一个Activity显示为对话框模式
    2.Activity生命周期

    生命周期.png
    • 正常情况下,Activity的常用生命周期就只有如下7个:

    onCreate():表示Activity正在被创建,常用来初始化工作,比如调用setContentView加载界面布局资源,初始化Activity所需数据等,不可见;
    onRestart():表示Activity正在重新启动,一般情况下,当前Acitivty从不可见重新变为可见时,OnRestart就会被调用;
    onStart():表示Activity正在被启动,此时Activity可见但不在前台,还处于后台,无法与用户交互;
    onResume():表示Activity获得焦点,此时Activity可见且在前台并开始活动,这是与onStart的区别所在;
    onPause():表示Activity正在停止,此时可做一些存储数据、停止动画等工作,但是不能太耗时,因为这会影响到新Activity的显示,onPause必须先执行完,新Activity的onResume才会执行,可见;
    onStop():表示Activity即将停止,可以做一些稍微重量级的回收工作,比如注销广播接收器、关闭网络连接等,同样不能太耗时,不可见;
    onDestroy():表示Activity即将被销毁,这是Activity生命周期中的最后一个回调,常做回收工作、资源释放;

    • 其中切换Activity时各方法的执行次序是:

    (A)onPause→(B)onCreate→(B)onStart→(B)onResume→(A)onStop
    1.一个Activity或多或少会占有系统资源,而在官方的建议中,onPause方法将会释放掉很多系统资源,为切换Activity提供流畅性的保障,而不需要再等多两个阶段,这样做切换更快。
    2.按照生命周期图的表示,如果用户在切换Activity的过程中再次切回原Activity,是在onPause方法后直接调用onResume方法的,这样比onPause→onStop→onRestart→onStart→onResume要快得多。

    • 与生命周期密切相关的onSaveInstanceState方法和onRestoreInstanceState方法在什么时候执行?

    onSaveInstanceState:(1)在Activity被覆盖或退居后台之后,系统资源不足将其杀死,此方法会被调用;(2)在用户改变屏幕方向时,此方法会被调用;(3)在当前Activity跳转到其他Activity或者按Home键回到主屏,自身退居后台时,此方法会被调用。第一种情况我们无法保证什么时候发生,系统根据资源紧张程度去调度;第二种是屏幕翻转方向时,系统先销毁当前的Activity,然后再重建一个新的,调用此方法时,我们可以保存一些临时数据;第三种情况系统调用此方法是为了保存当前窗口各个View组件的状态。onSaveInstanceState的调用顺序是在onPause之前。
    onRestoreInstanceState:(1)在Activity被覆盖或退居后台之后,系统资源不足将其杀死,然后用户又回到了此Activity,此方法会被调用;(2)在用户改变屏幕方向时,重建的过程中,此方法会被调用。我们可以重写此方法,以便可以恢复一些临时数据。onRestoreInstanceState的调用顺序是在onStart之后。

    • onNewIntent()触发机制


      onNewIntent()触发机制.png

    Android的四种启动模式中,提到了Activity的四种启动模式,在启动模式singleTask和singleTop中,由于系统会判断返回栈中是否存在实例,若存在(singleTop还要求处于栈顶)实例,那么系统会将请求发送到该实例上,因此不会调用常规的onCreate方法,而是调用onNewIntent方法

    二、Service

    相关文章

      网友评论

          本文标题:Android四大组件-Activity

          本文链接:https://www.haomeiwen.com/subject/gwldbltx.html