源码网商城,靠谱的源码在线交易网站 我的订单 购物车 帮助

源码网商城

Activity生命周期实例讲解

  • 时间:2022-08-14 17:58 编辑: 来源: 阅读:
  • 扫一扫,手机访问
摘要:Activity生命周期实例讲解
 Activity中有7个与生命周期有关的函数。其中onCreated()是activity第一次被启动时执行的,主要是初始化一些变量,onRestart()是当前activity重新被启动时调用的;绑定一些监听器等;onStart()是activity界面被显示出来的时候执行的;onResume()是当该activity与用户能进行交互时被执行;onPause()是另一个activity被启动,当前的activity就被暂停了,一般在该函数中执行保存当前的数据;onStop()表示另一个activity被启动完成时,当前activity对用户同时又完全不可见时才调用的;onDestroy()是退出当前activity时调用的,当然如果程序中调用finish()或者说android系统当前资源不够用时就会被调用。 当用多个activity在执行时,这时候android系统会自动将这些activity压入栈中并且总是显示最顶的那个activity,这个栈在android叫做task,但是这个栈只支持压入和弹出操作,不支持排序插入等操作。 Activity的7个生命周期函数中的onStop()函数被调用时是在其对应的activity被另外的activity完全遮挡的时候,如果只有部分遮挡,则不会被调用。部分遮挡一般是以消息activtiy的形式出现,这个只需在AndroidManifest.xml中将其对于的activity的主题设置theme中更改即可。 这7个周期函数,当系统资源不够时,其中onPause(),onStop(),onDestroy()是有可能被系统kill掉的,但其它4个是不会被kill掉。 参考资料为mars老师的资料。 官方给出关于这7个生命周期的图如下: [img]http://files.jb51.net/file_images/article/201311/20131118143741.jpg[/img]    下面这个实验是有2个activity,第1个activity中有一个按钮调用第2个activity,并且每个activity都重写了这7个生命周期函数,每个生命周期中打印出一条语句,以表示是是哪个activity在执行哪个生命周期函数。 实验过程当显示出了第1个activity后,单击Next Activity!按钮,这是会显示第2个activity,然后又按系统的返回键,返回第1个界面。 这时候打印出来的结果如下图所示: [img]http://files.jb51.net/file_images/article/201311/20131118143752.jpg?20131018143932[/img]   由此可见,一开始程序运行时是首先调用第1个activity的onCreate(),onStart(),onResume()函数,然后按下button后,调用第1个activity的onPause(),和第2个activity的onCreate(),onStart(),onResume()函数,然后接着调用第1个activity的onStop(),当按下系统返回键时,这时会调用第2个activity的onPause(),接着是第1个activity的onRestart(),onStart(),onResume(), 最后是调用第2个的onStop()和onDestroy(). 界面1如下所示:   [img]http://files.jb51.net/file_images/article/201311/20131118143801.jpg?2013101814409[/img]   MainActivity.java:
[u]复制代码[/u] 代码如下:
package com.example.lifeone; 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 MainActivity extends Activity {     private Button btn;     @Override     public void onCreate(Bundle savedInstanceState) {  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_main);  btn = (Button)findViewById(R.id.next_activity);  btn.setText(R.string.next_activity);  System.out.println("first activity: onCreate()");  btn.setOnClickListener(new MyNextActivity());     }     @Override     protected void onDestroy() {  System.out.println("first activity: onDestroy()");  super.onDestroy();     }     @Override     protected void onPause() {  System.out.println("first activity: onPause()");  super.onPause();     }     @Override     protected void onRestart() {  System.out.println("first activity: onRestart()");  super.onRestart();     }     @Override     protected void onResume() {  System.out.println("first activity: onResume()");  super.onResume();     }     @Override     protected void onStart() {  System.out.println("first activity: onStart()");  super.onStart();     }     @Override     protected void onStop() {  System.out.println("first activity: onStop()");  super.onStop();     }     class MyNextActivity implements OnClickListener     {  public void onClick(View v) {  Intent intent = new Intent();  intent.setClass(MainActivity.this, SecondActivity.class);  MainActivity.this.startActivity(intent);  }     } }
SecondActivity.java:
[u]复制代码[/u] 代码如下:
package com.example.lifeone; import android.os.Bundle; import android.app.Activity; import android.view.Menu; public class SecondActivity extends Activity {     @Override     public void onCreate(Bundle savedInstanceState) {  System.out.println("second activity:onCreate()");  super.onCreate(savedInstanceState);  setContentView(R.layout.activity_second);     }     @Override     protected void onDestroy() {  System.out.println("second activity: onDestroy()");  super.onDestroy();     }     @Override     protected void onPause() {  System.out.println("second activity: onPause()");  super.onPause();     }     @Override     protected void onRestart() {  System.out.println("second activity: onRestart()");  super.onRestart();     }     @Override     protected void onResume() {  System.out.println("second activity: onResume()");  super.onResume();     }     @Override     protected void onStart() {  System.out.println("second activity: onStart()");  super.onStart();     }     @Override     protected void onStop() {  System.out.println("second activity: onStop()");  super.onStop();     } }
  • 全部评论(0)
联系客服
客服电话:
400-000-3129
微信版

扫一扫进微信版
返回顶部