Android面试题A

来源:互联网 发布:python 网页自动签到 编辑:程序博客网 时间:2024/05/16 17:20

1、如何设置进入睡眠状态,Activity调用顺序怎么样的顺序?
onCreate() –> onStart() –> onResume() –> onFreeze() –> onPause()

2、android中布局中那些是常用的那些是不常用的?
相对布局 RelativeLayout(常用)
绝对布局AbsLayout(不常用)

3、android 的四大组件是?
activiey,service,broadcast和contentprovide

4、activity一般会重载7个方法用来维护其生命周期,除了onCreate(),onStart(),onDestory() 外还有那些?
onrestart,onresume,onpause,onstop。

5、在Activity上显示dialog,Activity调用顺序?
onCreate() –> onStart() –> onResume()

6、如果后台的Activity由于某原因被系统回收了,如何在被系统回收之前保存当前状态?
当你的程序中某一个Activity A在运行时,主动或被动地运行另一个新的Activity B,这个时候A会执行onSaveInstanceState()。
B完成以后又会来找A,这个时候就有两种情况:一是A被回收,二是A没有被回收,被回收的A就要重新调用onCreate()方法,
不同于直接启动的是这回onCreate()里是带上了参数savedInstanceState;而没被收回的就直接执行onResume(),跳过onCreate()了。

7、IntentService有何优点?
答:IntentService 的好处
Acitivity的进程,当处理Intent的时候,会产生一个对应的Service
Android的进程处理器现在会尽可能的不kill掉你
非常容易使用

8、横竖屏切换时候activity的生命周期?
1不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次
2设置Activity的android:configChanges=”orientation”时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次
3设置Activity的android:configChanges=”orientation|keyboardHidden”时,切屏不会重新调用各个生命周期,只会执行
onConfigurationChanged方法

9、handler机制的原理
  andriod提供了Handler 和 Looper 来满足线程间的通信。Handler先进先出原则。
Looper类用来管理特定线程内对象之间的消息交换(MessageExchange)。
  1)Looper: 一个线程可以产生一个Looper对象,由它来管理此线程里的MessageQueue(消息队列)。
  2)Handler: 你可以构造Handler对象来与Looper沟通,以便push新消息到MessageQueue里;
或者接收Looper从Message Queue取出)所送来的消息。
  3) Message Queue(消息队列):用来存放线程放入的消息。
  4)线程:UIthread 通常就是main thread,而Android启动程序时会替它建立一个MessageQueue。

10、如何将打开res aw目录中的数据库文件?
  解答:在Android中不能直接打开res aw目录中的数据库文件,而需要在程序第一次启动时将该文件复制到手机内存或SD卡的某个目录中,
然后再打开该数据库文件。复制的基本方法是使用getResources().openRawResource方法获得res aw目录中资源的
InputStream对象,然后将该InputStream对象中的数据写入其他的目录中相应文件中。
在Android SDK中可以使用SQLiteDatabase.openOrCreateDatabase方法来打开任意目录中的SQLite数据库文件。

11、如何将SQLite数据库(dictionary.db文件)与apk文件一起发布?
  解答:可以将dictionary.db文件复制到Eclipse Android工程中的res aw目录中。所有在res aw目录中的文件不会被压缩,
这样可以直接提取该目录中的文件。可以将dictionary.db文件复制到res aw目录中

12、横竖屏切换时候activity的生命周期?
1、不设置Activity的android:configChanges时,切屏会重新调用各个生命周期,切横屏时会执行一次,切竖屏时会执行两次
2、设置Activity的android:configChanges=”orientation”时,切屏还是会重新调用各个生命周期,切横、竖屏时只会执行一次
3、设置Activity的android:configChanges=”orientation|keyboardHidden”时,切屏不会重新调用各个生命周期,
只会执行onConfigurationChanged方法

13、什么情况会导致Force Close ?如何避免?能否捕获导致其的异常?
答:一般像空指针啊,可以看起logcat,然后对应到程序中 来解决错误

14、简要解释一下activity、 intent 、intent filter、service、Broadcase、BroadcaseReceiver

  答:一个activity呈现了一个用户可以操作的可视化用户界面
  一个service不包含可见的用户界面,而是在后台无限地运行
  可以连接到一个正在运行的服务中,连接后,可以通过服务中暴露出来的借口与其进行通信
  一个broadcast receiver是一个接收广播消息并作出回应的component,broadcastreceiver没有界面
  intent:content provider在接收到ContentResolver的请求时被激活。
  activity, service和broadcast receiver是被称为intents的异步消息激活的。
  一个intent是一个Intent对象,它保存了消息的内容。对于activity和service来说,它指定了请求的操作名称和待操作数据的URI
  Intent对象可以显式的指定一个目标component。如果这样的话,android会找到这个component(基于manifest文件中的声明)并激活它。
但如果一个目标不是显式指定的,android必须找到响应intent的最佳component。
  它是通过将Intent对象和目标的intent filter相比较来完成这一工作的。一个component的intent filter告诉android
该component能处理的intent。intent filter也是在manifest文件中声明的。

15、NDK是什么?
NDK是一些列工具的集合,NDK提供了一系列的工具,帮助开发者迅速的开发C/C++的动态库,并能自动将so和java 应用打成apk包。
NDK集成了交叉编译器,并提供了相应的mk文件和隔离cpu、平台等的差异,开发人员只需简单的修改mk文件就可以创建出so

16、android中有哪几种解析xml的类?
XML解析主要有三种方式,SAX、DOM、PULL。常规在PC上开发我们使用Dom相对轻松些,但一些性能敏感的数据库或手机上还是
主要采用SAX方式,SAX读取是单向的,优点:不占内存空间、解析属性方便,但缺点就是对于套嵌多个分支来说处理不是很方便。
而DOM方式会把整个XML文件加载到内存中去,这里Android开发网提醒大家该方法在查找方面可以和XPath很好的结合
如果数据量不是很大推荐使用,而PULL常常用在J2ME对于节点处理比较好,类似SAX方式,同样很节省内存,
在J2ME中我们经常使用的KXML库来解析。

0 0
原创粉丝点击