Android面试一天一题(3)让你的APP如丝般顺滑

Android面试一天一题(3)让你的APP如丝般顺滑先是题外话 17 届同学注意啦 BAT 网易 微软和 Google 中国的内推都开始啦 赶紧联系学长学姐让自己多一次机会吧 内推失败不会影响你的正常网申 OK 广告结束 进入正题 在你日后参加的每一场 Android 面试里 一定都会被问到同一个问题

欢迎大家来到IT世界,在知识的湖畔探索吧!

先是题外话,17届同学注意啦,BAT、网易、微软和Google中国的内推都开始啦,赶紧联系学长学姐让自己多一次机会吧,内推失败不会影响你的正常网申。

Android面试一天一题(3)让你的APP如丝般顺滑
欢迎大家来到IT世界,在知识的湖畔探索吧!

OK,广告结束,进入正题。

在你日后参加的每一场Android面试里,一定都会被问到同一个问题,“你用过哪些手段来优化APP的性能?”。

在回答这个问题的时候,我建议采取小学体育老师教我的叙述方法——总—分的形式。先总的来说“在APP开发过程中,可能遇到的性能问题包括内存泄露、内存溢出、布局重叠、ANR以及线程爆炸等”;随后,分别说“比如,为了避免内存泄露,我曾经……”下面,我们具体看看“总”和“分”具体包括了哪些内容,面试的时候大家可以自己选择一部分作为答案。

1.总

为了向面试官描述APP可能遇到性能问题时,我们自己首先要清楚这些问题指的是什么。

首先,看看内存泄露和内存溢出。他们有啥区别,简单来说——内存泄露是指,该释放的资源不释放,导致本可以被系统回收的内存无法回收;内存溢出是指,你要的内存太大系统给不了。什么场景下会导致内存泄露和内存溢出呢?

内存泄露的几种常见场景,广义上说都是该释放的不释放,如:用完Bitmap不调recycle(),查完数据库不关Cursor,跑完动画(属性动画中的无限循环动画)不调cancel(),注册(Receiver,EventBus)过后不unregister();而内存溢出,最常见的出现在Bitmap中,当我第一次做用户头像上传的功能时,每次拍完照,直接点击上传,APP先是卡住,而后崩溃。这就是由于Bitmap所占内存过大导致的。

其次,让我们了解下布局重叠。冬天穿衣服很麻烦,因为你得一件一件套,裹得跟个粽子似的。Android跟人一样,如果你让它在屏幕的同一个位置重复画很多次布局,它就会很烦躁,可能出现卡帧的情况。这就是所谓布局重叠的问题,大家可以打开自己手机,设置—辅助功能–开发人员工具–硬件加速渲染—调试GPU过渡绘制— 显示过渡绘制区域,来查看每个APP的布局重叠状态,各种颜色的含义如下图所示。

Android面试一天一题(3)让你的APP如丝般顺滑

此外,ANR是由于在主线程里做了耗时操作,造成Activity在5秒内无法对触屏或输入时间做出相应;而线程爆炸则出现在我们频繁创建和销毁时,这类操作会导致大量线程相互争抢资源而造成阻塞。

2.分

在“总”的说完后,就可以挑两个谈谈我们的处理办法了。比如Bitmap占用内存过大的问题,我们的处理办法是什么呢?在拍照上传头像这样的场景里,可以通过增加一个裁剪页面,来主动控制所要上传头像的大小。而在图片加载这样的场景里,我们可以使用BitmapFactory.Options先设置好我们需要的图片尺寸(指的是我们为某个imageview预先设置的尺寸,这个尺寸一般都比原始图片小的多),随后在进行加载,这样也可以避免OOM问题。再比如布局重叠的问题,我们可以通过<include>,<merge>和<viewstub>等标签有效地解决,这里有一点需要注意的是,<viewstub>标签只能用来处理一次某个布局从不可见到可见的过程,如果需要持续控制,多次隐藏、显示某个布局,则不能使用该标签。

除了上面举的这两个例子外,性能优化的手段还包括:ViewHolder的使用,线程池的使用(AsyncTask是基于线程池的),通过判断Listview的滚动状态动态执行数据的加载(如快速滚动时暂不加载,静止或慢速滑动时加载),适当使用软引用以及使用SparseArray代替HashMap等。

最后,如果使用过像MAT这样的内存分析工具就更好了,它可以帮助你快速定位项目中存在的内存泄露问题,如下图所示。

Android面试一天一题(3)让你的APP如丝般顺滑

切记,回答这种问题的时候看着面试官的眼镜,不要低着头像背课文一样,很不好呦~希望大家能够多多订阅,谢谢大家啦~DX

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://itzsg.com/109394.html

(0)
上一篇 1小时前
下一篇 1小时前

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们YX

mu99908888

在线咨询: 微信交谈

邮件:itzsgw@126.com

工作时间:时刻准备着!

关注微信