济南Android培训
达内济南山大路中心

17156168575

热门课程

济南Android培训班 笔试题

  • 时间:2017-07-10
  • 发布:达内小编
  • 来源:济南达内

    22. 谈谈对Android NDK的理解.济南android开发培训 实行"因材施教,分级培优"教学模式,实现教学的高境界

    答: android NDK是一套工具,允许Android应用开发者嵌入从C、C++源代码编译来的本地机器代码到各自的应用软件包中.

    1、 NDK是一系列工具的集合.

    NDK提供了一系列的工具,帮助开发者快速开发C(或C++)的动态库,并能自动将so和java应用一起打包成apk.这些工具对开发者帮助时巨大的.

    NDK集成了交叉编辑器,并提供了相应的mk文件隔离CPU、平台、API等差异,开发人员只需要简单修改mk文件(指出"那些文件需要编译"、"编译特性要求"等),就可以创建出so.NDK可以自动将so和Java应用一起打包,极大的减轻了开发人员的打包工作.

    2、NDK提供了一份稳定、功能有限的API头文件声明.这些API支持的功能非常有限,包含有:C标准库(libc)、标准数学库(libm)、压缩库(libz)、log库(liblog).

    23. 谈谈Android的优点和不足之处.

    答: 优点如下所示:

    1、android是开源、市场占有率大.

    2、android能够有丰富的硬件选择.

    3、android是一款基于Linux平台的开源操作系统,从而避免了专利壁垒,是一款完全免费的只能手机平台.

    4、由于android是google开发的,因此能够无缝结合Google应用.

    缺点如下所示:

    1、安全与隐私.手机与互联网紧密联系,个人隐私很难得到保守.

    24. Android系统中GC什么情况下会出现内存泄露呢?

    答: 导致内存泄露主要的原因是,先前申请了内存空间而忘记了释放.如果程序中存在无用对象的引用,那么这些对象就会驻留内存,消耗内存,因为无法让垃圾回收器GC验证这些对象是否不再需要.如果存在对象的引用,这个对象就被定义为"有效的活动",同时不会被释放.要确定对象所占内存将被回收,我们就要确认该对象不会再被使用.典型的做法是把对象数据成员设为null或者从集合中移除该对象.当出现以下情况时,会造成内存泄露:

    1、 数据库的cursor没有关闭.济南android开发培训 实行"因材施教,分级培优"教学模式,实现教学的高境界

    2、 构造adapter时,没有使用缓存contentview.

    3、 Bitmap对象不使用时,采用recycle()释放内存.

    4、 Activity中的对象的生命周期大于activity.

    调试方法: DDMS==>HEAPSIZE==>dataobject==>[TotalSize]

    25. Android UI中的View如何刷新.

    答: Android中对View的更新方式有很多种,使用时要区分不同的应用场合.要分清的是:多线程和双缓冲.

    1、不使用多线程和双缓冲

    这种情况最简单,一般只希望View在发生改变时对UI进行重绘.你只需要Activity中显式调用View对象中的invalidate()方法即可.系统会自动调用View的onDraw()方法.

    2、使用多线程和不使用双缓冲

    这种情况下需要开启新的线程,新开的线程就不好访问View对象了.强行访问的话会报错:android.view.ViewRoot$ CalledFromWrongThreadException: only theoriginal thread that created a view hierarchy can touch its views.

    这时候你需要创建一个继承了android.os.handler的子类,并重写handleMessage方法.Android.os.Handle是能发送和处理消息的,你需要在Activity中发出更新UI的消息,然后再你的Handler(可以使用匿名内部类)中处理消息(因为匿名内部类可以访问父类变量,你可以直接调用View对象中的invalidate()方法.也就是说:在新线程中创建并发送一个Message,然后在主线程中捕获、处理该消息.

    3、使用多线程和双缓冲

    Android的SurfaceView是View的子类,她同时也实现了双缓冲.你可以定义一个她的子类并实现Surfaceholder.Callback接口.由于SurfaceHolder.Callback接口,新线程就不要android.os.Handler帮忙了.SurfaceHolder中lockCanvas()方法可以锁定画布,绘制完新的图像后调用unlockCanvasand Post解锁.

    关键词:济南android开发培训
上一篇:济南android培训机构安卓笔试题
下一篇:没有下一篇了

马上预约七天免费体验课

姓名:

电话:

选择城市和中心
贵州省

广西省

海南省

达内教育

有位老师想和您聊一聊