Android面试题之Activity
来源:互联网 发布:mac 调整鼠标指针大小 编辑:程序博客网 时间:2024/06/05 19:49
四大组件之一,一般的,一个用户交互界面对用一个activity,activity是Context的子类,同时实现了
window.callback和keyevent.callback,可以处理与窗体用户交互的事件。
常用的有FragmentActivity,ListActivity等,抽取BaseActivity
2.Activity的生命周期
onPostResume()和onPostCreate()当Activity创建完成之后
3.两个Activity之间跳转必然会执行的是哪几个方法
A:onPause()
B: onCreate(),onStart(),onResume()这时如果B覆盖了窗体A会调用onStop()方法,如果B是个透明的
,即A没有被完全覆盖的情况下,A不会执行onStop()方法
4.如何保存Activity的状态?
一般来说,调用onPause()和onStop()方法后的Activity实例仍然存在于内存中,Activity的所有信息和状态数据
不会消失,当Activity重新回到前台后,所有的改变都会得到保留。
但是当系统内存不足时,调用onPause()和onStop()方法后的Activity可能会被系统摧毁,此时内存中就不会存
有该Activity的实例对象了。如果之后这个Activity重新回到前台,之前所做的改变就会消失,为避免此种情况
的发生,我们可以复写onSaveIntanceState()方法。onSaveInatanceState()方法接受一个Bundle类型的参数,开
发者可以将状态数据存储到这个Bundle对象中。如果滴啊用onSaveInstanceState()方法,调用将发生在onPause()
或onStop()方法之前。
5.横竖屏切换时Activity的生命周期此时的生命周期跟清单文件里的配置有关系
(1)不设置Activity的android:configChanges时,且平时重新调用各个生命周期默认首先销毁当前Activity,
然后重新加载。
(2)设置Activity android:configChanges="orientation|keyboardHidden|screenSize"时,切屏时不会重新调
用各个生命周期,只会执行onConfigurationChanged方法
6.将Activity设置成窗口的样式。
android:theme="@android:style/Theme.Dialog"
7.如何退出Activity?如何安全退出已调用多个Activity的Application?
(1)通常情况用户退出一个Activity只需按返回键,我们写代码想退出Activity直接调用finish方法
(2)记录打开的Activity:
每打开一个Activity,就记录下来。在需要退出时,关闭每一个Activity即可
(3)发送特定广播
在需要结束应用时,发送一个特定的广播,每个Activity收到广播后,关闭即可。
(4)递归退出
再打开新的Activity时使用startActivityForResult,然后自己加标志,在onActivityResult中处理,递归关闭。
(5)其实,也可以通过intent的flag来实现intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP)激活一个新的
Activity,此时如果该任务栈中已有该Activity,那么系统会把这个Activity上面的所有Activity都干掉。即相
当于设置Activity的启动模式为singleTop。
8.Activity的四种启动模式?
同一个程序,但不同的Activity是可以放在不同的任务栈中的,intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK)
四种启动模式详解
9.Android中的Context,Activity,Application有什么区别?
相同:Activity和Application都是Context的子类
不同:维护的生命周期不同。Context维护的是当前的Activity的生命周期,Application维护的是整个项目的生
命周期。
使用context的时候,小心内存泄露,防止内存泄露,注意一下几个方面:
(1)不要让生命周期长的对象引用Activity Context,既保证引用Activity的对象要与Activity本身的生命周期
是一样的。
(2)对于生命周期长的对象,可以使用Application Context
(3)避免非静态的内部类,尽量使用静态类,避免生命周期问题,注意内部类对外部类对象引用导致生命周期变化。
10.两个Activity之间传递数据,除了intent,广播接收者,ContentProvider还有什么?(Intent在传递数据时,可以是实现了Seralizable和Parcelable的对象,Parcelable序列化在内存中,Seraliable序列化在文件中,它是JavaSE中接口)
(1)利用static静态数据,public static成员变量
(2)利用外部存储的传输
例如 File 文件存储
SharePreference首选项
Sqlite数据库
11.Context是什么?
(1)它描述的是一个应用程序环境的信息,即上下文
(2)该类是一个抽象类,Android提供了该抽象类的具体实现类
(3)通过它我们可以获取应用程序的资源和类,也包括一些应用级别的操作:例如启动一个Activity,发送广播,
接收Intent,信息等。
- Android面试题之Activity
- android基础之Activity几个面试题
- Android 面试题总结之Android 基础Activity(一)
- Android面试题Activity部分
- 全面升级Android面试之Activity面试题集
- [Android面试题-1] Activity的生命周期
- android面试题:如何退出Activity?
- android面试题:如何退出Activity?
- Android面试题——Activity
- Android面试题收集(Activity相关)
- Android面试题----Activity相关问题
- android面试题之二
- android面试题之三
- android面试题之二
- android面试题之三
- android面试题之四
- android面试题之五
- android面试题之六
- 公司实习SEO优化日记:2016年2月16日
- fragment 懒加载 viewpager 取消预加载
- iOS闭包循环引用讲解
- c++函数指针以及回调函数
- 安卓存储数据和文件系列2:共享参数(sharedpreferences)方式
- Android面试题之Activity
- 学习JavaScript的闭包(closure)
- mongodb分片环境开启认证
- Keil MDK、Sublime的纵向垂直选择
- 安卓HTTP请求之get和post方法。
- IE浏览器安装插件(ocx)提示“windows 已经发现此文件有一个问题”怎么办?
- 【算法总结】graph 图的问题
- OpenCV进行图像相似度对比的几种办法
- 使用照相机拍照后读取当前拍到的图片方法