在项目中看到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

 

最新文章

  1. ASP.NET 5 单元测试中使用依赖注入
  2. Xen虚拟化基本原理详解
  3. react.js基本操练
  4. asp.net中virtual和abstract的区别分析
  5. URAL 1957 Wrong Answer 暴力
  6. LeetCode Search in Rotated Sorted Array 在旋转了的数组中查找
  7. BZOJ1613: [Usaco2007 Jan]Running贝茜的晨练计划
  8. 【充分利用你的Azure】将Azure用作云计算平台(1)
  9. BZOJ 4568: [Scoi2016]幸运数字 [线性基 倍增]
  10. My Team——面向对象与软件工程实验三
  11. 洛谷P4551 最长异或路径
  12. 有趣的JavaScript原生数组函数
  13. 4 jmeter badboy脚本开发技术详解
  14. 时间序列 ARIMA 模型 (三)
  15. 阿里云朱照远: AI打开新视界 8K时代已来!
  16. MikroTik RouterOS安装chr授权到阿里云虚拟机(转)
  17. ios开发之--UITableView中的visibleCells的用法
  18. [py]django上线部署-uwsgi+nginx+py3/django1.10
  19. TextBox 宽度无效
  20. 消息队列内核结构和msgget、msgctl 函数

热门文章

  1. IOS开发---菜鸟学习之路--(九)-利用PullingRefreshTableView实现下拉刷新
  2. Hive jdbc连接出现java.sql.SQLException: enabling autocommit is not supported
  3. 零基础学习 Python 之字符串
  4. PAT1033
  5. PAT1023
  6. BZOJ3772 精神污染 【主席树 + dfs序】
  7. 星际战争(bzoj 3993)
  8. 分配问题(cogs 740)
  9. pat 甲级 Public Bike Management
  10. javascript实现可拖动DIV层