Activity组件是四大组件之一,作为一个最重要的组件,中文意思是“活动”,简单使用下,也可以理解为“界面”
应用程序的每一个界面都是一个Activity,所以也可以称为视图界面,简单点理解,类似于vue前端的js部分
项目创建后,默认就会有一个MainActivity的界面,对应着视图界面activity_main
生命周期
每一个页面,都对应一个独立的Activity,不做特殊处理,每个页面的Activity都是独立的,也就是说每个页面都有一个完整的生命周期。
onCreate()
Activity正在被创建。
Activity状态:不可见。
第一次创建的时候调用,用于设置布局(setContentView)、初始化组件、注册广播和数据绑定等。
onStart()
Activity正在被启动,即将开始。
Activity状态:可见,但是还没有前台,但是无法交互。
某些资源重新加载,如返回局部重新刷新数据等。
onResume()
Activity开始活动。
Activity状态:可见,可以交互,运行状态的栈顶。
在这里面可以实现大部分方法,如开启相机,麦克风等。
onPause()
Activity由前台转到后台,这时前台可见,此操作执行的很快,在这一步执行完后,新Activity的onCreate才会执行。
Activity状态:可见,正在停止。
可以进行动画停止、资源回收等操作。
onStop()
此时Activity即将停止。
Activity状态:不可见。
这里可进行大量资源回收的操作。
onDestory()
生命周期的最后一个回调,表示Activity销毁。
Activity状态:不可见。
onRestart()
Activity正在重新启动,由不可见状态变为可见状态
Activity状态:可见
常见的回调流程
- 正常启动:onCreate -> onStart -> onResume
- 正常退出:onPause -> onStop -> onDestroy
- 横竖屏切换:正常退出 -> 正常启动
- A页面跳转B页面:[A]onPause -> [B]onCreate -> [B]onStart -> [B]onResume -> [A]onStop
- B页面返回A页面:[B]onPause -> [A]onRestart -> [A]onStart -> [A]onResume -> [B]onStop -> [B]onDestory
- 切后台:onPause -> onStop
- 从后台切回:onRestart -> onStart -> onResume
启动模式
Activity有四种启动模式:standard、singleTop、singleTask、singleInstance。可以在AndroidManifest.xml里的activity标签设置
standard
系统默认模式,每次启动一个Activity都会创建一个新的实例,无论是否已经创建过。
singleTop
栈顶服用模式,类似于standard,系统启动时,系统会启动当前栈顶Activity是不是要启动的Activity,如果是则不需要创建新的Activity而直接引用这个Activity,如果不是那么创建新的Activity。系统会回调Activity的onNewIntent()的方法。如可以用于通知栏,推送消息页面,当有消息来的时候,点击发现是同一个页面,就不会重新跳转。
singleTask
栈内复用模式,如果栈内已经存在了Activity,则不会重新被创建,同时onNewIntent()会被回调,并且将该Activity实例置于栈顶,原先的Activity则会被销毁出栈。首页可以设置为该模式,因为首页一般只存在一个。
singleInstance
单一实例模式,类似于singleTask,这种模式下,Activity只会存在一个单独的任务栈中,启动与程序分离情况,闹钟的提醒、打开其他应用。
以上就是对Activity的简单理解
Comments NOTHING