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的声明做如下修改:


更多相关文章

  1. Android实现定时器的方法
  2. Android(安卓)PackageManager 卸载包的方法
  3. Android(安卓)P ActivityManagerService(六) startActivity的第四
  4. android Camera模块分析
  5. Android实现两次按下返回键退出
  6. java/android查询手机固话归属地、GSM卡信息
  7. Android全屏的两种方法
  8. 浅谈Java中Collections.sort对List排序的两种方法
  9. Python list sort方法的具体使用

随机推荐

  1. “天池PAI-DSW”创建一个斐波那契数列计
  2. 关于OSIsoft PI软件存在访问控制漏洞和跨
  3. 关于Hirschmann的Classic Platform Switc
  4. java内存模型之volatile核心原理与应用
  5. ubuntu18.04网卡配置静态ip
  6. 如何通过gzip和nginx来提高网站打开速度
  7. Kafka单节点至集群的安装部署及注意事项
  8. 重磅:Flume1-7结合kafka讲解
  9. css
  10. 做好自定义预测,探寻产品增长动能