安卓app开发-06-Activity的生命周期
- 创建安卓项目之后,会看到一个 HelloWorld 的例子。同时也会看到一个 MainActivity.java 的文件
- MainActivity.java 文件是默认的主页面,主页面的内容为一个TextView控件(HelloWorld!) ,它定义 MainActivity 布局的目的、功能,并包含各种方法的实际代码
- 上图代码:
package com.example.androidtest;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.Menu;
import android.view.Window;
public class MainActivity extends Activity {
private String tag = "MainActivity";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main); //设置一个View模板
Log.d(tag, "In the onStart() event");
}
@Override
public void onStart() {
super.onStart();
Log.d(tag, "In the onStart() event");
}
public void onRestart() {
super.onRestart();
Log.d(tag, "In the onRestart() event");
}
public void onResume() {
super.onResume();
Log.d(tag, "In the onResume() event");
}
public void onPause() {
super.onPause();
Log.d(tag, "In the onPause() event");
}
public void onStop() {
super.onStop();
Log.d(tag, "In the onStop() event");
}
public void onDestroy() {
super.onDestroy();
Log.d(tag, "In the onDestroy() event");
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
activity 介绍
- 一个应用程序通常由多个 activities 组成,他们通常是松耦合关系
- 通常一个应用程序中的 activity 被指定为 "main"activity,当第一次启动应用程序的时候呈现给用户的那个 activity。每一个 activity 然后可以启动另一个 activity 为了完成不同的动作。每一次一个activity 启动,前一个 activity 就停止了,但是系统保留 activity 在一个栈上(“back stack”)。当一个新 activity 启动,它被推送到栈顶,取得用户焦点。Back Stack 符合简单“后进先出”原则,所以,当用户完成当前 activity 然后点击 back 按钮,它被弹出栈(并且被摧毁),然后之前的activity恢复。
- 当一个 activity 因新的 activity 启动而停止,它被通知这种状态转变通过 activity 的生命周期回调函数。有许多回调函数一个 activity 可能会收到,源于它自己的状态变化-无论系统创建它、停止它、恢复它、摧毁它-并且每个回调提供你完成适合这个状态的指定工作的机会。
- 例如,当停止的时候,你的activity应该释放任何大的对象,例如网络数据库连接。当activity恢复,你可以重新获得必要的资源和恢复被中断的动作。这些状态转换都是activity的生命周期的部分。
测试
- 我们启动这个 Hello World 程序,观察日志:我们可以观察到,启动的时候,首先 onCreate() 创建一个页面布局,然后当用户可见的时候,调用 onStart() ,当可以和用户交互的时候,调用 onResume()
- 当我退出这个程序,日志打印的顺序是:onPause() ,onStop() ,onDestroy()。也就说,先暂停,然后停止,然后销毁
总结:
- onCreate() —— 当Activity第一次创建的时候被调用。一般每个
- Activity都需要有一个onCreate()函数
- onStart() —— 当Activity对用户可见的时候被调用。
- onResume() —— 当Activity开始和用户交互的时候被调用。
- onPause() —— 正在运行的Activity马上要被暂停的时候被调用,此时,在这之前的Activity被重新获取。
- onStop() —— 当Activity不在对用户可见的时候被调用。
- onDestroy() —— 当被销毁的时候调用