Java知识分享网 - 轻松学习从此开始!    

Java知识分享网

Java1234官方群25:java1234官方群17
Java1234官方群25:838462530
        
SpringBoot+SpringSecurity+Vue+ElementPlus权限系统实战课程 震撼发布        

最新Java全栈就业实战课程(免费)

springcloud分布式电商秒杀实战课程

IDEA永久激活

66套java实战课程无套路领取

锋哥开始收Java学员啦!

Python学习路线图

锋哥开始收Java学员啦!

Android高级面试题 PDF 下载


分享到:
时间:2020-07-09 12:49来源:http://www.java1234.com 作者:小锋  侵权举报
Android高级面试题 PDF 下载
失效链接处理
Android高级面试题 PDF 下载

整理下载:
提取码:tz7g
 
相关截图:
 
主要内容:
内存抖动(代码注意事项):
内存抖动是由于短时间内有大量对象进出新生区导致的,它伴随着频繁的GC,gc会大量占用ui线程和
cpu资源,会导致app整体卡顿。
避免发生内存抖动的几点建议:
尽量避免在循环体内创建对象,应该把对象创建移到循环体外。
注意自定义View的onDraw()方法会被频繁调用,所以在这里面不应该频繁的创建对象。
当需要大量使用Bitmap的时候,试着把它们缓存在数组或容器中实现复用。
对于能够复用的对象,同理可以使用对象池将它们缓存起来。
四、App瘦身
五、App电量优化
六、网络优化
移动端获取网络数据优化的几个点
1、连接复用:节省连接建立时间,如开启 keep-alive。于Android来说默认情况下
HttpURLConnection和HttpClient都开启了keep-alive。只是2.2之前HttpURLConnection存在影
响连接池的Bug。 2、请求合并:即将多个请求合并为一个进行请求,比较常见的就是网页中的CSS Image Sprites。
如果某个页面内请求过多,也可以考虑做一定的请求合并。
3、减少请求数据的大小:对于post请求,body可以做gzip压缩的,header也可以做数据压缩(不
过只支持http 2.0)。
返回数据的body也可以做gzip压缩,body数据体积可以缩小到原来的30%左右(也可以考虑压缩
返回的json数据的key数据的体积,尤其是针对返回数据格式变化不大的情况,支付宝聊天返回的
数据用到了)。
4、根据用户的当前的网络质量来判断下载什么质量的图片(电商用的比较多)。
5、使用HttpDNS优化DNS:DNS存在解析慢和DNS劫持等问题,DNS 不仅支持 UDP,它还支持
TCP,但是大部分标准的 DNS 都是基于 UDP 与 DNS 服务器的 53 端口进行交互。HTTPDNS 则不
同,顾名思义它是利用 HTTP 协议与 DNS 服务器的 80 端口进行交互。不走传统的 DNS 解析,从
而绕过运营商的 LocalDNS 服务器,有效的防止了域名劫持,提高域名解析的效率。
参考文章
客户端网络安全实现
七、安卓的安全优化
提高app安全性的方法?
安卓的app加固如何做?
安卓的混淆原理是什么?
谈谈你对安卓签名的理解。
2、为什么WebView加载会慢呢?
这是因为在客户端中,加载H5页面之前,需要先初始化WebView,在WebView完全初始化完成之前,
后续的界面加载过程都是被阻塞的。
优化手段围绕着以下两个点进行:
预加载WebView。
加载WebView的同时,请求H5页面数据。
因此常见的方法是:
全局WebView。
客户端代理页面请求。WebView初始化完成后向客户端请求数据。
asset存放离线包。
除此之外还有一些其他的优化手段:
脚本执行慢,可以让脚本最后运行,不阻塞页面解析。
DNS链接慢,可以让客户端复用使用的域名与链接。
React框架代码执行慢,可以将这部分代码拆分出来,提前进行解析。
3、如何优化自定义View
为了加速你的view,对于频繁调用的方法,需要尽量减少不必要的代码。先从onDraw开始,需要特别
注意不应该在这里做内存分配的事情,因为它会导致GC,从而导致卡顿。在初始化或者动画间隙期间
做分配内存的动作。不要在动画正在执行的时候做内存分配的事情。
你还需要尽可能的减少onDraw被调用的次数,大多数时候导致onDraw都是因为调用了invalidate().因
此请尽量减少调用invaildate()的次数。如果可能的话,尽量调用含有4个参数的invalidate()方法而不是
没有参数的invalidate()。没有参数的invalidate会强制重绘整个view。
另外一个非常耗时的操作是请求layout。任何时候执行requestLayout(),会使得Android UI系统去遍历
整个View的层级来计算出每一个view的大小。如果找到有冲突的值,它会需要重新计算好几次。另外需
要尽量保持View的层级是扁平化的,这样对提高效率很有帮助。
如果你有一个复杂的UI,你应该考虑写一个自定义的ViewGroup来执行他的layout操作。与内置的view
不同,自定义的view可以使得程序仅仅测量这一部分,这避免了遍历整个view的层级结构来计算大小。
4、FC(Force Close)什么时候会出现?
Error、OOM,StackOverFlowError、Runtime,比如说空指针异常

------分隔线----------------------------

锋哥公众号


锋哥微信


关注公众号
【Java资料站】
回复 666
获取 
66套java
从菜鸡到大神
项目实战课程

锋哥推荐