activity的生命周期
最近在重拾Android,下面的代码是对Activity生命周期的总结,可能还没吃透,一点一滴积累吧!
新建Andriod Project,新建Activity如下:
import android.os.Bundle;
import android.app.Activity;
import android.util.Log;
import android.view.Menu;
/**
* 个人总结Activity的生命周期
*/
public class MainActivity extends Activity {
/**
* 初始化activity的UI
*/
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
this.addLogToTextView("------onCreate()------");
}
/**
* activity可能可见了,但还不是可交互的
*/
protected void onStart() {
super.onStart();
this.addLogToTextView("------onStart()------");
}
/**
* activity在onStop后可以通过调用此方法重新回到onStart阶段,不用再次初始化UI
*/
protected void onRestart() {
super.onRestart();
this.addLogToTextView("------onRestart()------");
}
/**
* activity获得焦点,在与用户交互,显示在屏幕最前端
*/
protected void onResume() {
super.onResume();
this.addLogToTextView("------onResume()------");
}
/**
* activity被另一个透明或者 Dialog 样式的 Activity 覆盖等等
*/
protected void onPause() {
super.onPause();
this.addLogToTextView("------onPause()------");
}
/**
* activity被另外一个 activity覆盖、失去焦点并不可见,失去和用戶的交互
*/
protected void onStop() {
super.onStop();
this.addLogToTextView("------onStop()------");
}
/**
* 销毁activity,回收占用资源
*/
protected void onDestroy() {
super.onDestroy();
this.addLogToTextView("------onDestroy()------");
}
/**
* 輸出activity生命週期中各個方法的調用順序
*/
public void addLogToTextView(String str) {
Log.e("Activity_Life", str);
}
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
}
运行结果
运行后点开应用程序,Activity可见时,可以在Logcat看到Activity执行了如下方法 onCreate()->onStart()->onResume(),此时Activity为Active状态:
然后点击Home键,Activity会执行onPause()->onStop(),此时为Stopped状态,Logcat输出如下:
再由Home键进入应用程序时,Activity会执行onRestart()然后onStart()->onResume(),重新回到Active状态:
最后点击Back键,退出应用程序,Activity进入Killed状态,此时执行了如下方法onPause()->onStop()->onDestroy():