• 在线客服

  • 扫描二维码
    下载博学谷APP

  • 扫描二维码
    关注博学谷微信公众号

  • 意见反馈

原创 Android基础知识点面试复习整理

发布时间:2020-04-29 11:48:25 浏览 4915 来源:博学谷 作者:照照

    相信很多小伙伴在准备面试复习的时候,都会因为没有建立自己系统的知识结构,而常常翻开书本马冬梅,合上书本马什么梅。出现这样的情况并不是个例,因此大家应该努力建立自己的Android知识体系,这样多复习几遍,一些重难点就能了熟于胸了。本文为大家整理了一套全面的Android基础知识点,有面试复习需要的小伙伴赶紧收藏起来吧~

     

    Android基础知识点

     

    一、Activity

     

    1Activity的四大启动模式和应用场景

     

    1standard

    标准模式,每次都会在活动栈中生成一个新的Activity实例。通常我们使用的活动都是标准模式。

     

    2singleTop

    栈顶复用,如果Activity实例已经存在栈顶,那么就不会在活动栈中创建新的实例。比较常见的场景就是给通知跳转的Activity设置,因为你肯定不想前台Activity已经是该Activity的情况下,点击通知,又给你再创建一个同样的Activity

     

    3singleTask

    栈内复用,如果Activity实例在当前栈中已经存在,就会将当前Activity实例上面的其他Activity实例都移除栈。常见于跳转到主界面。

     

    4singleInstance

    单实例模式,创建一个新的任务栈,这个活动实例独自处在这个活动栈中。

     

    二、屏幕适配

     

    1、屏幕适配原理

     

    设备像素px和设备独立像素dp之间的关系px = dp * density

     

    三、Android消息机制

     

    1Android消息机制的四大概念

     

    ThreadLocalMessageQueueLooperHandler

     

    2、过程

     

    1)准备工作

    创建Handler,如果是在子线程中创建,还需要调用Looper#prepare(),在Handler的构造函数中,会绑定其中的LooperMessageQueue

     

    2)发送消息

    创建消息,使用Handler发送。

     

    3)进入MessageQueue

    因为Handler中绑定着消息队列,所以Message很自然的被放进消息队列。

     

    4Looper轮询消息队列

    Looper是一个死循环,一直观察有没有新的消息到来,之后从Message取出绑定的Handler,最后调用Handler中的处理逻辑,这一切都发生在Looper循环的线程,这也是Handler能够在指定线程处理任务的原因。

     

    3Looper在主线程中死循环没有卡死界面的原因

     

    导致卡死的是在Ui线程中执行耗时操作导致界面出现掉帧,甚至ANRLooper.loop()这个操作本身不会导致这个情况;Looper会在没有消息的时候阻塞当前线程,释放CPU资源,等到有消息到来的时候,再唤醒主线程;App进程中是需要死循环的,如果循环结束的话,App进程就结束了。

     

    4、介绍IdleHandler

     

    IdleHandler是在Hanlder空闲时处理空闲任务的一种机制。它的执行场景:MessageQueue没有消息,队列为空的时候;MessageQueue属于延迟消息,当前没有消息执行的时候。

     

    四、Bitmap

     

    1Bitmap的内存计算方式

     

    在已知图片的长和宽的像素的情况下,影响内存大小的因素会有资源文件位置和像素点大小。

     

    2、Bitmap的高效加载

     

    Bitmap的高效加载在Glide中也用到了,思路是获取需要的长和宽,一般获取控件的长和宽;设置BitmapFactory.Options中的inJustDecodeBoundstrue,可以帮助我们在不加载进内存的方式获得Bitmap的长和宽;对需要的长和宽和Bitmap的长和宽进行对比,从而获得压缩比例,放入BitmapFactory.Options中的inSampleSize属性;设置BitmapFactory.Options中的inJustDecodeBoundsfalse,将图片加载进内存,进而设置到控件中。

     

    以上就是Android基础知识点面试复习的整理,希望本文可以让大家充分完成面试前技术上的储备工作,并帮助大家顺利通过面试拿到offer

    申请免费试学名额    

在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!

上一篇: 软件工程师要学哪些知识?难不难?  下一篇: C++编程语言学习路线及发展趋势

相关推荐 更多

热门文章

  • 前端是什么
  • 前端开发的工作职责
  • 前端开发需要会什么?先掌握这三大核心关键技术
  • 前端开发的工作方向有哪些?
  • 简历加分-4步写出HR想要的简历
  • 程序员如何突击面试?两大招带你拿下面试官
  • 程序员面试技巧
  • 架构师的厉害之处竟然是这……
  • 架构师书籍推荐
  • 懂了这些,才能成为架构师
  • 查看更多

扫描二维码,了解更多信息

博学谷二维码