Android面试题以及我的回答_中国邮政
2018-03-27 本文已影响7人
zekers
1.请描述一下Activity的生命周期
答: 我们能接触到的Activity的生命周期主要由以下7个状态构成:onCreate(创建),onStart(启动),onResume(开始),onPause(暂停),onStop(停止),onDestory(摧毁),onRestart(重启动);
并分别在下列六种状况下,按照顺序依次执行:
- 启动:onCreate->onStart->onResume;
- 进入透明状态:onResume->onPause;
- 从透明状态复原:onPause->onResume;
- 进入后台:onResume->onPause->onStop;
- 从后台复原:onStop->onRestart->onStart->onResume;
- 关闭当前Activity;onResume->onPause->onStop->onDestory;
同时还存在非正常退出时的Activity的重启动,会在调用onPause或者onStop之前调用onSaveInstanceState方法,和在onResume或onResume之前调用onRestoreInstanceState方法。
2.两个Activity之间跳转必然会执行哪几个方法
答: 存在A,B两个Activity
- 当在A里面激活B时,A会调用onPause方法;
- 如果B已经存在于Activity栈中,B将调用onRestart,onResume,onStart;如果不存在Activity栈中,B将调用onCreate,onStart,onResume;
- B调用完onResume后,如果B是常规窗体,A进入后台,调用onStop;如果B是透明窗体或对话框,A则不调用onStop
3.两个Activity之间怎么传递数据
答:
- 通过Intent传递数据;
- 通过Application运行时持久化数据,并在Activity间进行传递;
- 通过单例类进行传递;
- 通过静态成员变量传递;
- 数据存储,持久化数据,并在Activity间传递;
- 通过startForResult和onActivityResult传递;
- 通过EventBus传递数据。
4.什么是Service以及描述下他的生命周期,Service有哪些启动方式,有什么区别,怎么停用Service.
答:
- Service是Android四大组件之一,有别于Activity,他主要运行于后台,不存在界面,可以不运行在程序的主线程中,也可以运行在其他应用程序的上下文中,一般用于耗时操作,如下载或消息接受等任务;
- 生命周期,由于Service存在两种启动模式,Context.onStartService和Context.onBindService。他们具有不同的生命周期,其中onStartService:onCreate->onStartCommand->onDestory;onBindService:onCreate->onBind->onUnbind->onDestory;
- 两种启动方式:Context.onStartService和Context.onBindService;
- 区别在于onStartService启动方式的Service与主程序不存在强联系,在摧毁主程序后,Service并不会随之摧毁,但该方式启动的Service也难与主程序进行数据交互;而onBindService调用的Service与主程序存在强联系,与绑定的组件的生命周期相关,随着绑定的组件的生命周期的结束解除绑定并随之摧毁,可以通过ServiceConnection进行数据交互。
- 停用方式:onBindService:通过unbindService或者摧毁停用绑定的组件;onStartService:通过onStopService方式;
5.Intent传递数据时,可以传递那些类型数据。
答:
- 简单或基本的数据类型;
- 传递一个Bundle对象;
- 传递Serializable对象;
- 传递Parcelable对象;
- Intent对象;
6.说说Activity,Intent,Service是什么关系。
答:
- 一个Activity通常是一个单独的屏幕,每一个Activity都被实现为一个单独的类,这些类都是从Activity基类中继承而来。Activity类会显示由视图控件组成的用户接口,并对视图控件的事件作出响应;
- Intent的调用是用于屏幕之间的切换。Intent描述应用想要做什么。Intent数据结构中两个最重要的部分是动作和动作对应的数据;
- Service是运行在后台的组件,不与用户进行交互,可以运行在自己的进程中,也可以运行在其他程序的上下文中。需要一个Context对象调用;
- Activity与Service都是安卓四大组件之一,存在相同的一个基类。他们的相互调用需要通过Intent携带信息,即Intent相当于一个消息传送者。
7.请介绍下ContentProvider是如何实现数据共享的。
答:
- 通过实现一个Content provider的抽象接口将自己的数据暴露出去,而且Content provider是以类似数据库中的表方式将数据暴露。即在外部程序看来,Content provider就是一个数据库,他们通过操作类似于数据库的方式访问Content provider提供的数据。
8.请介绍一下Android的数据存储方式
答:
- 通过SharedPreferences存储数据;
- 文件存储;
- 数据库存储;
- 网络存储;
- ContentProvider存储;
9.请介绍下Android常用的五种布局
答:
- FrameLayout(框架布局);
- LinearLayout(线性布局);
- RelativeLayout(相对布局);
- AbsoluteLayout(绝对布局),基本已经弃用;
- TableLayout(表格布局);
- 16年谷歌大会推出的新布局,ConstraintLayout(约束布局);