Android 面试集

Android面试题以及我的回答_中国邮政

2018-03-27  本文已影响7人  zekers

1.请描述一下Activity的生命周期

答: 我们能接触到的Activity的生命周期主要由以下7个状态构成:onCreate(创建),onStart(启动),onResume(开始),onPause(暂停),onStop(停止),onDestory(摧毁),onRestart(重启动);
并分别在下列六种状况下,按照顺序依次执行:

  1. 启动:onCreate->onStart->onResume;
  2. 进入透明状态:onResume->onPause;
  3. 从透明状态复原:onPause->onResume;
  4. 进入后台:onResume->onPause->onStop;
  5. 从后台复原:onStop->onRestart->onStart->onResume;
  6. 关闭当前Activity;onResume->onPause->onStop->onDestory;

同时还存在非正常退出时的Activity的重启动,会在调用onPause或者onStop之前调用onSaveInstanceState方法,和在onResume或onResume之前调用onRestoreInstanceState方法。

2.两个Activity之间跳转必然会执行哪几个方法

答: 存在A,B两个Activity

  1. 当在A里面激活B时,A会调用onPause方法;
  2. 如果B已经存在于Activity栈中,B将调用onRestart,onResume,onStart;如果不存在Activity栈中,B将调用onCreate,onStart,onResume;
  3. B调用完onResume后,如果B是常规窗体,A进入后台,调用onStop;如果B是透明窗体或对话框,A则不调用onStop

3.两个Activity之间怎么传递数据

答:

  1. 通过Intent传递数据;
  2. 通过Application运行时持久化数据,并在Activity间进行传递;
  3. 通过单例类进行传递;
  4. 通过静态成员变量传递;
  5. 数据存储,持久化数据,并在Activity间传递;
  6. 通过startForResult和onActivityResult传递;
  7. 通过EventBus传递数据。

4.什么是Service以及描述下他的生命周期,Service有哪些启动方式,有什么区别,怎么停用Service.

答:

  1. Service是Android四大组件之一,有别于Activity,他主要运行于后台,不存在界面,可以不运行在程序的主线程中,也可以运行在其他应用程序的上下文中,一般用于耗时操作,如下载或消息接受等任务;
  2. 生命周期,由于Service存在两种启动模式,Context.onStartService和Context.onBindService。他们具有不同的生命周期,其中onStartService:onCreate->onStartCommand->onDestory;onBindService:onCreate->onBind->onUnbind->onDestory;
  3. 两种启动方式:Context.onStartService和Context.onBindService;
  4. 区别在于onStartService启动方式的Service与主程序不存在强联系,在摧毁主程序后,Service并不会随之摧毁,但该方式启动的Service也难与主程序进行数据交互;而onBindService调用的Service与主程序存在强联系,与绑定的组件的生命周期相关,随着绑定的组件的生命周期的结束解除绑定并随之摧毁,可以通过ServiceConnection进行数据交互。
  5. 停用方式:onBindService:通过unbindService或者摧毁停用绑定的组件;onStartService:通过onStopService方式;

5.Intent传递数据时,可以传递那些类型数据。

答:

  1. 简单或基本的数据类型;
  2. 传递一个Bundle对象;
  3. 传递Serializable对象;
  4. 传递Parcelable对象;
  5. Intent对象;

6.说说Activity,Intent,Service是什么关系。

答:

  1. 一个Activity通常是一个单独的屏幕,每一个Activity都被实现为一个单独的类,这些类都是从Activity基类中继承而来。Activity类会显示由视图控件组成的用户接口,并对视图控件的事件作出响应;
  2. Intent的调用是用于屏幕之间的切换。Intent描述应用想要做什么。Intent数据结构中两个最重要的部分是动作和动作对应的数据;
  3. Service是运行在后台的组件,不与用户进行交互,可以运行在自己的进程中,也可以运行在其他程序的上下文中。需要一个Context对象调用;
  4. Activity与Service都是安卓四大组件之一,存在相同的一个基类。他们的相互调用需要通过Intent携带信息,即Intent相当于一个消息传送者。

7.请介绍下ContentProvider是如何实现数据共享的。

答:

  1. 通过实现一个Content provider的抽象接口将自己的数据暴露出去,而且Content provider是以类似数据库中的表方式将数据暴露。即在外部程序看来,Content provider就是一个数据库,他们通过操作类似于数据库的方式访问Content provider提供的数据。

8.请介绍一下Android的数据存储方式

答:

  1. 通过SharedPreferences存储数据;
  2. 文件存储;
  3. 数据库存储;
  4. 网络存储;
  5. ContentProvider存储;

9.请介绍下Android常用的五种布局

答:

  1. FrameLayout(框架布局);
  2. LinearLayout(线性布局);
  3. RelativeLayout(相对布局);
  4. AbsoluteLayout(绝对布局),基本已经弃用;
  5. TableLayout(表格布局);
  6. 16年谷歌大会推出的新布局,ConstraintLayout(约束布局);
上一篇下一篇

猜你喜欢

热点阅读