Glow Android 优化实践】的更多相关文章

了解 Glow 的朋友应该知道,我们主营四款 App,分别是Eve.Glow.Nuture和Baby.作为创业公司,我们的四款 App 都处于高速开发中,平均每个 Android App 由两人负责开发,包括 Android 和 Server 开发,在满足 PM 各种需求的同时,我们的 session crash free 率保持不低于 99.8%,其中两款 App 接近 100%. 本文将对 Glow 当前 Android App 中对现有工具的探索及优化进行讲解,希望对读者有所启发. 整体结…
在前两篇文章当中,我们主要学习了Android内存方面的相关知识,包括如何合理地使用内存,以及当发生内存泄露时如何定位出问题的原因.那么关于内存的知识就讨论到这里,今天开始我们将学习一些性能编码优化的技巧. 这里先事先提醒大家一句,本篇文章中讨论的编码优化技巧都是属于一些“微优化”,也就是说即使我们都按照本篇文章的技巧来优化代码,在性能方面也是看不出有什么显著的提升的.使用合适的算法与数据结构将永远是你优化程序性能的最主要手段,但本篇文章中不会讨论这一块的内容.因此,这里我们即将学习的并不是什么…
转载请注明出处:http://blog.csdn.net/guolin_blog/article/details/43376527 在前面几篇文章其中.我们学习了怎样通过合理管理内存,以及高性能编码技巧的方式来提升应用程序的性能.然而实际上界面布局也会相应用程序的性能产生比較大的影响.假设布局写得糟糕的话.那么程序载入UI的速度就会很慢,从而造成不好的用户体验.那么本篇文章我们就来学习一下,怎样通过优化布局来提供应用程序的性能.还没有看过前面前面一篇文章的朋友建议能够先去阅读 Android最佳…
本文由爱奇艺技术团队原创分享,原题<爱奇艺Android客户端启动优化与分析>. 1.引言 互联网领域里有个八秒定律,如果网页打开时间超过8秒,便会有超过70%的用户放弃等待,对Android APP而言,要求更加严格,如果系统无响应时间超过5秒,便会出现ANR,APP可能会被强制关闭,因此,启动时间作为一个重要的性能指标,关系着用户的第一体验. 爱奇艺安卓APP非常重视启动速度的优化,本文将从启动过程.启动时间测量.启动优化.以及后续监控等方面分享我们在启动优化方面积累的经验.   相关文章…
本文内容整理自公众号腾讯Bugly,感谢原作者的分享. 1.问题背景 对于Android应用来说,内存向来是比较重要的性能指标.内存占用过高,会影响应用的流畅度,甚至引发OOM,非常影响用户体验.因此,内存优化也向来是行业内的重点工作项和难点工作项. 手Q在很早之前就开发了很多内存优化技术: 1)自研内存泄露检测系统 LeakInspector天网: LeakInspector是一套完整内存泄露检测系统:能够自动检测应用内存泄露问题:并提供兜底回收以及自动提单功能: 2)图片引用大图告警: 能够…
弱网优化的场景 网络直播行业经过一年多的快速发展,衍生出了各种各样的玩法.最早的网络直播是主播坐在 PC 前,安装好专业的直播设备(如摄像头和麦克风),然后才能开始直播.后来随着手机性能的提升和直播技术的进步,主播只需要有手机和有网络就可以直播.直播发展到现在,单一的室内聊天互动直播已经无法满足观众的需求.主播们开始走向户外,在更多的场景下直播.在可以预见的未来,这种直播形式会快速发展.直播的内容会更优质,直播的形式也会从单纯的娱乐转向体验.直播想延伸到户外需要克服很多困难,而最主要的困难就是应…
在上期<直播推流端弱网优化策略 >中,我们介绍了直播推流端是如何优化的.本期,将介绍手游直播中录屏的实现方式. 直播经过一年左右的快速发展,衍生出越来越丰富的业务形式,也覆盖越来越广的应用领域.手游直播就是现在常见的一种新兴应用场景.手游直播与一般直播最大的不同点,同时也是它的技术难点,在于录屏技术.游戏玩家录屏功能,实时地把自己玩游戏的场景分享展示给其他观众.录屏给很多游戏制作平台和直播内容平台提供了一种新的产品思路. 录屏实现的四个步骤: 采集:获取屏幕采集的视频数据.麦克风采集的音频数据…
由于Android是为移动设备开发的操作系统,我们在开发应用程序的时候应当始终把内存问题充分考虑在内.虽然Android系统拥有垃圾自动回收机制,但这并不意味着我们就可以完全忽略何时去分配或释放内存.即使我们全部按照上一篇文章中给出的编程建议来去编写程序,还是会很有可能出现内存泄露或其它类型的内存问题.所以,唯一能够解决问题的办法,就是尝试去分析应用程序的内存使用情况,那么本篇文章就会教大家如何进行分析.如果你还没有看过前面一篇文章,建议先去阅读 Android最佳性能实践(一)——合理管理内存…
本文由百度技术团队“蔡锐”原创发表于“百度App技术”公众号,原题为<百度App网络深度优化系列<二>连接优化>,感谢原作者的无私分享. 一.前言 在<百度APP移动端网络深度优化实践分享(一):DNS优化篇>里大家了解到网络优化一般会首选优化DNS,而接下来的HTTP协议成为优化的重点,一般优化者会选择协议切换,合并请求,精简数据包大小等手段来对HTTP协议进行优化,严谨的说这都不属于网络优化的范畴. HTTP协议的基础是连接,所以我们的<百度APP移动端网络深…
本文由百度技术团队“蔡锐”原创发表于“百度App技术”公众号,原题为<百度App网络深度优化系列<一>DNS优化>,感谢原作者的无私分享. 一.前言 网络优化是客户端几大技术方向中公认的一个深度领域,所以百度App给大家带来网络深度优化系列文章. 本系列文章目录如下: <百度APP移动端网络深度优化实践分享(一):DNS优化篇>(* 本文) <百度APP移动端网络深度优化实践分享(二):网络连接优化篇> <百度APP移动端网络深度优化实践分享(三):移…
本文引用了颜向群发表于高可用架构公众号上的文章<聊聊HTTPS环境DNS优化:美图App请求耗时节约近半案例>的部分内容,感谢原作者. 1.引言 移动互联网时代,APP 厂商之间的竞争非常激烈,而良好的用户体验是必须优先考虑的,美图产品以高颜值著称,对产品的用户体验非常重视.从技术的角度来看,客户端的体验优化当中 DNS 优化是非常关键的一环,怎么降低 DNS 的耗时.怎么减少域名劫持等问题,都是大家需要重点解决的研发问题. 本文介绍美图APP在移动端DNS优化的实践(主要针对HTTPS协议)…
TensorFlow对Android.iOS.树莓派都提供移动端支持. 移动端应用原理.移动端.嵌入式设备应用深度学习方式,一模型运行在云端服务器,向服务器发送请求,接收服务器响应:二在本地运行模型,PC训练模型,放到移动端预测.向服务端请求数据可行性差,移动端资源稀缺.本地运行实时性更好.加速计算,内存空间和速度优化.精简模型,节省内存空间,加快计算速度.加快框架执行速度,优化模型复杂度和每步计算速度.精简模型,用更低权得精度,量化(quantization).权重剪枝(weight prun…
本文由“逆流的鱼yuiop”原创分享于“何俊林”公众号,感谢作者的无私分享. 1.引言 直播行业的竞争越来越激烈,进过2018年这波洗牌后,已经度过了蛮荒暴力期,剩下的都是在不断追求体验.最近正好在做直播首开优化工作,实践中通过多种方案并行,已经能把首开降到500ms以下,借此机会分享出来,希望能对大家有所启发. 本文内容的技术前提: 1)基于FFmpeg的ijkplayer,最新版本0.88版本: 2)拉流协议基于http-flv. http-flv更稳定些,国内大部分直播公司基本都是使用ht…
本文由百度技术团队“蔡锐”原创发表于“百度App技术”公众号,原题为<百度App网络深度优化系列<三>弱网优化>,感谢原作者的无私分享. 一.前言 网络优化解决的核心问题有三个,第一是安全问题,我们在<百度APP移动端网络深度优化实践分享(一):DNS优化篇>进行了详细的讲解.第二是速度问题,我们在<百度APP移动端网络深度优化实践分享(二):网络连接优化篇>也做了详细的介绍.第三是弱网问题,它是网络优化中最为复杂且需要反复验证和分析的问题,我们的<百…
首先介绍一下携程App的网络服务架构.由于携程业务众多,开发资源导致无法全部使用Native来实现业务逻辑,因此有相当一部分频道基于Hybrid实现.网络通讯属于基础&业务框架层中基础设施的一部分,为App提供统一的网络服务: 1Native端的网络服务 Native模块是携程的核心业务模块(酒店.机票.火车票.攻略等),Native模块的网络服务主要通过TCP连接实现,而非常见的Restful HTTP API那种HTTP连接,只有少数轻量级服务使用HTTP接口作为补充. TCP连接网络服务模…
数据库定义: 数据库是依照某种数据模型组织起来并存在二级存储器中的数据集合,此集合具有尽可能不重复,以最优方式为特定组织提供多种应用服务,其数据结构独立于应用程序,对数据的CRUD操作进行统一管理和控制,数据库是数据管理的高级阶段,是在文件系统上发展起来的. 基本结构: 数据库分三个层次:分别为物理数据层.概念数据层.逻辑数据层. 物理数据层:它是数据库的最内层,是物理存贮设备上实际存储的数据的集合.这些数据是原始数据,是用户加工的对象,由内部模式描述的指令操作处理的位串.字符和字组成. 概念数…
2016 年已经过去一半,你在年初制定的成长计划都实现了吗? 学海无涯,技术成长不是一簇而就的事情.本期 fir.im Weekly 推荐 王下邀月熊_Chevalier的 我的编程之路--知识管理与知识体系,适合所有的开发者阅读. 还有作者的关于 2016里一些 Android 最佳实践列表--Opinionated,其中集成 Medium 上关于最佳实践的 Checklist,并加入了一些个人看法,包涵Language.UI.Network.Storage.DataBase.SysProc.…
接上一篇 <Android 开发实践 ViewGroup 实现左右滑出窗口(一)http://www.cnblogs.com/inkheart0124/p/3532862.html> 源码: http://files.cnblogs.com/inkheart0124/PushSlider.zip ViewGroup中touch事件的处理,有三个函数 public boolean dispatchTouchEvent(MotionEvent ev):事件派发 public boolean onI…
利用假期把以前做的东西总结整理一下,先从简单的开始吧.实现的效果是这样的:   做了个截屏动画,比例有点不对了,凑合着看吧. 整个窗口有3部分组成,中间的主界面是个列表,左边的滑出界面是个菜单,右边的滑出界面是编辑框等.左边菜单是半屏的,右边的是全屏的.最后其实我只用到了左边的滑出窗口,但还是把左右的算法都做全了.并且设计了一个方法,让activity可以指定两个滑出窗口的宽度. 源码: http://files.cnblogs.com/inkheart0124/PushSlider.zip 一…
原文:Xamarin.Android开发实践(五) 一.服务的生命周期 服务与活动一样,在它的整个生命周期中存在着一些事件,下图可以很好解释整个过程以及涉及到的方法: 在真实的使用中,Service来还包含一个OnBind方法,并且必须要使用该方法,但是只要返回NULL即可,除非当前服务是一个绑定服务,那么就要返回实现了IBinder的实例. 二.回调方法的总结 上图中涉及到了几个方法,下面将做简单的介绍: OnCreate:只会在服务第一次开启的时候调用,主要负责一些初始化代码 OnStart…
原文:Xamarin.Android开发实践(四) Xamarin.Android下获取与解析JSON 一.新建项目 1.新建一个Android项目,并命名为为NetJsonList 2.右击引用,选择添加引用,引用System.Json.dll 二.同步请求 既然是跨平台,我们自然不能按照java下的方式进行编写,否则如何跨平台呢,所以我们需要使用Syste.Net命名空间下的两个类:HttpWebRequest和HttpWebResponse. 首先打开Resources/layout/Ma…
原文:Xamarin.Android开发实践(三) 一.前言 用过Android手机的人一定会发现一种现象,当你把一个应用置于后台后,一段时间之后在打开就会发现应用重新打开了,但是之前的相关的数据却没有丢失.可以看出app的“生命”是掌握在系统手上的,而不像Windows上开发的程序. 二.活动的生命周期 这里我们借助一张图帮助我们理解: 当然很多人现在还看不懂这张图,下面我们会逐一介绍: 1.OnCreate 这个方法是打开活动后第一个执行的事件,当然也是我们必须重写的一个方法,其中它大致负责…
原文:Xamarin.Android开发实践(二) 一.准备 开始学习本教程前必须先完成该教程http://www.cnblogs.com/yaozhenfa/p/xamarin_android_quickstart.html 否则将无法继续. 二.界面 1.打开Resources/layout/Main.axml文件,并在Call Button下方继续加入一个按钮,并设置其id为@+id/CallHistoryButton同时设置Text为@string /callHistory(这个其实是一…
原文:Xamarin.Android开发实践(一) 一.准备工作 1.创建一个空的解决方案,并命名为Phoneword 2.右击解决方案 新建->新建项目 并命名为Phoneword_Droid 二.界面 1.打开Resources文件夹->layout文件夹双击打开Main.axml 2.然后将会出现下面的界面 3.接着我们选择这个Button并删除(按下Delete),并从左边的工具箱中拖拽一个 Text(Large) 控件到该界面中,如下所示: 4.同时还要通过属性窗口修改Text的值:…
http://kb.cnblogs.com/page/519824/ 携程App的网络性能优化实践 受益匪浅的一篇文章,让我知道网络交互并不是简单的传输和接受数据.真正的难点在于后面的性能优化 下面对文章中的几点进行总结和整理,作为个人的笔记 常见的网络性能问题: 1.DNS问题 DNS被劫持或失效 DNS解析慢或者失败 2.TCP连接问题 TCP的连接端口被封 TCP连接超时 3.write/Read问题 设置合理的读写超时时长 客户端所处环境的常用端口被限制 网络切换(即当用户的网络在WIF…
Lazy<T>在Entity Framework中的性能优化实践(附源码) 2013-10-27 18:12 by JustRun, 328 阅读, 4 评论, 收藏, 编辑 在使用EF的过程中,导航属性的lazy load机制,能够减少对数据库的不必要的访问.只有当你使用到导航属性的时候,才会访问数据库.但是这个只是对于单个实体而言,而不适用于显示列表数据的情况. 这篇文章介绍的是,使用Lazy<T>来提高显示列表页面的效率. 这里是相关的源代码 PerformanceTest.…
很对不起大家,又是一篇乱序的文章,但是满满的干货,来源于实践,相信大家会有所收获.里面穿插一些感悟和生活故事,可以忽略不看.不过听大家普遍的反馈说这是其中最喜欢看的部分,好吧,就当学习之后轻松一下. Redis各种数据结构性能数据对比 测试工具:perf4j 性能指标:平均值,最小值,最大值,方差 对比将814条数据按单条插入到哈希MAP和哈希SET: 对比从814条数据的哈希MAP和哈希SET中判断一个元素是否存在(map的hasKey和set的isMember): 大量数据插入哈希MAP,运…
这篇博文讲述如何优化扫描速度.我们通过MySQL的JOIN(二):JOIN原理得知了两张表的JOIN操作就是不断从驱动表中取出记录,然后查找出被驱动表中与之匹配的记录并连接.这个过程的实质就是查询操作,想要优化查询操作,建索引是最常用的方式.那索引怎么建呢?我们来讨论下,首先插入测试数据. CREATE TABLE t1 ( id INT PRIMARY KEY AUTO_INCREMENT, type INT ); SELECT COUNT(*) FROM t1; +----------+ |…
这篇博文讲述如何优化JOIN查询带有排序的情况.大致分为对连接属性排序和对非连接属性排序两种情况.插入测试数据. CREATE TABLE t1 ( id INT PRIMARY KEY AUTO_INCREMENT, type INT ); SELECT COUNT(*) FROM t1; +----------+ | COUNT(*) | +----------+ | +----------+ CREATE TABLE t2 ( id INT PRIMARY KEY AUTO_INCREME…
protobuf-net优化效果图 protobuf-net是Unity3D游戏开发中被广泛使用的Google Protocol Buffer库的c#版本,之所以c#版本被广泛使用,是因为c++版本的源代码不支持Unity3D游戏在各个平台上的动态库构建.它是一个网络传输层协议,对应的lua版本有两个可用的库:一个是proto-gen-lua,由tolua作者开发,另外一个是protoc,由云风开发.protobuf-net在GC上有很大的问题,在一个高频率网络通讯的状态同步游戏中使用发现GC过…