Activity的生命周期

1.A页面跳转到B页面,点击再次来到,那个历程中的生命周期

B页面完全覆盖A页面包车型大巴景色 A跳转B页面包车型大巴生命周期方法执行顺序:
onPause(A)->onCreate(B)—>onStart(B)—>onResume(B)—>onStop(A)

B页面点击后赶回生命周期执行各类:
onPause(B)–>onRestart(A)–>onStart(A)–>onResume(A)->onStop(B)–>onDestroy(B)

B页面不完全覆盖A页面包车型地铁央浼 A跳转B页面包车型地铁生命周期方法执行各个onPause(A)–>onCreate(B)–>onStart(B)–>onResume(B)
B页面点击后回去生命周期执行各样onPause(B)–>onResume(A)–>->onStop(B)–>onDestroy(B)

 

2.Activity横竖屏切换的生命周期

暗中认可情状:onPause–>onStop–>onDestroy–>onCreate–>onStart–>onResume

屏蔽横竖屏切换导致生命周期重新履行

<activity android:name=”.activity.SystemVideoPlayer”
android:configChanges=”keyboardHidden|screenSize|orientation” />

 

3.onCreate

①它自身的机能是开始展览Activity的部分开端化学工业作,比如选取setContentView加载布局,对一部分控件和变量进行起首化等。

②但也有那一个人将众多与起先化无关的代码放在那,其实那是不专业的。此时Activity还在后台,不可见。所以动画不应该在那里开首化,因为看不到…

4.onStart

①此时Activity已经可见了,但是还没出现在前台,大家还看不到,不能与Activity交互。其实将Activity的开首化学工业作放在那也未尝什么难题,放在onCreate中是出于官方推荐的以及我们付出的习惯。

onCreate和onStart之间有怎样界别?

(1)可知与不可见的分别。前者不可知,后者可知。
(2)执行次数的分别。onCreate方法只在Activity创设时实施一遍,而onStart方法在Activity的切换以及按Home键重回桌面再切回应用的进度中被一再调用。由此Bundle数据的死灰复燃在onStart中开始展览比onCreate中履行更适于。
(3)onCreate能做的事onStart其实都能做,不过onstart能做的事onCreate却未必适合做。如前文所说的,setContentView和能源初始化在两边都能做,不过想动画的初步化在onStart中做比较好。

 

5.onPause()

①平时在onPause()回调方法中做以下工作

停止动画或然是其他正在运营的操作,那么些都会促成CPU的浪费.
交由在用户距离时期待保存的始末(例如邮件草稿).
出狱系统财富,例如broadcast receivers, sensors (比如GPS),
也许是其余任何会潜移默化到电量的财富

②例如,
假设程序接纳Camera,onPause()会是三个相比好的地点去做这一个释放资源的操作。

@Override
public void onPause() {
super.onPause(); // Always call the superclass method first

// Release the Camera because we don't need it when paused
// and other activities might need to use it.
if (mCamera != null) {
mCamera.release()
mCamera = null;
}
}

③不该运用onPause()来实施CPU-intensive
的做事,例如写多少到DB,因为它会导致切换成下一个activity变得急性。  

 ④当Activity要跳到另叁个Activity或使用平常退出时都会实行那个措施。此时Activity在前台并可见,我们得以拓展局地轻量级的蕴藏数据和去早先化的行事,不可能太耗费时间,因为在跳转Activity时只有当2个Activity执行完了onPause方法后另1个Activity才会运维,而且android中钦赐假若onPause在500ms即0.5秒内并未实施达成的话就会强制关闭Activity。从生命周期图中发现能够在那飞跃重启,但那种情形其实很少见,比如用户切到下三个Activity的旅途按back键火速得切回到。

 

6.onStop

①stop意味着停止,此时Activity已经不可见了,但是Activity对象还在内部存款和储蓄器中,没有被灭绝。这些阶段的首要办事也是做一些财富的回收工作。

②onPause方法和onStop方法有啥不一样?

(1)是否可知。onPause时Activity可知,onStop时Activity不可知,但Activity对象还在内部存款和储蓄器中。
(2)在系统内部存款和储蓄器不足的时候大概不会实施onStop方法,因而先后状态的保存、独占设备和动画片的倒闭、以及一些数指标保留最棒在onPause中开始展览,但要注意不可能太耗费时间。

 

7.onDestroy

①destroy表示毁灭,那么些阶段Activity被销毁,不可见,大家能够将还没释放的财富自由,以及进行部分回收工作。

②OnStop方法和onDestroy方法有啥界别?

onStop阶段Activity还尚无被灭绝,对象还在内部存款和储蓄器中,此时得以由此切换Activity再度归来该Activity,而onDestroy阶段Acivity被灭绝

 

8.onRestart

①restart意味重视新开端,Activity在这时可见,当用户按Home键切换来桌面后又切回到可能从后二个Activity切回前叁个Activity就会接触那么些方法。那里一般不做怎么着操作。

 

9.为啥切换Activity时各艺术的进行顺序是(A)onPause→(B)onCreate→(B)onStart→(B)onResume→(A)onStop而不是(A)onPause→(A)onStop→(B)onCreate→(B)onStart→(B)onResume

(1)1个Activity或多或少会占有系统财富,而在合法的提议中,onPause方法将会自由掉很多系统财富,为切换Activity提供流畅性的涵养,而不要求再等多八个阶段,那样做切换更快。
(2)依照生命周期图的代表,若是用户在切换Activity的进度中再度切回原Activity,是在onPause方法后一向调用onResume方法的,那样比onPause→onStop→onRestart→onStart→onResume要快得多。

 

相关文章