Android学习笔记4——Activity的生命周期
Activity的生命周期
七个生命周期函数
protected void onCreate(Bundle savedInstanceState); protected void onStart(); protected void onRestart(); protected void onResume(); protected void onPause(); protected void onStop(); protected void onDestroy();
启动一个新的Activity 就会依次由 Android 操作系统调用:
onCreate: Activity 第一次被调用;设置布局文件、绑定监听器等操作。
onStart:当 Activity 被显示的时候调用
onResume:当 Activity 能获得用户焦点的时候(即用户可以操作该 activity 的时候)。
当当前运行的Activity 被打断时(来电话或跳到另一个 Activity 时)调用 onPause ,在函数内部编写一些保存当前 Activity 数据的代码。以待返回时还原数据。
当一个Activity 处于不可见状态的时候,就会调用该 Activity 的 onStop 方法。比如跳转到新的 Activity 后。如果跳转出来的是一个对话框( Dialog ),则不会调用 onStop 方法。
当一个Activity 调用了 onStop 之后又被返回是,则是调用 onRestart 方法,然后再 onStart 和 onResume 。
当明确地调用了一个Activity 的 finish() 方法,或当 Android 系统资源不足,而某个 Activity 处于不可见状态,则系统会选择销毁掉第一个不可见的 Activity ,则系统就会调用这个 Activity 的 onDestroy 方法,销毁这个 Activity 。
一个Activity 在哪些状态下可以被 Android 操作系统 kill 掉?
onPause(仅在 3.0 版本以前 ) , onStop , onDestroy
Task:任务
一个Task 是一个 Activity 的栈( Stack )。在 Activity 之间进行切换,实际就是这个栈的压栈和弹出的过程。
示例:两个Activity之间进行切换来观察Activity的生命周期
点击Go to Next Activity按钮后:
FirstActivity.java
package me.bym; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class FirstActivity extends Activity { private Button btn = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); System.out.println("FirstActivity----->OnCreate"); btn = (Button) findViewById(R.id.myButton1); btn.setOnClickListener(new GoNextListener()); } class GoNextListener implements OnClickListener { @Override public void onClick(View arg0) { Intent intent = new Intent(); intent.setClass(FirstActivity.this, SecondActivity.class); startActivity(intent); } } @Override protected void onDestroy() { // TODO Auto-generated method stub System.out.println("FirstActivity----->OnDestroy"); super.onDestroy(); } @Override protected void onPause() { // TODO Auto-generated method stub System.out.println("FirstActivity----->OnPause"); super.onPause(); } @Override protected void onRestart() { // TODO Auto-generated method stub System.out.println("FirstActivity----->OnRestart"); super.onRestart(); } @Override protected void onResume() { // TODO Auto-generated method stub System.out.println("FirstActivity----->OnResume"); super.onResume(); } @Override protected void onStart() { // TODO Auto-generated method stub System.out.println("FirstActivity----->OnStart"); super.onStart(); } @Override protected void onStop() { // TODO Auto-generated method stub System.out.println("FirstActivity----->OnStop"); super.onStop(); } }
SecondActivity.java
package me.bym; import android.app.Activity; import android.os.Bundle; public class SecondActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub super.onCreate(savedInstanceState); setContentView(R.layout.second); System.out.println("SecondActivity----->OnCreate"); } @Override protected void onDestroy() { // TODO Auto-generated method stub System.out.println("SecondActivity----->OnDestroy"); super.onDestroy(); } @Override protected void onPause() { // TODO Auto-generated method stub System.out.println("SecondActivity----->OnPause"); super.onPause(); } @Override protected void onRestart() { // TODO Auto-generated method stub System.out.println("SecondActivity----->OnRestart"); super.onRestart(); } @Override protected void onResume() { // TODO Auto-generated method stub System.out.println("SecondActivity----->OnResume"); super.onResume(); } @Override protected void onStart() { // TODO Auto-generated method stub System.out.println("SecondActivity----->OnStart"); super.onStart(); } @Override protected void onStop() { // TODO Auto-generated method stub System.out.println("SecondActivity----->OnStop"); super.onStop(); } }
Dialog Style Activity的生命周期:
源代码同上述代码一致,只需在AndroidManifest.xml中SecondActivity的声明做如下修改:
更多相关文章
- Android实现定时器的方法
- Android(安卓)PackageManager 卸载包的方法
- Android(安卓)P ActivityManagerService(六) startActivity的第四
- android Camera模块分析
- Android实现两次按下返回键退出
- java/android查询手机固话归属地、GSM卡信息
- Android全屏的两种方法
- 浅谈Java中Collections.sort对List排序的两种方法
- Python list sort方法的具体使用