您的位置:首页 > 职场人生

Android面试题之Activity

2016-02-29 14:03 525 查看
1.什么是Activity?

四大组件之一,一般的,一个用户交互界面对用一个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,信息等。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: