Activity

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
2
Intent intent = new Intent(this,Activity2.class);
startActivityForResult(intent,1);

第一行,创建一个跳转到Activity2的intent

第二行,startActivityForResult(int requestCode,intent data)跳转

Activity2代码

1
2
3
Intent intent = new Intent();
intent.putEXtra("data","Hello Activity1");
setResult(1,intent);

第一行,创建一个intent

第二行,调用putEXtra()添加回传数据

第三行,调用setResult(int resultCode,intent data)回传数据

Activity1想要接收Activity2回传的数据,要复写onActivityResult()方法接收

1
2
3
4
5
6
7
protected void onActivityResult(int requestCode,int resultCode,intent data){
super.onActivityResult(requestCode,resultCode,data);
if(requestCode==1){
if(resultCode==1)
String st=data.getStringExtra("data");
}
}