经验首页 前端设计 程序设计 Java相关 移动开发 数据库/运维 软件/图像 大数据/云计算 其他经验
当前位置:技术经验 » 程序设计 » R语言 » 查看文章
Activity生命周期方法调用finish后的不同表现 - 雄霸天下-无人能挡
来源:cnblogs  作者:雄霸天下-无人能挡  时间:2019/8/15 12:15:31  对本文有异议

文章转载自:http://www.pythonheidong.com/blog/article/2866/

今天宿舍一个哥们出去面试遇到了这个面试题:"在activity oncreate()调用finish()"生命周期是怎么样的?

我赶紧写了些demo,发现确实很有趣:

  1. package com.example.okhttpdemo;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.util.Log;
  5. public class TestActivity extends Activity {
  6. @Override
  7. protected void onCreate(Bundle savedInstanceState) {
  8. super.onCreate(savedInstanceState);
  9. setContentView(R.layout.activity_main);
  10. finish();
  11. Log.i("TestActivity", "onCreate");
  12. }
  13. @Override
  14. protected void onDestroy() {
  15. super.onDestroy();
  16. Log.i("TestActivity", "onDestroy");
  17. }
  18. @Override
  19. protected void onPause() {
  20. super.onPause();
  21. Log.i("TestActivity", "onPause");
  22. }
  23. @Override
  24. protected void onRestart() {
  25. super.onRestart();
  26. Log.i("TestActivity", "onRestart");
  27. }
  28. @Override
  29. protected void onResume() {
  30. super.onResume();
  31. Log.i("TestActivity", "onResume");
  32. }
  33. @Override
  34. protected void onStart() {
  35. super.onStart();
  36. Log.i("TestActivity", "onStart");
  37. }
  38. @Override
  39. protected void onStop() {
  40. super.onStop();
  41. Log.i("TestActivity", "onStop");
  42. }
  43. }

接下来看在生命周期不同回调里面finish()调用后的日志:

1,oncreate():经历onStart(),onResume(),onPause(),onStop()方法

2,onstart()经历onResume(),onPause()方法

3,onresume() 经历onStart(),onResume(),onPause(),onStop()方法

4,onpause()

5,onstop()结果同上

6,onDestory()结果同上

 那么问什么是这个样子的呢?(2016年4月24日00:01:37更新)

如下是github上面对于这个问题的探讨:

https://github.com/android-cn/android-discuss/issues/430  

  1. mInstrumentation.callActivityOnCreate(activity, r.state) 函数中会判断:
  2.   if (!r.activity.mFinished) {
  3.   activity.performStart();
  4.   r.stopped = false;
  5.   }

执行完 onCreate()后,判断这时 activity 有没有finish ,没有就会接着执行 onStart(),否则会调用 destory()

执行完 onStart()后会执行 handleResumeActivity 函数,其中performResumeActivity 函数中:

  1. if (r != null && !r.activity.mFinished) {
  2. r.activity.performResume();
  3. }

会调用 onResume 如果此时finish,就不会执行finish(),会调用ActivityManagerNative.getDefault()
.finishActivity(token, Activity.RESULT_CANCELED, null);执行销毁

文章转载自:http://www.pythonheidong.com/blog/article/2866/

原文链接:http://www.cnblogs.com/xiongbatianxiaskjdskjdksjdskdtuti/p/11356366.html

 友情链接:直通硅谷  点职佳  北美留学生论坛

本站QQ群:前端 618073944 | Java 606181507 | Python 626812652 | C/C++ 612253063 | 微信 634508462 | 苹果 692586424 | C#/.net 182808419 | PHP 305140648 | 运维 608723728

W3xue 的所有内容仅供测试,对任何法律问题及风险不承担任何责任。通过使用本站内容随之而来的风险与本站无关。
关于我们  |  意见建议  |  捐助我们  |  报错有奖  |  广告合作、友情链接(目前9元/月)请联系QQ:27243702 沸活量
皖ICP备17017327号-2 皖公网安备34020702000426号