聪明文档网

聪明文档网

最新最全的文档下载
当前位置: 首页> Android经典面试题

Android经典面试题

时间:2018-07-01 10:00:39    下载该word文档

1.Android中的Context, Activity,Appliction有什么区别?

    相同:Activity和Application都是Context的子类。

    Context从字面上理解就是上下文的意思,在实际应用中它也确实是起到了管理上下文环境中各个参数和变量的总用,方便我们可以简单的访问到各种资源。

    不同:维护的生命周期不同。 Context维护的是当前的Activity的生命周期,Application维护的是整个项目的生命周期。

    使用context的时候,小心内存泄露,防止内存泄露,注意一下几个方面:

 1. 不要让生命周期长的对象引用activity context,即保证引用activity的对象要与activity本身生命周期是一样的。

 2. 对于生命周期长的对象,可以使用application,context。

 3. 避免非静态的内部类,尽量使用静态类,避免生命周期问题,注意内部类对外部对象引用导致的生命周期变化。

2.两个Activity之间传递数据,除了intent,广播接收者,content provider还有啥?

    1)利用static静态数据,public static成员变量

    2)利用外部存储的传输,

    例如 File 文件存储

    SharedPreferences首选项

    Sqlite 数据库

3.Context是什么?

    1、它描述的是一个应用程序环境的信息,即上下文。

    2、该类是一个抽象(abstract class)类,Android提供了该抽象类的具体实现类(ContextIml)。

    3、通过它我们可以获取应用程序的资源和类,也包括一些应用级别操作,例如:启动一个Activity,发送广播,接受Intent,信息,等。

4. 一条最长的短信息约占多少 byte?

    中文70( 包括标点) ,英文160 ,160 个字节。

    因为英文字母采用7位ASCII编码,而汉字则采用8位UCS-2编码并占2个字节,所以160个字符按照7位ASCII编码来换算,即160X7=1120位;而汉字是按照8位的UCS-2编码,即8位一个字符,一个汉字占2个字符,这样1120位换算成汉字数就是1120/8/2=70。

5. 如何将打开 res aw 目录中的数据库文件 ?

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

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

    Android 布局是应用界面开发的重要一环,在 Android 中,共有五种布局方式,分别是: FrameLayout (框架布局),LinearLayout (线性布局),AbsoluteLayout (绝对布局), RelativeLayout (相对布局), TableLayout (表格布局)。

7、两个Activity之间跳转时必然会执行的是哪几个方法?

    一般情况下比如说有两个activity,分别叫A,B,当在A里面激活B组件的时候, A会调用 onPause()方法,然后B调用onCreate() ,onStart(), onResume()。

    这个时候B覆盖了窗体, A会调用onStop()方法. 如果B是个透明的,或者是对话框的样式, 就不会调用A的onStop()方法。

8.Listview列表效率优化

    (1)利用convertview回收视图

    (2)采用ViewHolder模式

    (3) 异步加载图片

    (4) 快速滑动时不加载图片

    (5) 如果自定义的item中有图片,需要处理图片(减少图片所占内存)1.对图片进行边界压缩 2.用option类来保存图片大小 3.避免图片的实时缩放,最好预先缩放到视图大小

    (6)尽量避免在listview适配器中使用线程,因为线程是产生内存泄露的主要原因在于线程的生命周期不可控。

9.handler机制的原理

    andriod提供了Handler和Looper来满足线程间的通信。Handler先进先出原则。Looper类用来管理特定线程内对象之间的消息交换(MessageExchange)。

    1)Looper:一个线程可以产生一个Looper对象,由它来管理此线程里的MessageQueue(消息队列)。

    2)Handler:你可以构造Handler对象来与Looper沟通,以便push新消息到MessageQueue里;或者接收Looper从MessageQueue取出)所送来的消息。

    3)MessageQueue(消息队列):用来存放线程放入的消息。

    4)线程:UIthread通常就是mainthread,而Android启动程序时会替它建立一个MessageQueue。

10.Adapter有什么作用?常见的Adapter有哪些?

    Adapter是连接后端数据和前端显示的适配器接口。常见的Adapter有Adapter, BaseAdapter, CursorAdapter, HeaderViewListAdapter, ListAdapter, ResourceCursorAdapter, SimpleAdapter, SimpleCursorAdapter, SpinnerAdapter, WrapperListAdapter等

11.AsyncTask使用在哪些场景?它的缺陷是什么?如何解决?

    解析 AsyncTask 运用的场景就是我们需要进行一些耗时的操作,耗时操作完成后更新主线程,或者在操作过程中对主线程的UI进行更新。 缺陷:AsyncTask中维护着一个长度为128的线程池,同时可以执行5个工作线程,还有一个缓冲队列,当线程池中已有128个线程,缓冲队列已满时,如果 此时向线程提交任务,将会抛出RejectedExecutionException。 解决:由一个控制线程来处理AsyncTask的调用判断线程池是否满了,如果满了则线程睡眠否则请求AsyncTask继续处理。

12、Android 系统的架构

13、如何启用 Service ,如何停用 Service

14、什么是 ANR 如何避免它 ?

15、assest文件夹里放文件,对于文件的大小有没有限制?

16、进程销毁优先级以及各自含义。

17、启动一个程序,可以主界面点击图标进入,也可以从一个程序中跳转过去,二者有什么区别?

18、AsyncTask使用在哪些场景?它的缺陷是什么?如何解决?

免费下载 Word文档免费下载: Android经典面试题

  • 29.8

    ¥45 每天只需1.0元
    1个月 推荐
  • 9.9

    ¥15
    1天
  • 59.8

    ¥90
    3个月

选择支付方式

  • 微信付款
郑重提醒:支付后,系统自动为您完成注册

请使用微信扫码支付(元)

订单号:
支付后,系统自动为您完成注册
遇到问题请联系 在线客服

常用手机号:
用于找回密码
图片验证码:
看不清?点击更换
短信验证码:
新密码:
 
绑定后可用手机号登录
请不要关闭本页面,支付完成后请点击【支付完成】按钮
遇到问题请联系 在线客服