作家
登录

Android面试17个知识点总结宝典

作者: 来源: 2017-12-11 09:06:58 阅读 我要评论

 1. 将线程的内部类,改为静态内部类(因为风静态内部类拥有外部类对象的强引用,而静态类则不拥有)。

 2. 在线程内部采取弱引用保存Context 引用。

查看内存泄漏的办法、对象

  1. android官方供给的对象:Memory Monitor(当APP占用的内存在短时光内快速增长或者GC变得频繁的时刻)、DDMS供给的Heap对象(手动触发GC)
  2. Square供给的内存泄漏检测对象,LeakCanary(可以或许主动完成内存追踪、检测、输出结不雅),进行演示,并且恰当的讲解。

机能优化

  1. 防止过度绘制,经由过程打开手机的“显示过度绘制区域”即可查看过度绘制的情况。
  2. 最小化衬着时光,应用视图树查看节点,对节点进行机能分析。
  3. 经由过程TraceView进行数据的采集以及分析。在有大年夜概定位的时刻,应用Android官方供给的Debug类进行采集。最后经由过程DDMS即可打开这个.trace文件,分析函数的调用情况(包含在指定情况下履行时光,调用次数) 
  1. //开启数据采集 
  2.  
  3.  Debug.startMethodTracing("test.trace"); 
  4.  
  5.  //封闭 
  6.  
  7.  Debug.stopMethodTracing(); 

OOM

避免OOM的一些常见办法:

  1. App资本中尽量罕用大年夜图。应用Bitmap的时刻要留意等比例缩小图片,并且留意Bitmap的收受接收。

  1. BitmapFactory.Options options = new BitmapFactory.Option(); 
  2.  options.inSampleSize = 2; 
  3.  //Options 只保存图片尺寸大年夜小,不保存图片到内存 
  4.  BitmapFactory.Options opts = new BitmapFactory.Options(); 
  5.  opts.inSampleSize = 2; 
  6.  Bitmap bmp = null
  7.  bmp = BitmapFactory.decodeResource(getResources(), 
  8.  mImageIds[position],opts); 
  9.  
  10.  //收受接收 
  11.  bmp.recycle(); 

  2. 结合组件的生命周期,释放资本

  3. IO流,数据库萌芽的游标等应当在应用完之后及时封闭。

  4. ListView中应当应用ViewHolder模式缓存ConverView

九切图

  5. 页面切换的时刻尽量去传递(复竽暌姑)一些对象

不合的组件产生ANR 的时光不一样,主线程(Activity、Service)是5 秒,BroadCastReceiver 是10 秒。

2、Fragment的生命周期

ANR一般有三种类型:

  1. KeyDispatchTimeout(5 seconds)

重要类型按键或触摸事宜在特准时光内无响应

  2. BroadcastTimeout(10 seconds)

BroadcastReceiver在特准时光内无法处理完成

  3. ServiceTimeout(20 seconds)

小概率类型Service在特定的时光内无法处理完成

解决筹划:

 1. UI线程只进行UI相干的操作。所有耗时操作,比如拜访收集,Socket 通信,萌芽大年夜量SQL 语句,复杂逻辑计算等都放在子线程中去,然后经由过程handler.sendMessage、runonUITread、AsyncTask 等方法更新UI。

 2. 无论若何都要确保用户界面操作的流畅度。如不雅耗时操作须要让用户等待,那么可以在界面上显示进度条。

 3. BroadCastReceiver要进行复杂操作的的时刻,可以在onReceive()办法中启动一个Service来处理。

9、九切图(.9图)、SVG图片

点九图,是Android开辟顶用到的一种特别格局的图片,文件名以”.9.png“结尾。这种图片能告诉法度榜样,图像哪一部分可以被拉升,哪一部分不克不及被拉升须要保持原有比列。应用点九图可以包管图片在不模糊变形的前提下做到自适应。点九图常用于对话框背景图片中。

  1. 1、2部分规定了图像的可拉伸部分,当实际法度榜样中设定了对话框的宽高时,1、2部分就会被拉伸成所须要的高和宽,出现出于设计稿一样的视觉效不雅。
  2. 而3、4部分规定了图像的内容区域。内容区域规定了可编辑区域,例如文字须要被担保在其内。

11、过程间通信

  1. 操作体系过程间通信的办法,android中有哪些?
  2. 操作体系:
  3. Windows:剪贴板、管道、邮槽等
  4. Linux:定名管道、共享内存、旌旗灯号量

Android中的过程通信方法并不是完全持续于Linux:

  1. Bundle
  2. 文件共享
  3. AIDL
  4. Messenger
  5. Content Provider
  6. Socket

12、常见的收集框架

常用的http框架以及他们的特点


  推荐阅读

  Github年度报告盘点:TensorFlow无疑是最大赢家!

开辟者大年夜赛路演 | 12月16日,技巧立异,北京不见不散 以前十年,Github所有开辟者共享2500万公共仓库的代码,用户遍布200多个国度,应用人数达到了2400万,有6700万Repo,新增了10亿提>>>详细阅读


本文标题:Android面试17个知识点总结宝典

地址:http://www.17bianji.com/lsqh/39609.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)