[关闭]
@linux1s1s 2016-11-07T11:51:06.000000Z 字数 1739 阅读 1105

Android 生命周期 - Activity

AndroidRefine 2016-11


系列博文:

Android 生命周期 - Activity
Android 生命周期 - Service
Android 生命周期 - BroadcastReceiver
Android 生命周期 - Fragment
Android 生命周期 - View

常规情况

此处输入图片的描述

简单描述一下上面几个状态:

交互情况

考虑以下问题:

MainActivity ---> SecondActivity
相应的生命周期:
A: onPause --> B: onResume
B: onResume --> A: onPause
以上两种答案,应该是哪一个?

我们先来手动验证一下:

11-03 04:52:30.103 8709-8709/fresco.mutex.com.lifecycle I/mutex: MainActivity onCreate()
11-03 04:52:30.103 8709-8709/fresco.mutex.com.lifecycle I/mutex: MainActivity onStart()
11-03 04:52:30.103 8709-8709/fresco.mutex.com.lifecycle I/mutex: MainActivity onResume()
11-03 04:52:31.983 8709-8709/fresco.mutex.com.lifecycle I/mutex: MainActivity onPause()
11-03 04:52:31.987 8709-8709/fresco.mutex.com.lifecycle I/mutex: SecondActivity onCreate()
11-03 04:52:31.987 8709-8709/fresco.mutex.com.lifecycle I/mutex: SecondActivity onStart()
11-03 04:52:31.987 8709-8709/fresco.mutex.com.lifecycle I/mutex: SecondActivity onResume()
11-03 04:52:32.519 8709-8709/fresco.mutex.com.lifecycle I/mutex: MainActivity onStop()

从上面的验证情况可以得出结论:
Activity之间跳转是先pause本身然后再进入目标Activity的生命周期,在目标Activity获得焦点以后,再回头stop自身。

所以在onPause()回调中最好不要做耗时的操作,以免在跳转Activity的时候有卡顿或者唤起缓慢。

回调方法常规处理

onCreate

onStart

onResume

onPause

onStop

onDestroy

异常情况

导致异常的主要有两种原因:

此处输入图片的描述

当Activity被Kill以后,需要保持一些数据的情况下,可以放在onSaveInstanceState()回调中保存数据,然后再onCreate()以及onRestoreInstanceState()回调中恢复数据。

添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注