2014年Android面试题

来源:互联网 发布:金字塔软件下载 编辑:程序博客网 时间:2024/06/06 14:28

1、Activity的生命周期

Java代码:public class MyActivity extends Activity{

protected void onCreate();

protected void onStart();

protected void onResume();

protected  void onPause();

protected  void onStop();

protected  void onDestory();

}

  onCreate: 在这里创建界面 ,做一些数据 的初始化工作 

  onStart: 到这一步变成用户可见不可交互 的 

  onResume: 变成和用户可交互 的,(activity 栈系统通过栈的方式管理这些个 Activity的最上面,运行完弹出栈,则回到上一个Activity) 

  onPause: 到这一步是可见但不可交互 的,系统会停止动画 等消耗CPU 的事情   从上文的描述已经知道,应该在这里保存你的一些数据,因为这个时候  你的程序的优先级降低,有可能被系统收回。在这里保存的数据,应该在  onResume里读出来,注意:这个方法里做的事情时间要短,因为下一 个activity不会等到这个方法完成才启动 

  onstop: 变得不可见 ,被下一个activity覆盖了 

  onDestroy: 这是activity被干掉前最后一个被调用方法了,可能是外面类调用finish方  法或者是系统为了节省空间将它暂时性的干掉,可以用isFinishing()来判断它,如果你有一个Progress Dialog在线程中转动,请在onDestroy里 把他cancel掉,不然等线程结束的时候,调用Dialogcancel方法会抛 异常的。 

  onPauseonstop, onDestroy,三种状态 下 activity都有可能被系统干掉 。

2、Activity变成一个窗口:Activity属性设定

在Activity的AndroidManifest.xml中设置属性:

1. android :theme="@android:style/Theme.Dialog" 

或者

2. android:theme="@android:style/Theme.Translucent"

3、什么是ANR ?如何避免它

ANRApplication Not Responding,五秒 

在Android中活动管理器和窗口管理器这两个系统服务负责监视应用程序的响应,当出现下列情况时,就会出现ANR:

1、对输入事件的响应超过5秒;

2、意向接收器超过10秒仍未响应;

3、Android程序完全运行在一个独立的线程中;

一般在主线程中进行少量的工作,在子线程中进行一些延时的操作。

4、什么情况会导致Force Close ?如何避免?能否捕获导致其的异常

一般像空指针就会导致Force Close,可以查看Logcat,然后对应到程序中解决。

5、简要解释一下activity、 intent serviceBroadcaseReceiver 

  activity :一个Activity呈现了一个用户可以操作的可视化的界面。

service :一个service不包含可视化的用户界面,但会在后台无线运行,可以连接在已经运行的服务中,然后通过服务中曝露出来的接口与其通信。

broadcase receiver:一个接收广播消息,并作出回应的componmnt,broadcase receiver是无界面的。

intent :一个intent是一个Intent的对象,保存了消息的内容。对于activity 和 service来说,它指定了请求的操作名称和带操作数据的URI。

6、横竖屏切换时候activity的生命周期

1、不设置Activity的Android:configchanges时,切屏会重新调用各个周期,横屏一次,竖屏两次

横屏:onSaveInstanceState->onPause->onStop->onDestory->onCreate->onStart->onRestoreInstanceState->onResume

竖屏:onSaveInstanceState->onPause->onStop->onDestory->onCreate->onStart->onRestoreInstanceState->onResume->onSaveInstanceState->onPause-> onStop->onDestory->onCreate->onStart->onRestoreInstanceState->onResume

2、设置Activity的Android:configchanges = "orientation "时,横竖屏各执行一次

onSaveInstanceState->onPause->onStop->onDestory->onCreate->onStart->onRestoreInstanceState->onResume

onSaveInstanceState->onPause->onStop->onDestory->onCreate->onStart->onRestoreInstanceState->onResume->configurationChanged.

3、设置Activity的Android:configchanges = "orientation | keyboardHidden "时

onConfigurationchanged

7、如何退出Activity?如何安全退出已调用多个ActivityApplication

Activity.finish();

或者用KillProcess()和System.exit();


用ActivityManager 或者 restartActivity退出已调用多个Activity的Application;


8、 请介绍下android的数据存储方式。

1、SharedPreferences

2、数据库存储

3、文件存储

4、SD卡存储

5、网络存储




0 0