
Android性能优化
文章平均质量分 91
mayundoyouknow
喜欢运动,爱思考
展开
-
Android开发MVP模式--项目实战
1 前言苏宁+App是苏宁易购集团零售云研发中心分销研发中心主要产品之一,由于项目处于初期阶段,业务逻辑复杂,导致业务需求变动快,常常在开发甚至测试过程中出现界面或者后台接口调整的情况。App客户端如何在外部需求不断变化的情况下,降低模块耦合,尽可能减少每次代码修改量,一方面减少开发人员的工作量,另一方面降低测试工程师的工作量,最终顺利完成项目迭代开发。2 为什么使用MVP模式相信在2014年之前,绝大部分人开发Android应用,都是使用的MVC模式,M跟V一般没有什么问题,Controll转载 2021-12-26 18:28:29 · 677 阅读 · 1 评论 -
Android下MVP在项目的实践整理
此项目源码参考:设计模式讲解参考:MVC、MVP、MVVM三种区别_Tiger的专栏-优快云博客MVP是Google开源的一个设计模式,主要是为了细分视图(View)与模型(Model)的功能,让View只做两件事:完成用户的交互; 显示界面布局,同时让Model做数据的处理,业务逻辑放到另外的一个类(Presenter)中。下面做具体分析:M:M层,在项目中负责数据的处理,包括本地数据库查询,网络数据获取都在这一层中完成; View:V层,在项目中是UI模块,也就原创 2021-12-26 18:13:19 · 2006 阅读 · 0 评论 -
MVC、MVP、MVVM三种区别
一直以来对MVC、MVP、MVVP三种理念理解不是特别深刻,今天主要讲讲我对三种设计模式的理解和它们的适用场合;1.MVCMVC模式最初生根于服务器端的Web开发,后来渐渐能够胜任客户端的Web开发,能够满足其复杂性和丰富性;从实现上来说,主要可以分为后端MVC和前端MVC两种;这两种MVC的不同点如下:可以看到,前端的MVC其实是为了解决前端复杂JS模块化的问题,从后端MVC的V分出来的MVC,与后端MVC并没有直接的关系。前端的MVC中,M占的比例很低,只指代数据。而后端V的比例很低.原创 2021-12-23 16:26:09 · 7250 阅读 · 0 评论 -
缓存淘汰算法-LRU算法(kotlin实现)
LRU原理LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。实现1最常见的实现是使用一个链表保存缓存数据,详细算法实现如下:1. 新数据插入到链表头部;2. 每当缓存命中(即缓存数据被访问),则将数据移到链表头部;3. 当链表满的时候,将链表尾部的数据丢弃。分析【命中率】当存在热点数据时,LRU的效率很好,但偶发性的、周期性的批量操作会导致LRU命中率急剧下降,原创 2021-12-21 20:23:08 · 657 阅读 · 0 评论 -
Android性能优化之网络优化
网络请求流程优化前先描述一下一条正常网络请求的流程:DNS 解析,请求DNS服务器,获取域名对应的IP地址; 与服务器建立连接,包括 TCP三次握手,安全协议同步流程; 连接建立完成,发送和接收数据,解码数据;在了解了网络请求的流程后,针对上面这三步流程分别进行优化:一、DNS优化在 Android APP 访问网络的时候,第一步就是 DNS 解析,默认使用运行商的 LocalDNS 服务,DNS 完整的解析流程很长,会先从本地系统缓存取,若没有就到最近的 DNS 服务器取,若没有再到转载 2021-12-17 11:14:33 · 841 阅读 · 0 评论 -
Android进阶——布局优化之灵活借助ViewStub实现懒加载
引言相信在开发Android App的过程中,我们会常常遇到这样的业务需求,需要在运行时根据数据动态决定显示或隐藏某个View和布局。通常就是把可能用到的View先写在布局里,再初始化其可见性都设为View.GONE,然后在代码中根据数据动态的更改它的可见性。虽然这样的实现,逻辑简单而且控制起来比较灵活。但是也存在一定的缺点耗费资源,即使把View的初始可见View.GONE但是在Inflate布局的时候View仍然会被Inflate,即说仍然会创建对象,会被实例化,会被设置属性从而导致耗费内存等资源。今转载 2021-12-17 10:49:53 · 1172 阅读 · 0 评论 -
Android 布局优化(merge使用)
The <merge /> tag helps eliminate redundant view groups in your view hierarchy when including one layout within another.大意是,merge标签是用来帮助在视图树中减少重复布局的,当一个layout包含另外一个layout时。目的:减少布局层数效果:减少视图树中的节点个数,加快视图的绘制,提高UI性能;何时使用:子视图不需要指定任何针对父视图的布局属性 假如..转载 2021-12-17 10:29:44 · 1486 阅读 · 0 评论 -
Android安装包大小优化
安装包的构成1 assetsassets目录可根据应用需求存放任何文件夹架构,比如配置文件,资源文件,图片资源,这些文件的内容再程序运行过程中可以通过AssetManager类获得。和res不同在于,res下的文件会在R文件中生成对应的资源ID,assets不会生成ID2 lib存放C/C++写的库文件,4个类型:ARM、ARM-v7a、MIPS、X86目前的移动设备大部分是基于ARM或者ARM-v7a架构的,X86和MIPS架构的移动智能终端比较少,并且X86的设备基本都兼容了AR..转载 2021-12-16 20:36:59 · 553 阅读 · 0 评论 -
PagerAdapter,FragmentPagerAdapter,FragmentStatePagerAdapter原理分析,notifyDataSetChanged如何更新Fragment?
水平显示Fragment分页在FragmentPagerAdapter和FragmentStatePagerAdapter使用如何选择?FragmentPagerAdapaterFragmentPagerAdapter继承自PagerAdapter类,它将每个页面使用一个Fragment,只要用户能够返回到该页面,该Fragment就会一直保存在FragmentManager中,子类只需要实现getItem()和getCount()就可以实现一个可以工作的Adapter。FragmentPager原创 2021-12-13 16:09:51 · 2876 阅读 · 0 评论 -
Android启动优化实战(有效降低APP启动时间)
1.启动页2.Application启动优化3.关闭APP优化4.启动时间分析5.常用启动分析工具原创 2021-12-07 20:12:51 · 4850 阅读 · 0 评论