Android四大组件:Activity、Service、Broadcast Receiver、Content Provider
什么是Activity
Activity管理程序的交互界面;一个程序中通常由多个Activity构成,都会在Manifest.xml中指定一个主的Activity
Activity生命周期
Activity生命周期的有五个阶段
- 启动阶段
- 运行状态:处于屏幕最前端,可交互
- 暂停状态:可见,无法获取焦点,不可操作
- 停止状态:不可见,系统内存不足时会销毁Activity
- 销毁状态:清理出内存
其中启动和销毁是过渡阶段,不会长时间处于这两个状态
Activity生命周期的有7个方法
- Void onCreate(Bundle savedInstanceState)
- Void onStart()
- Void onRestart()
- Void onResume()
- Void onPause()
- Void onStop()
- Void onDestroy()
状态切换对应的操作
启动: onCreate()—>onStart()—>onResume(),等待交互
切换后台: onPause()—>onStop(),进入停止状态
返回前台: onRestart()—>onStart()—>onResume(),回到运行状态
Activity后台运行时,如果内存不足, 处于停止状态的Activity会被销毁
锁屏调用onPause()
解锁调用onResume()
Android周期图示:
图片来源 https://sites.google.com/site/xiexieveryday/android/android1-1/android1-1-0
Activity跳转
Activity跳转需要用到intent(意图:是一种交互方式,还可以在不同组件传递数据)
intent一般用于启动Activity,Service和广播
根据启动组件方式不同,又分为显示意图和隐式意图,显示意图指明启动的组件,隐式意图没有明确指定,而是通过action等属性分析,打开目标Activity
intent组成
intent数据传递
假设要实现从Activity1到Activity2,从Activity2回传数据
Activity1代码
1 | Intent intent = new Intent(this,Activity2.class); |
第一行,创建一个跳转到Activity2的intent
第二行,startActivityForResult(int requestCode,intent data)
跳转
Activity2代码
1 | Intent intent = new Intent(); |
第一行,创建一个intent
第二行,调用putEXtra()
添加回传数据
第三行,调用setResult(int resultCode,intent data)
回传数据
Activity1想要接收Activity2回传的数据,要复写onActivityResult()
方法接收
1 | protected void onActivityResult(int requestCode,int resultCode,intent data){ |