美文网首页
Android面试题录

Android面试题录

作者: GoodmanLi | 来源:发表于2017-03-03 18:17 被阅读25次

    记录android面试中碰到的问题。

    1.activity的启动模式和应用场景

    • standard
    • singleTop
    • singleTask
    • singleInstance 和单例模式有什么关系。

    2.android 加载图片内存是怎么计算的。

    占用的内存=(图片长度 )x(图片宽度)x(单位像素占用的字节数)(图片长度和宽度都是像素为单位)

    创建一个BitMap时,其单位像素占用的字节数由其参数BitmapFactory.Options的inPreferredConfig变量决定。
    inPreferredConfig为Bitmap.Config类型,Bitmap.Config类是个枚举类型,它可以为以下值:

    • ALPHA_8: 此时图片只有alpha值,没有RGB值,一个像素占用一个字节
    • ARGB_4444: 一个像素占用2个字节,alpha(A)值,Red(R)值,Green(G)值,Blue(B)值各占4个bites,共16bites,即2个字节。
      这种格式的图片,看起来质量太差,已经不推荐使用。
    • ARGB_8888:一个像素占用4个字节,alpha(A)值,Red(R)值,Green(G)值,Blue(B)值各占8个bites,共32bites,即4个字节。
      这是一种高质量的图片格式,电脑上普通采用的格式。它也是Android手机上一个BitMap的默认格式。
    • RGB_565:一个像素占用2个字节,没有alpha(A)值,即不支持透明和半透明,Red(R)值占5个bites ,Green(G)值占6个bites ,Blue(B)值占5个bites,共16bites,即2个字节.对于没有透明和半透明颜色的图片来说,该格式的图片能够达到比较的呈现效果,相对于ARGB_8888来说也能减少一半的内存开销。因此它是一个不错的选择。另外我们通过android.content.res.Resources来取得一个张图片时,它也是以该格式来构建BitMap的.
      从Android4.0开始,该选项无效。即使设置为该值,系统任然会采用 ARGB_8888来构造图片

    另外,android在加载图片到内存中时,还会根据手机的dpi来对图片进行缩放。如果图片放在drawable文件夹里面,就以160dpi为基准,1dp=1px加载到内存中。如果手机dpi为320,图片就会进行缩放,此时1dp = 2px。也就是像素宽度和长度放大到原来的两倍。对应的内存占用也会增大许多。

    3.android项目分包

    讲这个的比较少。多数是解决65k问题的分包方案。
    合理地分包,可以使整个项目模块化,减少包与包之间的依赖,让整个项目的框架更加清晰,更利于后续功能的拓展。
    先按模块分包,再按功能分包。

    4.怎么加速启动Activity。

    对http协议的理解

    java并发i++的线程安全问题

    i++实际执行过程有三步。

    int i = 1;
    int temp = i+1;
    i = temp;

    单线程倒没什么,多线程的话,切线程处于不同的CPU中,每个线程都拥有自己的
    高速缓存,这样可能会出现缓存不一致的问题,比如内存中的i = 0,然后在两个线程中都执行
    i = i + 1;分别在两个线程中执行,最后的结果可能是1,而不是2。

    相关文章

      网友评论

          本文标题:Android面试题录

          本文链接:https://www.haomeiwen.com/subject/ldyrgttx.html