@linux1s1s
2016-11-07T19:51:06.000000Z
字数 1739
阅读 1787
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的时候有卡顿或者唤起缓慢。
导致异常的主要有两种原因:
当Activity被Kill以后,需要保持一些数据的情况下,可以放在onSaveInstanceState()回调中保存数据,然后再onCreate()以及onRestoreInstanceState()回调中恢复数据。