四大组件之Activity

1.整体理解
Activity是一个负责与用户进行交互的组件。一个用户交互画面对应一个activity,可以通过setContentView(View v)方法来显示需要的控件。Activity是Context的子类,同时实现了window.callback接口(通过里面的dispatchTouchEvent方法可以分发事件)和keyevent.callback等,可以处理与窗体用户交互的事件。

2.生命周期如图
四大组件之Activity_第1张图片

四种状态:参考我之前的文章,这里就不重复了

3.异常情况生命周期
情况一:资源相关的系统配置发生改变
比如:横竖屏切换时。会重新执行onCreate()方法,我们可以重写onSaveInstanceState()来保存当前Activity状态。在onRestoreInstanceState和onCreate方法方法中调用。、
解决方案:
1.在功能清单文件中加入申明,将横竖屏写死,通过screenOrientation = “landscape”
2.让系统的环境不再敏感横竖屏切换
Andorid:configChanges=”orientation|screenSize”
3.给EditText控件加上id,系统会自动保存然后恢复,或者在onSaveInstanceState保存,在重新创建的onCreate方法中恢复

总而言之,onSaveInstanceState的调用遵循一个重要原则,即当系统“未经你许可”时销毁你的activity,则onSaveInstanceState会被系统调用。

情况二:资源内存不足导致低优先级Activity被杀死
Activity优先级:
前台Activity——正在和用户交互的Activity,优先级最高。
可见但非前台Activity——Activity中弹出的对话框导致Activity可见但无法交互
后台Activity——已经被暂停的Activity,优先级最低
系统内存不足,会按照以上顺序杀死Activity,并通过onSaveInstanceState和onRestoreInstanceState这两个方法来存储和恢复数据

系统用Task Stack结构来存储管理启动的Activity对象

注:如果是少量数据,可以通过onSaveInstanceState()和onRestoreInstanceState()进行保存与恢复,如果是大量数据就要使用Fragment保持保存的对象。

4.Activity过渡动画的五种实现
Activity之间的数据传递,常见的有四种,Intent传递简单数据,Bundle传递数据包,传递值对象,获取Activity的返回参数这之间都用到了Intent,intent支持:实现Serializable接口,实现parcelable接口,charSequence,Bundle四种类型

你可能感兴趣的:(面试类)