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()会是2个相比较好的地点去做那贰个释放财富的操作。

@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时唯有当1个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键切换来桌面后又切回到或许从后1个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要快得多。

 

发表评论

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