Android高级技术面试整理_第1页
Android高级技术面试整理_第2页
Android高级技术面试整理_第3页
Android高级技术面试整理_第4页
免费预览已结束,剩余1页可下载查看

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、An droid高级技术-简答题1: An droid中五种数据存储方式分别是什么?他们的特点?答:An droid提供了五种存取数据的方式(1) SharedPreferenee,存放较少的五种类型的数据,只能在同一个包内使用,生成XML勺格式存放在设备中(2) SQLite数据库,存放各种数据,是一个轻量级的嵌入式数据库(3) File 文件,通过读取写入方式生成文件存放数据(4) Con te ntProvider,主要用于让其他应用程序使用保存的数据(5) 通过网络获取数据和写入数据到网络存储空间2:简述 SharedPreference存储方式SharedPreferences也是一

2、种轻型的数据存储方式,它的本质是基于XML文件存储key-value键值对数据,通常用来存储一些简单的配置信息。其存储位置在 /data/data/v 包名 >/shared_prefs 目录下。SharedPreferences对象本身只能读取数据而不支持写入数据,存储修改是通过Editor对象实现。3: SQLite主要通过那两个类实现其功能的?SQLiteOpenHelpe:这个类是数据库的帮助类;用来进行数据库的创建;表 的创建,以及版本的更新SQLiteDatabase这个类里封装了对表的具体的操作的方法,比如增删改 查的方法。4: SharedPreferences 与 SQ

3、Lite 数据库的区别SharedPreferences 对象与SQLite数据库相比,免去了创建数据库,创 建表,写SQL语句等诸多操作,相对而言更加方便,简洁。但是 SharedPreferences也有其自身缺陷,比如其职能存储 boolean,int,float ,long和String五种简单的数据类型,比如其无法进行条件查询等。所以不论 SharedPrefere nces的数据存储操作是如何简单,它也只能是存储方式的一种补充,而无法完全替代如SQLite数据库这样的其他数据存储方式。5: ContentProvider 与 SQLite 有何区别答:Sql只能在该工程的内部共享数

4、据,ContentProvider能在工程之间实现 数据共享。6:描述ContentProvider URI有哪几部分组成答:URI由是部分组成:A,标准的前缀:Con te ntProvider(内容提供者)的scheme已经由An droid所规定,scheme 为:content:/B,唯一标识整个 Content Provider:主机名(或叫 Authority )用于唯一标识这个ContentProvider,外部调用者可以根据这个标识来找到它。C, 描述了数据的路径,确定返回哪类数据:路径(path )可以用来表示我们 要操作的数据,路径的构建应根据业务而定D, ID唯一标注请求

5、的数据:我们要请求数据的ID 7:简述通过contentResolver 获取ContentProvider 内容的基本步骤 第一:得到 ContentResolver 类对象:ContentResolver cr = getC onten tResolver ();第二:定义要查询的字段String数组。 第三:使用cr.query(); 返回一个Cursor对象。 第四:使用while循环得到Cursor里面的内容。&描述一下自定义ContentProvider 的步骤答: 自定义 contentprovider 步骤:1. 继承 An droid 的 Con te ntProvi

6、der 基类实现自己的 Con te ntProvider 类。2. 实现 Con te ntProvider 里的 on Create 方法,创建 provider 的数据,一 般为数据库sqlite。3. 重写 ContentProvider中相应的 insert/delete/update/query增删改查这些方法。4. 在 AndroidManifest.xml文件中注册该 ContentProvider类,为ContentProvider 指定Uri。 Uri类似网页访问中使用的 URL地址。在 vapplication>v/application>中配置 <pr

7、ovider/> 标签以及属性:an droid:n ame 属性:Conten tProvider 的类名 android:authorities属性:用于访问 ContentProvider 的名称。9: An droid 中如何访问自定义 Con te ntProvider?通过ContentProvider 的Uri访问开放的数据。(1)Co nten Resolver 对象通过 Con text 提供的方法 getC on te nResolver()来获 得。(2)ContenResolver提供了以下方法来操作:insert delete updatequery这些方法分别

8、会调用ContenProvider中与之对应的方法并得到返回的 结果。10: an droid中的动画有哪几类,它们的特点和区别是什么? 答:An droid中动画可以分为两大类:帧动画、补间动画1)补间动画:你定义一个开始和结束,中间的部分由程序运算得到。主要有: 旋转、平移、放缩和渐变;AlphaAnimation (渐变型动画)、scaleAnimation(缩放型动画)、Tran slateA nimatio n(平移型动画)、 RotateA ni matio n(旋转型动画)、2)逐帧动画:Frame (把一连串的图片进行系列化连续播放,如同放电影的 效果),它是通过播放一张一张图

9、片来达到动画的效果;11:如何实现一个帧动画答:1) 在布局文件中添加ImageView 组件,设置 background 为res/a nim /fram.xml动画效果2) 通过 ImageView 对象的 getBackground()方法得到 AnimationDrawable 对 象3) 通过AnimationDrawable对象的start() 来启动帧动画,stop()来停止动 画12:简述你所学的音乐播放的方式,以及区别。1) : MediaPlayer:主要用于播放音频,可以播放视频,但是一般不用其进行 视频播放。2) : SoundPool:主要用于播放一些短促的声音片段,

10、主要优势是cpu资源 占有量低,反应延迟小。13:简述soundpool的使用步骤。使用SoundPool播放声音的步骤如下。(1) 调用SoundPool的构造器创建SoundPool对象。(2) 调用SoundPool对象的load方法加载声音资源。 调用SoundPool对象的play方法播放声音。14:简述你学过An droid中视频播放的方式?答:1: VideoView an droid提供给我们的一个供我们进行视频播放的组件2: surfaceView+ MediaPlayer3:系统提供的播放器15:简述VideoView实现视频播放的基本步骤使用VideoView播放视频步骤

11、一:*在on Create方法中,首先获取布局管理器中添加的VideoView组件。并创建一个要播放视频所对应的对象。步骤二:*然后创建一个MediaController对象,用于控制视频的播放。步骤三:*使用VideoView播放该视频16:简述VideoView实现视频播放的基本步骤步骤一:在布局文件内定义 SurfaceView,步骤二:在代码中实现 SurfaceHolder.Callbac接口,重写三个方法步骤三:通过方法 getHolder();得到 SurfaceHolder,然后设置 SurfaceHolder步骤四:为 MediaPlayer设置 SurfaceHolder步

12、骤五:使用setDataSource方法为MediaPlayer设置播放文件 步骤六:进行播放17: res/raw 与 assets 目录的区别答:相同点:两者都会原圭寸不动的保存在 apk包中,不会被编译成二进制码。 不同点:1. raw目录下只能存放文件,不能存放下一级的文件夹,而assets可以存放下一级的文件夹。2. raw目录下的资源会映射到 R.java中生成资源id。而assets不会。3. 获得资源的方法不同。代码如下:this.getAssets().ope n("xml/cha nn els.xml")this.getResources().ope n

13、RawResource(R.raw.stude nts)this.getClassLoader().getResourceAsStream(“student.xml ”)18:简述Timer的用法Timer是在一个应用运行期间进行的定时操作,当应用退出则定时操作也同 时被取消。使用Timer的步骤:1: 实例化 Timer timer = new Timer ();2:实例化 TimerTask t = new TimerTask()Overridepublic void run() / TODO Auto-ge nerated method stub要执行的内容;3:调用:timer.sch

14、edule(t, 5000); 执行19:简述Handler机制原理答:Andriod提供了 Handler和Looper来满足线程间的通信。An droid不允许UI线程之外的线程改变 UI组件的值,所以要想在其他线程 里面改变UI组件的值,必须使用Handler来实现。1) Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的Message Queue(消息队列)。2) Handler: 你可以构造 Handler对象来与Looper沟通,以便 push(上传) 新消息到Message Queue里;或者接收Looper从Message Queue取出的消息。3) M

15、essage Queue(消息队列):用来存放线程放入的消息。4) 线程:UI thread 通常就是 main thread,而An droid启动程序时会替它 建立一个 Message QueueHandler、Looper、MessageQueu啲初始化流程如下所示。Hander持有对UI主线程消息队列UI_MQ和消息循环Looper的引用,子线 程可以通过Handler将消息发送到UI线程的消息队列UI_MQ中。Handler处理消息UI主线程通过Looper循环查询消息队列UI_MQ当发现有消息存在时会将 消息从消息队列中取出。首先分析消息,通过消息的参数判断该消息对应的 Handl

16、er,然后将消息分发到指定的Handler进行处理。20: ListView 的优化方案?答:1、如果自定义适配器,那么在 getView方法中要考虑方法传进来的参数 contentView 是否为null ,如果为null就创建contentView 并返回,如果不 为null则直接使用。在这个方法中尽可能少创建 view。2、 给 contentView 设置 tag (setTag (),传入一个 viewHolder 对象, 用于缓存要显示的数据,可以达到图像数据异步加载的效果。3、如果listview 需要显示的item很多,就要考虑分页加载。比如一共要 显示100条或者更多的时候,

17、我们可以考虑先加载 20条,等用户拉到列表底部 的时候再去加载接下来的20条。分页加载还没学习。21:MVC设计模式在An droid中的应用?答:1.模型层(model):对数据库操作,对网络等操作都应在 model中处理,对 业务的计算等操作都应在该层。可以简单的理解为An droid中的Java源文件2. 视图层(view): 一般采用XML进行描述,使用的时候可以方便的引入, 可以简单的理解为An droid中Layout文件。An droid中也可以用 JavaScript+HTML 等方式作为 view 层。3. 控制层(controller ):控制model和view的协调工作

18、。简单的理解为 An droid 中 ma nifest 文件.22:如何实现Sensor编程?答:a.获取系统服务(SENSOR_SERVICE回一个 SensorManager 对象se nsorma nager = (Se nsorMa nager)getSystemSeriver(SENSOR_SERVICE);b. 通过SensorManager对象获取相应的Sensor类型的对象 sen sorObject = sen sorma nager.getDefaultSe nsor(se nsor Type);c. 声明一个SensorEventListener对象用于侦听Sensor事件,并重载onSen sorCha nged 方法Sen sorEve ntListe ner sen sorListe ner = new Sen sorEve ntListe ner();d. 注册相应的SensorServicesen sorma nager.registerL

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论