您的位置:首页 > 移动开发 > Android开发

android 四大组件之Activity

2017-09-07 23:51 309 查看

什么是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()区别
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: