当前位置:   article > 正文

Activity生命周期_activity获得焦点的执行方法

activity获得焦点的执行方法

       在Activity从创建到销毁的过程中需要不同的阶段调用7个不同的生命周期方法:

  1. onCreate(Bundle savedInstanceState);
  2. onStart();
  3. onResume();
  4. onPause();
  5. onStop();
  6. onRestart();
  7. onDestory();
       Activity从创建到销毁的四个主要阶段为:

       1.开始Activity:这个阶段调用三个生命周期方法:onCreate()->onStart()->onResume();

       2.Activity是去焦点:如果在Activity获得焦点的情况下进入其他的Activity或者应用程序,当前的Activity就会失去焦点。指定的生命周期方法为:onPause()->onStop();

       3.Activity重新获得焦点:在Activity重新获得焦点时执行:onRestart()->onStart()->onResume();

       4.Activity销毁:在Activity关闭时系统将会依次执行:onPause()->onStop()->onDestory();

       在执行的过程中可以改变系统的执行轨迹的生命周期方法是:onPause()和OnStop()。

       如果在执行onPause()方法的过程中Activity重新获得焦点,然后又失去焦点,系统将不会执行onStop()而是按照onPause()->onResume()->onPause();

       如果在执行onStop()方法的过程中Activity重新获得了焦点,然后又失去了,系统将不会执行onDestory(),而是按照:onStop->onRestart()->onStart()->onResume()->onPause()->onStop();

      生命周期流程图如下:


     

        在整个Activity的生命周期中包含两层循环,第一层循环是:onPause()->onResume(),第二层循环是:onPause()->onStop->onRestart()->onStart()->onResume().可以将这两层循环定义为Activity生命周期的子周期,第一层成为焦点生命周期,第二层可以称之为可视化生命周期。也就是说,第一层循环在Activity焦点的获得与市区的过程中循环,这一个过程中Activity始终是可见的。第二层循环是在Activity可见于不可见的过程中循环,在这个过程中伴随着Activity焦点的获得与失去。也就是说,Activity首先会被显示,然后获得焦点,接着失去焦点,最后由于弹出其他的Activity使当前的Activity变成了不可见。

        总的来说Activity有以下三个生命周期:

        整体生命周期:onCreate()->........->onDestory()

        焦点生命周期:onPause()->.........->onResume()

        可视生命周期:onStart()->...........->onStop()

测试代码:

MainActivity:

  1. package com.test.cycletest;
  2. import android.os.Bundle;
  3. import android.app.Activity;
  4. import android.app.AlertDialog;
  5. import android.app.Dialog;
  6. import android.content.DialogInterface;
  7. import android.content.Intent;
  8. import android.util.Log;
  9. import android.view.View;
  10. public class MainActivity extends Activity {
  11. @Override
  12. protected void onCreate(Bundle savedInstanceState) {
  13. super.onCreate(savedInstanceState);
  14. setContentView(R.layout.activity_main);
  15. Log.i("onCreate", "onCreate method is Executed");
  16. }
  17. public void press(View view)
  18. {
  19. AlertDialog.Builder builder=new AlertDialog.Builder(MainActivity.this);
  20. builder.setTitle("测试生命周期");
  21. builder.setMessage("点击消失");
  22. final Dialog test_dialog=builder.create();
  23. builder.setPositiveButton("取消", new DialogInterface.OnClickListener() {
  24. @Override
  25. public void onClick(DialogInterface dialog, int which) {
  26. test_dialog.dismiss();
  27. }
  28. });
  29. builder.setPositiveButton("确定", new DialogInterface.OnClickListener() {
  30. @Override
  31. public void onClick(DialogInterface dialog, int which) {
  32. test_dialog.dismiss();
  33. }
  34. });
  35. test_dialog.show();
  36. }
  37. public void next(View view)
  38. {
  39. Intent intent=new Intent(MainActivity.this, SecondActivity.class);
  40. startActivity(intent);
  41. }
  42. @Override
  43. protected void onStart() {
  44. super.onStart();
  45. Log.i("onStart", "onStart method is Executed");
  46. }
  47. @Override
  48. protected void onResume() {
  49. super.onResume();
  50. Log.i("onResume", "onResume method is Executed");
  51. }
  52. @Override
  53. protected void onPause() {
  54. super.onPause();
  55. Log.i("onPause", "onPause method is Executed");
  56. }
  57. @Override
  58. protected void onStop() {
  59. super.onStop();
  60. Log.i("onStop", "onStop method is Executed");
  61. }
  62. @Override
  63. protected void onRestart() {
  64. super.onRestart();
  65. Log.i("onRestart", "onRestart method is Executed");
  66. }
  67. @Override
  68. protected void onDestroy() {
  69. super.onDestroy();
  70. Log.i("onDestroy", "onDestroy method is Executed");
  71. }
  72. }
SecondActivity:

  1. package com.test.cycletest;
  2. import android.app.Activity;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. public class SecondActivity extends Activity {
  7. @Override
  8. protected void onCreate(Bundle savedInstanceState) {
  9. super.onCreate(savedInstanceState);
  10. setContentView(R.layout.activity_sec);
  11. }
  12. public void previce(View view)
  13. {
  14. Intent intent=new Intent(SecondActivity.this, MainActivity.class);
  15. startActivity(intent);
  16. }
  17. }

       部署程序运行,然后点击“点击切换到下一个界面“按钮,在按住回退键返回,最终退出应用,整个过程中的LogCat打印信息如下:



到此测试完毕


      


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/笔触狂放9/article/detail/791056
推荐阅读
  

闽ICP备14008679号