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

代码很简单:

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

 

Activity的onRestart()方法调用时机的更多相关文章

  1. +load和+initialize方法调用时机

    一.+load方法什么时候调用 +load方法会在runtime加载类.分类时调用(程序运行起来会先去加载调用+load 跟你引用没有引用其头文件没有关系).每个类.分类的+load,在程序运行过程中 ...

  2. Activity生命周期方法调用finish后的不同表现

    今天宿舍一个哥们出去面试遇到了这个面试题:"在activity oncreate()调用finish()"生命周期是怎么样的? 我赶紧写了些demo,发现确实很有趣: packag ...

  3. Activity生命周期方法的调用顺序project与測试日志

    以下为測试activity的方法的运行顺序   project与測试资源地址 androidproject AndroidManifest.xml <? xml version="1. ...

  4. (copy)赋值构造函数的4种调用时机or方法

    第一种调用方法: demo #include <iostream> using namespace std; class Text { public: Text() // 无参数构造函数 ...

  5. Android之Activity界面跳转--生命周期方法调用顺序

    这本是一个很基础的问题,很惭愧,很久没研究这一块了,已经忘得差不多了.前段时间面试,有面试官问过这个问题.虽然觉得没必要记,要用的时候写个Demo,打个Log就清楚了.但是今天顺手写了个Demo,也就 ...

  6. setResult()的调用时机

    今天遇到这样一个问题,我在Activity-A中用startActivityForResult()方法启动了Activity-B,并且在B中通过setResult()方法给A返回值,由于某些原因不能在 ...

  7. android onNewIntent调用时机

    (转自:http://www.cnblogs.com/zenfly/archive/2012/02/10/2345196.html) 在IntentActivity中重写下列方法:onCreate o ...

  8. Android——旋转屏幕导致Activity重建解决方法

    Android开发文档上专门有一小节解释这个问题.简单来说,Activity是负责与用户交互的最主要机制,任何“设置”(Configuration)的改变都可能对Activity的界面造成影响,这时系 ...

  9. onSaveInstanceState(Bundle outState)的调用时机

    原文摘自: http://handsomeliuyang.iteye.com/blog/1407044 Activity的方法onSaveInstanceState(Bundle outState), ...

随机推荐

  1. Codeforces 1139D(期望dp)

    题意是模拟一个循环,一开始有一个空序列,之后每次循环: 1.从1到m中随机选出一个数字添加进去,每个数字被选的概率相同. 2.检查这个序列的gcd是否为1,如果为1则停止,若否则重复1操作直至gcd为 ...

  2. Halcon18 windows 下载

    Halcon18 windows 下载地址:http://www.211xun.com/download_page_13.html HALCON 18 是一套机器视觉图像处理库,由一千多个算子以及底层 ...

  3. 使用 宝塔面板快速部署Java项目

    环境描述: 服务器系统:CentOS7 64位操作系统 面板版本:宝塔6.9.4 Nginx版本:Nginx 1.16 Tomcat版本:Tomcat7 JDK版本:1.8.0_121 环境部署就不用 ...

  4. js判断时间是否过期

    var myDate=new Date(); myDate.setFullYear(2014,2,1); //2014年3月1日 //注意:表示月份的参数介于 0 到 11 之间.也就是说,如果希望把 ...

  5. mac python 安装参考

    首先需明确: Mac 电脑上自带有 python 查看默认的 python 版本,打开终端输入命令 python,即可看到如下内容: 我的系统版本OS X 10.13.2,自带的Python版本是2. ...

  6. 【11】react 之 flux

    Flux 是 Facebook 使用的一套前端应用的架构模式.React 标榜自己是 MVC 里面 V 的部分,那么 Flux 就相当于添加 M 和 C 的部分. 1.1.  Flux介绍 Flux并 ...

  7. JavaScript (JS) 面向对象编程 浅析 (含对象、函数原型链、闭包解析)

    1. 构造函数原型对象:prototype ① 构造函数独立创建对象,消耗性能 function Person(name) { this.name = name; this.sayHello = fu ...

  8. 事务的四大属性ACID即事务的原子性(Atomicity)、一致性(Consistency)、隔离性(Isolation)、持久性(Durability.。

    事务的四大属性ACID即事务的原子性(Atomicity).一致性(Consistency).隔离性(Isolation).持久性(Durability.. 原子性(Atomicity) 原子性是指事 ...

  9. pat 甲级 1080. Graduate Admission (30)

    1080. Graduate Admission (30) 时间限制 200 ms 内存限制 65536 kB 代码长度限制 16000 B 判题程序 Standard 作者 CHEN, Yue It ...

  10. 洛谷P1135 奇怪的电梯

    题目描述 呵呵,有一天我做了一个梦,梦见了一种很奇怪的电梯.大楼的每一层楼都可以停电梯,而且第i层楼 (1<=i<=N)上有一个数字Ki(0<=Ki<=N).电梯只有四个按钮: ...