Android开发基础之Activity,图解Activity状态与生命周期
Posted 舒泱
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Android开发基础之Activity,图解Activity状态与生命周期相关的知识,希望对你有一定的参考价值。
目录
一、Activity是什么?
Activity是android的四大组件之一,Activity利用View来实现应用程序的图形用户界面GUI,而手机用户则是通过GUI和应用程序做交互。
一个Activity代表一个显示给用户的屏幕。一个应用程序需要多少个Activity?每个Activity表示什么样的界面?这些问题都取决于具体的程序设计。通常,程序启动后显示的第一幅画面是应用程序的第一个Activity,应用程序需要至少一个Activity作为主屏幕,同时需要其他Activity作为补充。
二、Activity栈
Android系统中,所有Activity都被保存在Activity栈中。
当启动一个新Activity后,新Activity就会被压栈并处于栈顶,用户屏幕上显示的就是栈顶的Activity。如果用户按下返回键回到上一个画面,那么栈顶的Activity就会被弹出,之前位于栈顶的第二个Activity就会变成栈顶Activity。
三、Activity状态
Activity有以下4种状态:
- 活跃。 当一个Activity位于Activity栈顶的时候,它所代表的用户界面处于屏幕的前端,对于用户来说是可见的 ,而且用户还能在这个界面上进行输入,也就是它拥有用户输入的焦点 。
- 暂停。 暂停状态下的Activity对用户来说是可见的 ,但它不拥有用户输入的焦点 。出现这种情况的场景可能是:在应用程序的前端出现了一个非全屏显示的Activity,处于暂停状态的Activity位于这个非全屏显示的Activity下方,用户还是能看见,看不能在暂停状态的Activity用户界面上进行输入。
- 结束。 一个暂停的Activity在屏幕上变得不可见时,它的状态就是结束。系统会在内存中保存结束状态的Activity的状态信息,以便当Activity变为可见时,系统能迅速切换其状态。
- 销毁(非活跃)。 当Activity彻底结束后,从Activity栈中移除,这时的Activity状态为非活跃。
程序员和用户都无法预知Activity状态的变化,Activity状态的变化完全由Android内存管理器决定,变化顺序是不确定的。
当系统内存不足需要释放资源时,处于结束状态的Activity是首选对象。通常系统不会结束处于暂停状态下的Activity,但如果系统内存严重不足,系统也可能会释放暂停的Activity。
四、Activity生命周期
Activity完整的生命周期是指一个Activity从创建(调用onCreate())到销毁(调用onDestroy())的过程,期间可能经历多个状态的变化迁移,Android系统提供了例如onCreate()、onStart()、onResume()等回调方法,当Activity状态发生变化时,相应的方法就会被调用。
- onCreate():用于初始化Activity。从包中获取数据,填充界面,为界面控制分配数据,创建服务和线程。
- onStart():在Activity对用户可见时调用。如果Activity进入前台,则紧跟着onResume();如果活动被隐藏,则紧跟着onStop()。
- onResume():在Activity将开始与用户互动时调用。此时的Activity位于Activity栈的顶部,可见且具有用户输入的焦点。
- onPause():当Activity进入后台但尚未被杀死时,被称为Activity生命周期的一部分。
- onStop():不再对用户可见时调用。
- onDestroy():Activity结束时调用。重载onDestroy()方法可以清除在调用onCreate()时创建的资源,通常,在onDestroy()中我们需要确保网络链接、数据连接等已经被关闭。
- onRestart():在Activity停止之后,再次开始之前调用。
五、Activity启动模式
- standard
- singleTop
- singleTask
- singleInstance
以上是关于Android开发基础之Activity,图解Activity状态与生命周期的主要内容,如果未能解决你的问题,请参考以下文章