启动 Activity
不像其他编程范例会提供一个 main() 入口函数,Android 启动和关闭一个 Activity 都会调用一系列的回调函数
理解生命周期回调
在 Acitivity 的生命周期中,Android 系统会像在金字塔上前进一样逐步调用系统中的核心函数。就是说,在生命周期中的每一个状态在这个金字塔中都是单独的。为了创建一个 Acitivity,系统会逐步调用生命周期中的回调函数直到这个金字塔的最顶端,也就是 Acitivity 的运行在最前端的状态,并能和用户进行交互。
当用户离开 Activity 的时候(比如退出应用程序、使用你的APP的过程中接到来电),系统会从金字塔的最顶端(运行状态)一步步原路返回(返回的过程中也会调用一系列的系统回调函数来关闭 Activity),直到 Activity 销毁。但是有些时候,Activity 仅仅只会调用部分回调函数,比如用户切换到另外一个 APP。下面附上一张简化的 Activity 生命周期函数图
根据你的应用复杂程度,你应该不需要实现生命周期函数中的所有方法。然而,理解它们中每一个函数是非常重要的,这有利于你的应用行为是不是用户所期待的样子。
实现你需要的生命周期函数来确保你的应用程序能够良好的展现给用户要注意以下几点:
- 当用户接到电话或者切换到另外一个应用程序的时候,你的程序可别崩溃啊!那是另用户很反感的
- 当用户没有主动使用系统中的资源的时候保证你的应用程序不会过多的浪费
- 当用户暂时离开你的 APP 再回过来的时候不要让用户之前的操作记录丢失
- 当用户旋转屏幕的时候不要丢失用户数据,更重要的是别让你的 APP 崩溃了
生命周期函数详解
- onCreate():acitivity 第一次启动时调用。你可以在这个函数中进行 APP 的所有初始化操作(但是所有跟网络相关的操作避免在此运行,无法避免的话需要使用异步操作来执行),接下来会调用 onStart()
- onStart():当用户能看到你的 app 的时候会调用该函数,接下来调用 onResume()
- onRestart():当你的 app 停止后(指调用 onStop())再次启动会调用此函数,接下来调用 onStart()
- onResume():在这个状态下,activity 是运行在系统最前端能够和用户交互的(有时也叫做“运行“状态),下面会调用 onPause(),但是是在用户操作的情况下,如切换 app
- onPause():当用户切换到另外一个 app 或者其他情况下会调用该函数,通常在这个函数中进行保存用户数据、停止动画、释放所有消耗内存的操作等等。接下来会有两种情况,如果 activity 回到最前端会调用 onResume(),或者被系统回收在后台会调用 onStop()
- onStop():当你的 activity 被另外一个 acitivity 覆盖的时候会调用。接下来会有两种情况,如果回到能和用户交互的情况下,会调用 onRestart() 或者彻底退出会调用 onDestroy()
- onDestroy():activity 退出时调用。你可以使用 isFinishing() 来判断 activity 是否已经退出