Android面试题大全Word格式.docx

上传人:b****4 文档编号:7474245 上传时间:2023-05-08 格式:DOCX 页数:28 大小:103.70KB
下载 相关 举报
Android面试题大全Word格式.docx_第1页
第1页 / 共28页
Android面试题大全Word格式.docx_第2页
第2页 / 共28页
Android面试题大全Word格式.docx_第3页
第3页 / 共28页
Android面试题大全Word格式.docx_第4页
第4页 / 共28页
Android面试题大全Word格式.docx_第5页
第5页 / 共28页
Android面试题大全Word格式.docx_第6页
第6页 / 共28页
Android面试题大全Word格式.docx_第7页
第7页 / 共28页
Android面试题大全Word格式.docx_第8页
第8页 / 共28页
Android面试题大全Word格式.docx_第9页
第9页 / 共28页
Android面试题大全Word格式.docx_第10页
第10页 / 共28页
Android面试题大全Word格式.docx_第11页
第11页 / 共28页
Android面试题大全Word格式.docx_第12页
第12页 / 共28页
Android面试题大全Word格式.docx_第13页
第13页 / 共28页
Android面试题大全Word格式.docx_第14页
第14页 / 共28页
Android面试题大全Word格式.docx_第15页
第15页 / 共28页
Android面试题大全Word格式.docx_第16页
第16页 / 共28页
Android面试题大全Word格式.docx_第17页
第17页 / 共28页
Android面试题大全Word格式.docx_第18页
第18页 / 共28页
Android面试题大全Word格式.docx_第19页
第19页 / 共28页
Android面试题大全Word格式.docx_第20页
第20页 / 共28页
亲,该文档总共28页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

Android面试题大全Word格式.docx

《Android面试题大全Word格式.docx》由会员分享,可在线阅读,更多相关《Android面试题大全Word格式.docx(28页珍藏版)》请在冰点文库上搜索。

Android面试题大全Word格式.docx

startActivity(Intentintent);

startActivityForResult(Intentintent,intrequestCode);

onActivityResult(intrequestCode,intresultCode,Intentdata);

setResult(intresultCode);

4.横竖屏切换时候Activity的生命周期。

1).不设置Activity的android:

configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次.

2).设置Activity的android:

configChanges=”orientation”时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次.

3).设置Activity的android:

configChanges=”orientation|keyboardHidden”时,切屏不会重新调用各个生命周期,只会执行onConfigurationChanged方法.

5.全屏的Activity

//设置全屏模式

getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,

WindowManager.LayoutParams.FLAG_FULLSCREEN);

//去除标题栏

requestWindowFeature(Window.FEATURE_NO_TITLE);

6.如何将一个Activity设置成窗口的样式。

Activity属性设定:

有时候会做个应用程序是漂浮在手机主界面的。

这个只需要在设置下Activity的主题theme,即在Manifest.xml定义Activity的地方加一句:

android:

theme="

@android:

style/Theme.Dialog"

如果是作半透明的效果:

android:

style/Theme.Translucent"

7.Activity中的对象的生命周期大于Activity?

调试方法:

DDMS---->

HEAPSIZE--->

dataobject--->

[TotalSize]

8.你后台的Activity被系统回收怎么办?

被回收的Activity就要重新调用onCreate()方法,不同于直接启动的是这回onCreate()里是带上参数savedInstanceState,没被收回的就还是onResume就好了。

9.如何退出Activity?

如何安全退出已调用多个Activity的Application?

1、抛异常强制退出:

该方法通过抛异常,使程序ForceClose。

验证可以,但是,需要解决的问题是,如何使程序结束掉,而不弹出ForceClose的窗口。

2、记录打开的Activity:

每打开一个Activity,就记录下来。

在需要退出时,关闭每一个Activity即可。

3、发送特定广播:

在需要结束应用时,发送一个特定的广播,每个Activity收到广播后,关闭即可。

4、递归退出

在打开新的Activity时使用startActivityForResult,然后自己加标志,在onActivityResult中处理,递归关闭。

10.如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?

android系统会记录下回收前Activity的状态,再次调用被回收的Activity就要重新调用onCreate(),不同于直接启动的是这回onCreate()里包括参数savedInstanceState。

使用savedInstanceState可以恢复到回收前的状态。

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

通过Intent来传递数据

12.怎么让在启动一个Activity时就启动一个service?

在activity的onCreate里面进行连接并bindservice或者直接startService。

(服务里启动Activity

Intentintent=newIntent();

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);

intent.setClass(getApplicationContext(),FileBrowserActivity.class);

startActivity(intent);

13.同一个程序,但不同的Activity是否可以放在不同的Task任务栈中?

可以放在不同的Task中。

需要为不同的activity设置不同的taskaffinity属性,启动activity的Intent需要包含FLAG_ACTIVITY_NEW_TASK标记

14.Activity怎么和service绑定,怎么在activity中启动自己对应的service?

15.如何将SQLite数据库(.db文件)与apk文件一起发布?

可以将.db文件复制到EclipseAndroid工程中的resaw目录中。

所有在resaw目录中的文件不会被压缩,这样可以直接提取该目录中的文件。

可以将.db文件复制到resaw目录中

16.什么是Service以及描述下它的生命周期。

当需要创建在后台运行的程序的时候,就要使用到Service.

17.Service有哪些启动方法,有什么区别,怎样停用Service?

startService

Service会经历onCreate到onStart,然后处于运行状态,stopService的时候调用onDestroy方法。

bindService

Service会运行onCreate,然后是调用onBind,这个时候调用者和Service绑定在一起。

调用者退出了,Srevice就会调用onUnbind->

onDestroyed方法。

所谓绑定在一起就共存亡了。

调用者也可以通过调用unbindService方法来停止服务,这时候Srevice就会调用onUnbind->

如果是调用者自己直接退出而没有调用stopService的话,Service会一直在后台运行

18.不用service,B页面为音乐播放,从A跳转到B,再返回,如何使音乐继续播放?

19.View如何刷新?

View可以调用invalidate()和postInvalidate()这两个方法刷新

20.什么是IntentService?

有何优点?

IntentService是一个通过Context.startService(Intent)启动可以处理异步请求的Service,使用时你只需要继承IntentService和重写其中的onHandleIntent(Intent)方法接收一个Intent对象,在适当的时候会停止自己(一般在工作完成的时候).所有的请求的处理都在一个工作线程中完成,它们会交替执行(但不会阻塞主线程的执行),一次只能执行一个请求。

优点:

IntentService使用队列的方式将请求的Intent加入队列,然后开启一个workerthread(线程)来处理队列中的Intent,对于异步的startService请求,IntentService会处理完成一个之后再处理第二个,每一个请求都会在一个单独的workerthread中处理,不会阻塞应用程序的主线程,这里就给我们提供了一个思路,如果有耗时的操作与其在Service里面开启新线程还不如使用IntentService来处理耗时操作。

21.请描述一下Intent和IntentFilter。

Intent在Android中被翻译为"

意图"

也就是目的,它们是应用程序四种基本组件——————activity,service和broadcastreceiver之间互相激活的手段。

在调用Intent名称时使用结构全名时为显示调用。

这种方式一般用于应用程序的内部调用,因为你不一定会知道别人写的类的全名。

关于隐式Intent的用法,这里有配置Activity的IntentFilter

在调用的时候指定Intent的action,系统就会自动的去对比是哪个intent-filter符合相应的Activity,找到后就会启动Activity.

一个intentfilter是IntentFilter类的实例,但是它一般不出现在代码中,而是出现在androidManifest.xml文件中,以的形式(有一个例外是broadcastreceiver的intentfilter是使用Context.registerReceiver()来动态设定的,其intentfilter也是在代码中创建的。

一个filter有action,data,category等字段.一个隐式intent为了能被某个intentfilter接受,必须通过3个测试,一个intent为了被某个组件接受,则必须通过它所有的intentfilter中的一个。

22.Intent传递数据时,可以传递哪些类型数据?

Serializable、Charsequence、Parcelable、Bundle

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

一个Activity通常是一个单独的屏幕,每一个Activity都被实现为一个单独的类,这些类都是从Activity基类中继承来的,Activity类会显示由视图控件组成的用户接口,并对视图控件的事件做出响应。

Intent的调用是用业进行架构屏幕之间的切换的,Intent是描述应用想要做什么。

Intent数据结构中两个最重要的部分是动作和动作对应的数据,一个动作对应一个动作数据。

AndroidService是运行在后台的代码,不能与用户交互,可以运行在自己的进程,也可以运行在其他应用程序进程的上下文里。

需要通过某一个Activity或者其他Context对象来调用.

Activity跳转到Activity,Activity启动Service,Service打开Activity都需要Intent表时跳转的意图,以及传递参灵敏,Intent是这些组件间信号传递的承载者。

24.请描述一下BroadcastReceiver。

广播接收器没有用户界面。

然而,它们可以启动一个activity或serice来响应它们收到的信息,或者用NotificationManager来通知用户。

分为两种一种是普通广播还有一种是有序广播。

普通广播,通过Context.sendBroadcast(IntentmyIntent)发送的

有序广播,通过Context.sendOrderedBroadcast(intent,receiverPermission)发送的,该方法第2个参数决定该广播的级别,级别数值是在-1000到1000之间,值越大,发送的优先级越高;

25.在manifest和代码中如何注册和使用broadcastreceiver。

<

receiverandroid:

name="

NewBroad"

>

<

intent-filter>

actionandroid:

android.provider.action.NewBroad"

/>

action>

/intent-filter>

/receiver>

26.动态绑定broadcastreceiver。

动态注册,一般在Activity可交互时onResume()内注册BroadcastReceiver

IntentFilterintentFilter=newIntentFilter("

android.provider.Telephony.SMS_RECEIVED"

);

registerReceiver(mBatteryInfoReceiver,intentFilter);

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

一个程序可以通过实现一个Contentprovider的抽象接口将自己的数据完全暴露出去,而且Contentproviders是以类似数据库中表的方式将数据暴露。

Contentproviders存储和检索数据,通过它可以让所有的应用程序访问到,这也是应用程序之间唯一共享数据的方法。

要想使应用程序的数据公开化,可通过2种方法:

创建一个属于你自己的Contentprovider或者将你的数据添加到一个已经存在的Contentprovider中,前提是有相同数据类型并且有写入Contentprovider的权限。

如何通过一套标准及统一的接口获取其他应用程序暴露的数据?

Android提供了ContentResolver,外界的程序可以通过ContentResolver接口访问ContentProvider提供的数据。

28.请介绍下Android的数据存储方式。

Sharedpreference、文件、SQLite、Contentprovider、网络

29.为什么要用ContentProvider?

它和sql的实现上有什么差别?

使用ContentProvider可以将数据共享给其他应用,让除本应用之外的应用也可以访问本应用的数据。

它的底层是用SQLite数据库实现的,所以其对数据做的各种操作都是以Sql实现,只是在上层提供的是Uri

30.请介绍下Android中常用的五种布局。

LinearLayout、FrameLayout、RelativeLayout、AbsoluteLayout、TableLayout

31.谈谈UI中,Padding和Margin有什么区别?

32.描述一下android的系统架构

android系统架构分从下往上为Linux内核层、运行库、应用程序框架层和应用程序层。

Linux内核层:

负责硬件的驱动程序、网络、电源、系统安全以及内存管理等功能。

运行库和androidruntion:

运行库:

即c/c++函数库部分,大多数都是开放源代码的函数库,例如webkit,该函数库负责android网页浏览器的运行;

例如标准的c函数库libc、openssl、sqlite等,当然也包括支持游戏开发的2dsgl和3dopengles,在多媒体方面有mediaframework框架来支持各种影音和图形文件的播放与显示,如mpeg4、h.264、mp3、aac、amr、jpg和png等众多的多媒体文件格式。

Androidruntion负责解释和执行生成的dalvik格式的字节码

应用软件架构:

java应用程序开发人员主要是使用该层封装好的api进行快速开发的。

应用程序层:

该层是java的应用程序层,android内置的googlemaps、email、IM、浏览器等,都处于该层,java开发人员工发的程序也处于该层,而且和内置的应用程序具有平等的地位,可以调用内置的应用程序,也可以替换内置的应用程序

33.说明onSaveInstanceState()和onRestoreInstanceState()在什么时候被调用

Activity的onSaveInstanceState()和onRestoreInstanceState()并不是生命周期方法,它们不同于onCreate()、onPause()等生命周期方法,它们并不一定会被触发。

当应用遇到意外情况(如:

内存不足、用户直接按Home键)由系统销毁一个Activity时,onSaveInstanceState()才会被调用。

但是当用户主动去销毁一个Activity时,例如在应用中按返回键,onSaveInstanceState()就不会被调用。

因为在这种情况下,用户的行为决定了不需要保存Activity的状态。

通常onSaveInstanceState()只适合用于保存一些临时性的状态,而onPause()适合用于数据的持久化保存。

另外,当屏幕的方向发生了改变,Activity会被摧毁并且被重新创建,如果你想在Activity被摧毁前缓存一些数据,并且在Activity被重新创建后恢复缓存的数据。

可以重写Activity的onSaveInstanceState()和onRestoreInstanceState()方法。

34.android的broadcast的生命周期

1)Broadcastreceiver生命周期中仅有一个回调方法:

voidonReceive(ContextcurContext,IntentbroadcastMsg)

当接收器接收到一条broadcast消息,Android就会调用onReceiver(),并传递给它一个Intent对象,这个对象携带着那条broadcast消息。

我们认为仅当执行这个方式时,Broadcastreceiver是活动的;

这个方法返回时,它就终止了。

这就是Broadcastreceiver的生命周期。

2)由于Broadcastreceiver的生命周期很短,一个带有活动的Broadcastreceiver的进程是受保护的,以避免被干掉;

但是别忘了有一点,Android会在任意时刻干掉那些携带不再活动的组件的进程,所以很可能会造成这个问题。

3)解决上述问题的方案采用一个Service来完成这项工作,Android会认为那个进程中(Service所在的进程)仍然有在活动的组件.

35.res目录有默认几项resource?

5项,drawable-hdpi,drawable-ldpi,drawable-mdpi,layout,values

36.android中有哪几种解析xml的类,它们的原理和区别?

DOM解析

1.XML树在内存中完整理存储,因此可以直接修改其数据和结构。

2.可以通过该解析器随时访问XML树中的任何一个节点.

3.DOM解析器的API在使用上也相对比较简单

缺点:

如果XML文档体积比较大时,将文档读入内存是非常消耗系统资源的。

使用场景:

DOM是用与平台和语言无关的方式表示XML文档的官方W3C标准.DOM是以层次结构组织的节点的集合。

这个层次结构允许开发人员在树中寻找特定信息。

分析该结构通常需要加载整个文档和构造层次结构,然后才能进行工作.DOM是基于对象层次结构的。

SAX解析

SAX对内存的要求比较低,因为它让开发人员自己来决定所要处理的标签。

特别是当开发人员只需要处理文档中所包含的部分数据时,SAX这种扩展能力得到了更好的体现。

用SAX方式进行XML解析时,需要顺序执行,所以很难访问到同一文档中的不同数据。

此外,在基于该方式的解析编码过程也相对复杂。

对于含有数据量十分巨大,而又不用对文档的所有数据进行遍历或者分析的时候,使用该方法十分有效。

该方法不用将整个文档读入内存,而只需读取到程序所需的文档标签即可.

Xmlpull解析

android提供了xmlpullapi,xmlpull和sax类似,是基于流(stream)操作文件,然后根据节点事件回调开发者编写的处理程序。

因为是基于流的处理,因此xmlpull和sax都比较节约内存资源,不会象DOM那样要把所有节点以对象树的形式展现在内存中。

xmlpull比sax更简明,而且不需要扫描完整个流.

37.widget相对位置的完成在antivity的哪个生命周期阶段实现。

38.谈谈Android的IPC机制

IPC是内部进程通信的简称,是共享"

命名管道"

的资源。

Android中的IPC机制是为了让Activity和Service之间可以随时的进行交互,故在Android中该机制,只适用于Activity和Service之间的通信,类似于远程方法调用,类似于C/S模式的访问。

通过定义AIDL接口文件来定义IPC接口。

Servier端实现IPC接口,Client端调用IPC接口本地代理。

39.请解释下在单线程模型中Message、Handler、MessageQueue、Looper之间的关系。

简单的说,Handler获取当前线程中的looper对象,looper用来从存放Message的MessageQueue中取出Message,再有Handler进行Message的分发和处理.

MessageQueue(消息队列):

用来存放通过Handler发布的消息,通常附属于某一个创建它的线程,可以通过Looper.myQueue()得到当前线程的消息队列

Handler:

可以发布或者处理一个消息或者操作一个Runnable,通过Handler发布消息,消息将只会发送到与它关联的消息队列,然也只能处理该消息队列中的消息

Looper:

是Handler和消息队列之间通讯桥梁,程序组件首先通过Handler把消息传递给Looper,Looper把消息放入队列。

Looper也把消息队列里的消息广播给所有的

Handler接

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 党团工作 > 入党转正申请

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2