什么是Activity?
Android中的Activity是什么?Activity可以理解为是活动,服务或者是一个界面,但是这些说法都不是准确,但是并不妨碍我们理解。我们可以举例来说明一下Activity,我们打开手机,点击一个应用,我们进入应用。进入应用首先是一个界面,这个界面其实就是一个Activity。当我们点击界面上的一个按钮或者其他的时候,我们可能会进入另一个界面,这时即使我们进入了另一个Activity。但是刚才的Activity并没有消失,而是被停止,当我们从当前的Activity退出的时候,我们就会回到之前的Activity。Activity的作用其实就是显示应用界面与我们用户进行交互的(这样一直说Activity会不会有点晕啊,嘿嘿,不过我觉的应该比较好理解的。)
Activity的生命周期
要想使用好Activity首先要掌握Activity的生命周期。Activity都是存储在堆栈中的,遵循先进后出的原则。这也正符合刚才我们描述的Activity的切换。
学习Activity的生命周期我们先看下图:
1. onCreate()
初始化Activity,这个方法会在活动第一次创建的时候被调用。用于给Activity进行初始化。
2. onStart()
执行此方法后Activity变为可见状态。
3. onResume()
运行此方法后,Activity处于运行状态,用户可以进行交互。此时的Activity一定是处于堆栈的栈顶,正在运行。
4. onPause()
通常我们从这个当前Activity进入另一个Activity的时候会执行此方法,暂停当前的的Activity,然后启动另一个Activity。此时当前的Activity还是可见的。
5. onStop()
当另一个Activity启动后(也就是执行onResume后),当前的Activity执行该方法,进入停止状态,该方法后,Activity变为不可见。
6. onDestroy()
当从该Activity退出后,执行onDestroy()方法,Activity死亡,意味着生命的结束。
正如图中所示,Activity的生命周期可以分为三层:
(1)完整生存期:
从onCreate()一直到onDestroy()销毁结束。
(2)可见生存期:
onStart()执行后可见,直到onStop()执行后不可见。
(3)前台生存期
Activity在onResume()和onPause()之间的是Activity在前台的运行的过程。
实例演示
前台生存期
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//隐藏标题栏,必须写在setContentView方法的前面。
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
Log.d("Activity0818", "运行onCreate");
}
//重写onStart方法,并定义日志
@Override
protected void onStart() {
super.onStart();
Log.d("Activity0818", "运行onStart");
}
//重写onResume方法,并定义日志
@Override
protected void onResume() {
super.onResume();
Log.d("Activity0818", "运行onResume");
}
//重写onPause方法,并定义日志
@Override
protected void onPause() {
super.onPause();
Log.d("Activity0818", "运行onPause ");
}
//重写onStop方法,并定义日志
@Override
protected void onStop() {
super.onStop();
Log.d("Activity0818", "运行onStop ");
}
//重写onDestroy方法,并定义日志
@Override
protected void onDestroy() {
super.onDestroy();
Log.d("Activity0818", "运行onDestroy ");
}
}
可见生存期
//MainActivity
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//隐藏标题栏
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
Log.d("Activity0818", "运行onCreate");
//创建一个点击事件,启动第二个界面
Button button1 = (Button) findViewById(R.id.button1);
button1.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View view) {
Log.d("Activity0818", "运行onClick ");
Intent intent = new Intent(getApplicationContext(), SecondActivity.class);
startActivity(intent);
}
});
}
@Override
protected void onStart() {
super.onStart();
Log.d("Activity0818", "运行onStart");
}
@Override
protected void onResume() {
super.onResume();
Log.d("Activity0818", "运行onResume");
}
@Override
protected void onPause() {
super.onPause();
Log.d("Activity0818", "运行onPause ");
}
@Override
protected void onStop() {
super.onStop();
Log.d("Activity0818", "运行onStop ");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d("Activity0818", "运行onDestroy ");
}
@Override
protected void onRestart() {
super.onRestart();
Log.d("Activity0818", "运行onRestart ");
}
}
//SecondActivity
public class SecondActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Log.d("Activity0818", "SecondActivity运行onCreate ");
}
@Override
protected void onStart() {
super.onStart();
Log.d("Activity0818", "SecondActivity运行onStart");
}
@Override
protected void onResume() {
super.onResume();
Log.d("Activity0818", "SecondActivity运行onResume");
}
@Override
protected void onPause() {
super.onPause();
Log.d("Activity0818", "SecondActivity运行onPause ");
}
@Override
protected void onStop() {
super.onStop();
Log.d("Activity0818", "SecondActivity运行onStop ");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.d("Activity0818", "SecondActivity运行onDestroy ");
}
}