Activity在onCreate和onResume中finish时,生命周期的不同表现

最近细看Android docs,发现finish()在不同地方的生命周期有所区别。

在Android Studio中新建Android项目,分别重写onCreate、onResume、onPause、onStop、onDestroy方法,并打印相关信息。

  • 先在onCreate中调用finish()方法关闭Activity
05-24 15:04:56.866 18315-18315/com.noddy.practiceproject I/DestroyActivity: DestroyActivity---onCreate() called!
05-24 15:04:57.506 18315-18315/com.noddy.practiceproject I/DestroyActivity: DestroyActivity---onDestroy() called!
  • 再把onCreate中的finish()注释,在onResume中添加finish(),运行程序
05-24 15:12:40.656 24066-24066/com.noddy.practiceproject I/DestroyActivity: DestroyActivity---onCreate() called!
05-24 15:12:40.656 24066-24066/com.noddy.practiceproject I/DestroyActivity: DestroyActivity---onResume() called!
05-24 15:12:40.926 24066-24066/com.noddy.practiceproject I/DestroyActivity: DestroyActivity---onPause() called!
05-24 15:12:43.116 24066-24066/com.noddy.practiceproject I/DestroyActivity: DestroyActivity---onStop() called!
05-24 15:12:43.116 24066-24066/com.noddy.practiceproject I/DestroyActivity: DestroyActivity---onDestroy() called!

好显然,在onCreate中finish是跳过了onPause和onStop方法,直接执行onDestroy。

原因:开发文档中说到,Activity只有在Resumed、Paused、Stopped这三种状态下存在较长时间(即可以运行较长时间),Activity在其他状态下都是一闪而过。其中,在onResume中,Activity变为用户可见并且可以交互。因此,如果Activity不存在交互的概念(即在onCreate()中finish掉),就不会回调onPause、onStop等需要用户交互的方法。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 启动与销毁Activity 不同于使用 main() 方法启动应用的其他编程范例,Android 系统会通过调用对...
    安卓Boy阅读 1,810评论 3 5
  • 您的应用中的Activity应该做到如下需求: 1.用户在使用应用时接听来电或切换到另一个应用,它不会崩溃。 2....
    正阳Android阅读 557评论 1 0
  • 转自Android四大基本组件介绍与生命周期Android四大基本组件分别是Activity,Service服务,...
    开子的私家地阅读 1,462评论 0 5
  • 倾城一舞,谁说戏子无情,只因未曾入戏。
    Psy阅读 352评论 0 0
  • 什么关键对话?! 符合三个特点: 1.双方观点有很大差距! 2.对话存在很高的风险! 3.对话双方的情绪非常激烈!...
    水玲珑81阅读 370评论 0 0