android 四大组件之Activity

什么是ativity?

一个activity顾名思义,是一项活动,一项用户可以单独进行的活动。几乎所用的activity都需要用户参与,所以activity特意建立了一个窗口与用户进行交互,例如拨打电话,照相,发送电子邮件或者浏览地图,而setContentView()可以设定窗口的布局。活动往往占据全屏,也可以被用来在其他方面:作为内浮动窗口(通过主题与windowisfloating集),或嵌入另一个活动(使用activitygroup)。几乎所有的子类的活动将实施有两种方法:
1. onCreate(Bundle)
这里你可以初始化你的activity. 如 super.onCreate(savedInstanceState)取出当前存有的activity状态,因为资源紧张而经常被系统销毁,所以你可以在资源销毁之前用

 @Override
 protected void onSaveInstanceState(Bundle outState);

存下activity,可用 onCreate或onRestoreInstanceState取出activity的状态,这尤其是在横竖屏切换activity重建时恢复先前activity状态;这里还可以用setContentView设定你的自定义布局,当然不设定也不会出事,但没有意义;可以用findViewById()取出布局的小部件如TextView\Layout等;……
2. onPause()
这里你可以处理离开activity时的事件,如activity销毁、进入后台等暂时或永久离开activity时都会调用onPause.

最后还有一个是Fragments可以模块化activity的代码,就相当于零部件,使activity简快构建更复杂的用户界面的大屏幕,当然你也不用fragments但估计构造复杂的activity时会很困难。

ativity的生命周期

活动销毁: onPause –> onStop–> onDestory
活动进入后台: onPause –>onStop

活动从无到有: onCreate –> onStart –> onResume
活动从后台回来: onRestart –> onStart –> onResume

屏幕横竖贴换: onPause –> onStop–> onDestory –> onCreate –>
onStart –> onResume
这里写图片描述
图片来源
上面六个方法共同定义了activity的整个生命周期,可以使用上面方法
可实现三个嵌套的循环
1. 整个生命周期。 onCreate到onDestroy。onDestroy调用后,activity的状态会被释放,若想要,可以用onSaveInstanceState保存activity的状态。
2. 可见生命周期。onStart到onStop。调用onStop后,和Stopped不同的一点就是没有和Windows Manager相连接,但Activity对象仍然保留在内存中,它保持所有的状态和成员信息,这也就是为什么当返回时EditText里的内容不变的原因
3. 前台生命周期。onResume到onPause。调用onPause后,activity始终可见且与windowns Manager相连,只是不能与用户交互,因为被其他的activity抢了风头啦!由于此状态可能经常发生转变,因此这两个方法中应采用适度轻量级的代码,以避免因转变速度慢而让用户等待。

疑问:

1. 为什么同样是onPause –> onStop–> onDestory,而back键的和屏幕贴换的不一样呢?
因为back键会调用finish(),而finsi会退出任务栈中的activity,而后销毁activity,这时自然不能再调用onCreate或onRestoreInstanceState恢复原来的状态。
2. onCreate和onRestoreInstanceState有何区别
onCreate初始化activity状态时savedInstanceState可能为空;而onRestoreInstanceState不会,因为任务栈中的activtiy还存在着呢!!

参考

android activity官方文档
android onPause()和onStop()区别

猜你喜欢

转载自blog.csdn.net/cunteng008/article/details/77888432