美文网首页
Activity在onCreate和onResume中finis

Activity在onCreate和onResume中finis

作者: Noddy | 来源:发表于2016-06-02 14:36 被阅读3000次

    最近细看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在onCreate和onResume中finis

          本文链接:https://www.haomeiwen.com/subject/ydlkdttx.html