一。Activity生命周期
下面这张图估计很多人都非常熟悉:
没错就是Activity生命周期。
Activity是Android组件中最基本,最基础的并且最常见的四大组件之一,用户能直接感受操作。Activity是一个应用程序组件,提供一个界面,让用户可以用来交互进行某项活动。
Activity所有的操作都与用户有密切相关,是一个负责和用户交互的组件,通过setContentView(View)来显示指定控件,一个Activity通常是一个单独的屏幕,里面包含很多个组件。
onCreate():创建界面,做一些数据的初始化工作;
onStart():到这一步用户可见不可交互的状态
onResume():变成和用户交互的,(通过栈的方式管理这些Activity,当前Activity在栈的最上端,运行完出栈,回到上一个Activity)
onPause():到这一步是可见但不可交互,系统会挺止动画等消耗CPU的事情,这里应该保存一些数据,因为这个时候程序的优先级低,有可能被系统收回,从这里保存的数据应该在onResume()里读出来。
onStop():变得不可见,被下一个activity覆盖了
onDestroy():是Activity被kill前最后一个被调用方法了,可能是其他类调用finish方法或者是系统为了节省空间将它暂时性的干掉,可以用isFinishing()来判断它,如果有一个Progress Dialog在线程中运行,必须在onDestroy里把它cancel干掉,不然等线程结束,调用Dialog的cancel方法会抛异常。
注意:onPause(),onstop(),onDestroy(),三种状态下的activity都由可能被系统kill掉。
(1)对于一个特定的Activity,第一次启动,回调如下:onCreate()->onStart()->onResume()
(2)当用户打开新的Activity或者切换到桌面的时候,回调如下:onPause()->onStop()
(3)当用户再次回到原Activity时,回调如下:onRestart()->onStart()->onResume()
(4)当用户按back键回退时,回调如下:onPause()->onStop()->onDestroy()
(5)当Activity被系统回收后再次打开,生命周期回调过程和(1)一样
(6)从整个生命周期来讲,onCreate()和onDestroy()是配对的,标识Activity的创建和销毁,并且只可能有一次调用,从Activity是否可见来说,onStart()和onStop()是配对的,随着用户的操作或者设备的点亮和熄灭,这两个方法可能被调用多次;从Activity是否在前台来讲,onResume()和onPause()是配对的,随着用户操作或者设备屏幕的点亮和熄灭这两个方法可能被调用多次
二。为什么要有生命周期
三。数据传递
public class Student implements Serializable{
private int course;
private String ID;
public int getCourse() {
return course;
}
public void setCourse(int course) {
this.course = course;
}
public String getID() {
return ID;
}
public void setID(String ID) {
this.ID = ID;
}
public Source(String ID, int course) {
this.course = course;
this.ID = ID;
}
}
传递方:
Intent intent = new Intent(MainActivity.this,OtherActivity.class);
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
tv.setText(data.getStringExtra("info"));
}
intent.putExtra("info",editText.getText().toString());
setResult(0, i); // 0表示成功
finish();