Activity在onCreate和onResume中finis

2016-06-02  本文已影响3000人  Noddy

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

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

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!
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等需要用户交互的方法。

上一篇下一篇

猜你喜欢

热点阅读