优化 App 的启动时间】的更多相关文章

这是一篇 WWDC 2016 Session 406 的学习笔记,从原理到实践讲述了如何优化 App 的启动时间. App 运行理论 main() 执行前发生的事 Mach-O 格式 虚拟内存基础 Mach-O 二进制的加载 理论速成 Mach-O 术语 Mach-O 是针对不同运行时可执行文件的文件类型. 文件类型: Executable: 应用的主要二进制 Dylib: 动态链接库(又称 DSO 或 DLL) Bundle: 不能被链接的 Dylib,只能在运行时使用 dlopen() 加载…
http://www.cocoachina.com/ios/20161102/17931.html App 运行理论 main() 执行前发生的事 Mach-O 格式 虚拟内存基础 Mach-O 二进制的加载 理论速成 Mach-O 术语 Mach-O 是针对不同运行时可执行文件的文件类型. 文件类型: Executable: 应用的主要二进制 Dylib: 动态链接库(又称 DSO 或 DLL) Bundle: 不能被链接的 Dylib,只能在运行时使用 dlopen() 加载,可当做 mac…
App 运行理论 main() 执行前发生的事 Mach-O 格式 虚拟内存基础 Mach-O 二进制的加载 理论速成 Mach-O 术语 Mach-O 是针对不同运行时可执行文件的文件类型. 文件类型: Executable: 应用的主要二进制 Dylib: 动态链接库(又称 DSO 或 DLL) Bundle: 不能被链接的 Dylib,只能在运行时使用 dlopen() 加载,可当做 macOS 的插件. Image: executable,dylib 或 bundleFramework:…
原文地址:https://developer.android.com/topic/performance/launch-time.html#common 通常用户期望app响应和加载速度越快越好.一个启动速度慢的app很可能会给用户留下不好的印象,除了导致用户在应用市场上的打分低之外,很有可能导致致用户直接卸载. 这篇文章提供了优化app启动时间的方法.先解释了app进程启动的内部流程.然后讨论如何优化启动的性能.最后列出几个常见的启动问题和解决方案. 一 启动内幕 App启动可能发生在以下三种…
(转载) 已知的两种方法貌似可以获取,但是感觉结果不准确:一种是,adb shell am start -w packagename/activity,这个可以得到两个值,ThisTime和TotalTime,不知道两个有什么区别,而且与实际启动时间不匹配,两者相加都可能比实际启动时间小(测试游戏的时候差别更大):另外一种是通过adb logcat的方式,感觉获取的结果也与实际有差别 1 应用启动场景 事实上 Android 中一个 App 的启动时间可以准确计算的.但是要分场景.也就是说要分开…
Testin云測公布首份国内应用质量报告:半数APP平均启动时间不合格 2014/10/23 · Testin · 实验室报告 日前,Testin云測旗下质量管家Master通过随机取样1605款国内主流移动应用,在1258款主流移动设备进行了測试后,公布首份国内应用质量报告,显示1.59%的应用等待时间在3秒以上.平均CPU消耗为13.2%,2/3移动应用CPU占用率高出平均值,5%应用占用CPU高达30%. 数据显示,国内移动应用平均启动时间为2.75秒,近半数移动应用启动时间高于平均线(2…
原文链接 Background Optimizations 前言 后台进程是内存和电池敏感的.一个隐式的broadcast可能会启动很多监听它的后台进程,即使这些进程可能做得工作不多.这可能丢设备性能和用户体验都有比较大的影响. 为了缓解这种问题,7.0(API 24)做了以下限制: Target为 Android 7.0 (API level 24)的App,将不会再收到在mainfest中注册的 CONNECTIVITY_ACTION广播.运行中的App仍然可以在Main Thread中通过…
周四,Facebook Engineering blog 发表了一篇名为<Improving Facebook on Android>博文.博文从四个方面(Performance,Data Efficiency, Networking,Application Size)讲述了Facebook是怎样优化app保证其在不同国家不同类型Android设备上都能表现出良好性能的. 因为原文内容比較 easy理解,这里就直接给出原文.以使上边链接打不开的同学也能看到.<菜鸟成长史:http://b…
应用启动场景 事实上 Android 中一个 App 的启动时间可以准确计算的.但是要分场景.也就是说要分开游戏和应用. 大家都知道,在Android中,游戏开发和应用开发是两码事.所以我们需要分开来说. 1.1 应用启动 我们平时在写应用的时候,一般会指定一个 mainActivity ,用户在桌面上点击这个 Activity 的时候,系统会直接起这个 Activity. 我们知道 Activity 在启动的时候会走 onCreate/onStart/onResume .这几个回调函数. 许多…
该篇博客记录了观看WWDC Session227<Optimizing App Assets>的内容以及一些理解. 引言 该session主要讲述了使用Assets Catalog的新特性来优化App资源文件的部署. 主要从以下四个方面来进行: 压缩(Compression) 设计(Design)和生成(Production) 分类(Cataloging) 部署(Deployment) 压缩(Compression) 图片压缩是Asset Catalog的核心,也是Assets Catalog…
App 的启动速度不仅影响我们调试,也直接关系到用户体验.之前有些很久没有打开过的项目,需要花费很长的时间才完成编译:对应的 App 在点击后,许久才出现启动画面.你是否为这些问题苦恼过呢? 这是我观看 WWDC2016 Sessions406 <Optimizing App Start Time>的博客笔记.虽然没有字幕听起来很吃力,但光看 Slide 还是有不少收获的.原文有点长,包括理论是实践两部分,为了方便阅读这里只放出一部分. Mach-O 文件是如何被加载的 在 mian() 函数…
转载地址:http://www.cnblogs.com/xirihanlin/archive/2010/04/12/1710164.html 参考文章:http://www.cnblogs.com/lee0oo0/archive/2013/06/13/3133833.html Android SDK中包含一个“zipalign”的工具,它能够对打包的应用程序进行优化.在你的应用程序上运行zipalign,使得在运行时Android与应用程序间的交互更加有效率.因此,这种方式能够让应用程序和整个系…
也许现在有一款App可以提供所有你需要的,你不需要的,或者你可以想象到的内容.但是,有多少App真的可以不仅满足需求而且还能提供很好的用户体验呢? 相信很多APP并没有这样的能力.有一些APP的设计特别烂,以至于用户很难去完成一些操作.也有一些APP,当用户做了一些操作之后,动不动就挂掉了.还有一些APP设计的很不直观,很难去操作.所以我想当我说避免开发出一款平庸的APP是一件亟待解决的事情的时候,你会同意我的观点.如果你正在寻找一些工具去优化你的APP, 你会很开心的发现其实这样的工具还挺多的…
转载:http://www.jianshu.com/p/a1cc8f2e0877 较长的构建时间将会减缓项目的开发进度,特别是对于大型的项目,app的构建时间长则十几分钟,短则几分钟,长的构建时间已经成了开发瓶颈,本篇文章根据Google官方文档,加上自己的一些理解提供一些提升app构建速度的优化建议. 1. 为开发环境创建一个变体 有许多配置是你在准备app的release 版本的时候需要,但是当你开发app的时候是不需要的,开启不必要的构建进程会使你的增量构建或者clean构建变得很慢,因此…
也许现在有一款App可以提供所有你需要的,你不需要的,或者你可以想象到的内容.但是,有多少App真的可以不仅满足需求而且还能提供很好的用户体验呢? 相信很多APP并没有这样的能力.有一些APP的设计特别烂,以至于用户很难去完成一些操作.也有一些APP,当用户做了一些操作之后,动不动就挂掉了.还有一些APP设计的很不直观,很难去操作.所以我想当我说避免开发出一款平庸的APP是一件亟待解决的事情的时候,你会同意我的观点.如果你正在寻找一些工具去优化你的APP, 你会很开心的发现其实这样的工具还挺多的…
很多开发者都知道,在面试的时候会经常被问到内存泄露和内存溢出的问题. 1.内存溢出(Out Of Memory,简称 OOM),通俗理解就是内存不够,即内存占用超出内存的空间大小. 2.内存泄漏(Memory Leak),简单理解就是内存使用完毕之后本该垃圾回收却未被回收. 2 在正式了解内存泄露之前,首先来简单回顾一下 Java 内存分配策略. Java 程序运行时的内存分配策略有三种,分别是静态分配.栈式分配.堆式分配,对应的主要内存空间分别是静态存储区(也称方法区).栈区.堆区. 1.静态…
我刚经历了一场末日(停电),特别是在你想写文档的时候... 言归正传,今天的问题是解决iOS10系统下首次按钮APP弹出的网络权限提示所带来了问题以及优化. 起因 查了相关文章知道由于大陆工信部出台的新规指出,应用在未经用户允许的前提下,系统不能授予其使用联网.获取定位的功能.Apple在iOS10系统中加入了关于应用使用数据的授权弹窗提示,用户在iOS系统及以上系统中第一次打开应用时,会被要求对于是否授予应用联网权限进行选择. 问题 Apple把自己的问题解决了, 但是Apple没有给出官方的…
注意:本篇文章译自speeding up existing app with a redis cache,如需要转载请注明出处. 发现问题 在应用解决方法之前,我们需要对我们面对的问题有一个清晰的认识.App所遇到的问题是,当执行一个查询时,它会跑到Diffbot’s API 然后查询数据集.子集被返回并展示出来.根据Diffbot服务器的繁忙程度,可能需要花5秒左右的时间去完成这一过程.如果扩展计算机的能力这种情形无疑会改进,如果一个查询执行一次就被记住并且重复使用24小时,通常可以把这个过程…
高并发经常会发生在有大活跃用户量来访问网站的某个点,例如用户高聚集的业务场景中,如:抢购,促销等.为了让用户流畅的访问网站,来根据自己的业务设计适合系统的处理方案. //对于APP网站首页数据,通常是有APP请求服务端数据在本机进行绘制.APP越少的请求服务端的,就会减少服务器压力:资源和带宽. 1.服务端给APP下发的数据越少,减少无用字段的下发.就是APP需要什么,服务端下发什么. 2.APP每次请求服务端数据,服务端下发最新数据和数据版本号,APP可以缓存到本地,每次接口请求数据的时候,上…
欢迎转载,转载请标明出处: http://blog.csdn.net/johnny901114/article/details/51555203 本文出自:[余志强的博客] 一.抛出问题 现在几乎所有的App都有搜索功能 , 一般情况我们监听EditText控件,当值发生改变去请求搜索接口. 如: etKey.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequenc…
一.启动时间监控 通过adb命令获取 adb shell am start -W /<packageName> /<activityName> 案例: adb shell am start -W tv.danmaku.bili/tv.danmaku.bili.ui.splash.SplashActivity 二.电量监控 获取手机电池信息 adb shell dumpsys battery adb shell dumpsys battery set status 1 adb she…
我是小搬运工,今天讲解流的压缩传输 在我们安卓开发中,通常伴随着大量的数据传输,在此,楼主给出一个简单的压缩流的数据进行操作. public void GZIPCpf(String path) { /* * 描述 * 压缩测试 * 通过压缩的方式实现对java数据流的读取 * java压缩类属于inputstream和outputstream结构的一部分 * */ /* * 压缩类的功能 * 1.CheakedInputStream GetCheckSum()为任何inputstream产生效验…
背景 7月26号我们阿里数据iOS端发布了4.4.0版本,这次版本主要是优化了性能,其中main()阶段的启动耗时优化成果比较明显,从之前的0.5-0.7秒,降低为目前的0.1-0.2秒(main()第一行代码到didFinishLaunchingWithOptions最后一行代码的耗时),用户体验提升明显.在这里梳理一下优化的一些经验,欢迎大家一起交流. 应用启动流程 iOS应用的启动可分为pre-main阶段和main()阶段,其中系统做的事情依次是: 1. pre-main阶段 1.1.…
bireme 大佬的 iOS 保持界面流畅的技巧 https://blog.ibireme.com/2015/11/12/smooth_user_interfaces_for_ios/ 深入理解RunLoop https://blog.ibireme.com/2015/05/18/runloop/ iOS线下分享<RunLoop>by 孙源@sunnyxx https://v.youku.com/v_show/id_XODgxODkzODI0.html objc 中的 block https:…
UI性能测试 性能优化都需要有一个目标,UI的性能优化也是一样.你可能会觉得“我的app加载很快”很重要,但我们还需要了解终端用户的期望,是否可以去量化这些期望呢?我们可以从人机交互心理学的角度来考虑这个问题.研究表明,0-100毫秒以内的延迟对人来说是瞬时的,100-300毫秒则会感觉明显卡顿,300-1000毫秒会让用户觉得“手机卡死了”,超过1000ms就会让用户想去干别等事情了. 这是人类心理学最基础的理论,我们可以从这个角度去优化页面/view/app的加载时间. Ilya Grigo…
app的启动入口Main函数: int main(int argc, char * argv[]) { @autoreleasepool { return UIApplicationMain(argc, argv, nil, NSStringFromClass([AppDelegate class])) } } 先看UIApplicationMain方法的定义: UIApplicationMain(int argc, char * _Nonnull * _Null_unspecified arg…
动机 设备启动时间往往是项目立项时的一项重要技术指标.快速的启动时间意味着设备宕机时间的缩短,系统的快速恢复,也能改善用户使用时的体验感受,是一项重要的市场竞争力. 准备 优化启动时间之前,我们首先要了解下我们设备的主要启动流程,如下图所述,设备启动流程主要包含:硬件.bootloader.操作系统和应用程序4个部分. 硬件部分包括: 电源.时钟.复位时序.存储介质以及其他系统启动时需要依赖的外设等: Bootloader(此处为UBoot)包括: CPU.cache.网卡.存储的复位解复位时序…
版权声明:本文由何小伟原创文章,转载请注明出处: 文章原文链接:https://www.qcloud.com/community/article/687066001482481827 来源:腾云阁 https://www.qcloud.com/community 背景介绍 Android用户也许会经常碰到以下的问题: 1)应用后台开着,手机很快没电了--应用耗电大: 2)首次/非首次启动应用,进入应用特别慢--应用启动慢: 3)应用使用过程中,越来越卡--CPU能力不足/内存泄露: 4)应用页面…
联系QQ:305-710439斗牛app上架应用宝.牛牛手机游戏推广.百人牛牛app应用开发.棋牌游戏上传.手游APP优化 iOS开发iPhone/iPad平台安卓手机软件开发机型覆盖范围 超过113款,其整体设计采用mvc 架构,自定义实现产品列表显示 模式,自定义实现按键放大缩小 动画效果,利用ViewFlipper实 现不同界面间滑动的切换效果, 并配专业的测试,全面保障APP 品质. Android系统 安卓手机软件开发 iSO开发基于Apple的 CocoaTouch框架,采用 MVC…
网上有很多大拿分享的关于Android性能优化的文章,主要是通过各种工具分析,使用合理的技巧优化APP的体验,提升APP的流畅度,但关于内存优化的文章很少有看到.在Android设备内存动不动就上G的情况下,的确没有必要去太在意APP对Android系统内存的消耗,但在实际工作中我做的是教育类的小学APP,APP中的按钮.背景.动画变换基本上全是图片,在2K屏上(分辨率2048*1536)一张背景图片就会占用内存12M,来回切换几次内存占用就会增涨到上百兆,为了在不影响APP的视觉效果的前提下,…