• Activity的onRestart()方法调用时机


    在项目中看到Activity使用onRestart(),平时对这个方法的调用时机知道的比较少,研究一下它啥时候会被调用。

    代码很简单:

    1. <span style="font-size:18px;">public class MainActivity extends AppCompatActivity {  
    2.   
    3.     @Override  
    4.     protected void onCreate(Bundle savedInstanceState) {  
    5.         super.onCreate(savedInstanceState);  
    6.         setContentView(R.layout.activity_main);  
    7.         Button btn = (Button) findViewById(R.id.btn);  
    8.         btn.setOnClickListener(new View.OnClickListener() {  
    9.             @Override  
    10.             public void onClick(View v) {  
    11.                 Intent intent = new Intent(MainActivity.this, MainActivity1.class);  
    12.                 startActivity(intent);  
    13.             }  
    14.         });  
    15.         Log.e(MainActivity.class.getSimpleName(), "onCreate()");  
    16.     }  
    17.   
    18.     @Override  
    19.     protected void onRestart() {  
    20.         super.onRestart();  
    21.         Log.e(MainActivity.class.getSimpleName(), "onRestart()");  
    22.     }  
    23.   
    24.     @Override  
    25.     protected void onStart() {  
    26.         super.onStart();  
    27.         Log.e(MainActivity.class.getSimpleName(), "onStart()");  
    28.     }  
    29.   
    30.     @Override  
    31.     protected void onResume() {  
    32.         super.onResume();  
    33.         Log.e(MainActivity.class.getSimpleName(), "onResume()");  
    34.     }  
    35.   
    36.     @Override  
    37.     protected void onPause() {  
    38.         super.onPause();  
    39.         Log.e(MainActivity.class.getSimpleName(), "onPause()");  
    40.     }  
    41.   
    42.     @Override  
    43.     protected void onStop() {  
    44.         super.onStop();  
    45.         Log.e(MainActivity.class.getSimpleName(), "onStop()");  
    46.     }  
    47.   
    48.     @Override  
    49.     protected void onDestroy() {  
    50.         super.onDestroy();  
    51.         Log.e(MainActivity.class.getSimpleName(), "onDestroy()");  
    52.     }  
    53. }  
    54. </span>  


    (1)启动这个demo执行如1;onCreate()--->onStart()--->onResume()这三个方法

    (2)按下home键执行如2;onPause()--->onStop()这两个方法

    (3)再次打开这个demo执行如3;onRestart()--->onStart()--->onResume()三个方法。




    (4)点击界面的btn,跳转到另一个Activity1,会执行如下图1;onPause()--->onStop()两个方法

    (5)从Activity1返回,会执行如下图2;onRestart()--->onStart()--->onResume()三个方法




    (6)切换到其他的应用,执行如下图1;onPause()--->onStop()两个方法

    (7)从其他应用切换回来,执行如下图2;onRestart()--->onStart()--->onResume()三个方法




    总结:可以看到以下几种情况下onRestart()方法是会被调用的,测试的手机MI 2S,系统版本4.1.1。

    (1)按下home键之后,然后切换回来,会调用onRestart()。

    (2)从本Activity跳转到另一个Activity之后,按back键返回原来Activity,会调用onRestart();

    (3)从本Activity切换到其他的应用,然后再从其他应用切换回来,会调用onRestart();



    想知道更详细的Activity生命周期,还可以参考一下文章:

    http://blog.csdn.net/liuhe688/article/details/6733407

    http://blog.csdn.net/android_tutor/article/details/5772285

     
  • 相关阅读:
    MySQL开启general_log并设置路径
    mysql日志文件开启及详解:General_log 和 Binlog
    mysql binary like_MYSQL的binary解决mysql数据大小写敏感问题的方法
    分布式系统回滚机制
    ubuntu 后台运行的几种方法!
    ubuntu磁盘分配和挂载
    .NET Core SDK在Windows系统安装后出现Failed to load the hostfxr.dll等问题的解决方法
    数组.html
    温习
    for练习.html
  • 原文地址:https://www.cnblogs.com/ldq2016/p/6952989.html
Copyright © 2020-2023  润新知