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()会是3个相比好的地方去做这多少个释放能源的操作。

@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,因为它会导致切换到下3个activity变得放缓。  

 ④当Activity要跳到另二个Activity或行使常常退出时都会履行这几个措施。此时Activity在前台并可见,大家可以举办部分轻量级的储存数据和去早先化的做事,不能太耗费时间,因为在跳转Activity时唯有当一个Activity执行完了onPause方法后另2个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)一个Activity或多或少会占有系统财富,而在官方的建议中,onPause方法将会释放掉很多系统财富,为切换Activity提供流畅性的涵养,而不须要再等多五个阶段,那样做切换更快。
(2)依据生命周期图的代表,假使用户在切换Activity的进度中再度切回原Activity,是在onPause方法后一直调用onResume方法的,那样比onPause→onStop→onRestart→onStart→onResume要快得多。

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图