Android之Activity生命周期的理解

来源:互联网 发布:手机读心术软件 编辑:程序博客网 时间:2024/04/29 14:15

1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResumeActivity进入运行状态。

2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。

3.当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。

4.当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。

5.用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。

6.当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。

7.用户退出当前Activity:系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity

下面以实际例子说明:

界面布局代码就不发了,没什么,就TextviewButton两组控件。

MainActivity类中主要代码

public class MainActivity extends Activity implements OnClickListener {

private Button bt1;

private Button bt2;

 

private static final String TAG="MainActivity";

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Log.i(TAG"MainActivity.onCreate");

bt1=(Button)this.findViewById(R.id.bt1);

bt2=(Button)this.findViewById(R.id.bt2);

bt1.setOnClickListener(this);

bt2.setOnClickListener(this);

}

protected void onDestory(){

super.onDestroy();

Log.i(TAG,"MainActivity.onDestory");

}

@Override

public void onClick(View v) {

 

 switch (v.getId()) {

case R.id.bt1:

Intent intent=new Intent();

intent.setClass(MainActivity.this, SecondActivity.class);

startActivity(intent);

break;

case R.id.bt2:

 Intent intent1=new Intent();

intent1.setClass(MainActivity.this, ThirdActivity.class);

startActivity(intent1);

break;

    

 

default:

break;

}

 

   

   

}

protected void onStart(){

super.onStart();

Log.i(TAG"MainActivity.onStart");

}

protected void onResume(){

super.onResume();

Log.i(TAG"MainActivity.onResume");

}

protected void onPause(){

super.onPause();

Log.i(TAG"MainActivity.onPause");

}

protected void onStop(){

super.onStop();

Log.i(TAG"MainActivity.onStop");

}

protected void onRestart(){

super.onRestart();

Log.i(TAG"MainActivity.onRestart");

}

 

 

}

SecondActivity类中主要代码

public class SecondActivity extends Activity{

private static final String TAG="MainActivity";

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.second);

Log.i(TAG"SecondActivity.onCreate");

}

 

protected void onDestory(){

super.onDestroy();

Log.i(TAG,"SecondActivity.onDestory");

}

protected void onStart(){

super.onStart();

Log.i(TAG"SecondActivity.onStart");

}

protected void onResume(){

super.onResume();

Log.i(TAG"SecondActivity.onResume");

}

protected void onPause(){

super.onPause();

Log.i(TAG"SecondActivity.onPause");

}

protected void onStop(){

super.onStop();

Log.i(TAG"SecondActivity.onStop");

}

protected void onRestart(){

super.onRestart();

Log.i(TAG"SecondActivity.onRestart");

}

 

}

ThirdActivity类中主要代码

public class ThirdActivity extends Activity{

private static final String TAG="MainActivity";

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.third);

Log.i(TAG"ThirdActivity.onCreate");

}

protected void onDestory(){

super.onDestroy();

Log.i(TAG,"ThirdActivity.onDestory");

}

protected void onStart(){

super.onStart();

Log.i(TAG"ThirdActivity.onStart");

}

protected void onResume(){

super.onResume();

Log.i(TAG"ThirdActivity.onResume");

}

protected void onPause(){

super.onPause();

Log.i(TAG"ThirdActivity.onPause");

}

protected void onStop(){

super.onStop();

Log.i(TAG"ThirdActivity.onStop");

}

protected void onRestart(){

super.onRestart();

Log.i(TAG"ThirdActivity.onRestart");

}

}

Activity生命周期运行步骤如下

1.运行程序,进入Activity


MainActivit启动了onCreateonStartonResume方法运行程序,Log日志如下图


2.点击进入第二个Activity



此时,Log日志显示如下图



3.点击返回键,回到MainActivity


此时Log日志显示如下图


4.点击进入第三个Activity,显示如下


Log日志显示如下


5.点击返回键,回到MainActivity


Log日志显示如下


6.点击home键回桌面


Log日志显示如下


从头到尾都没有调用onDestory方法,这是为什么,请大神赐教?














 





0 0