首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Android 启动优化详解

应用) 其他工作(数据的加载加载,业务组件初始化) 窗口可操作 启动问题分析 由启动过程可以推测出用户可能遇到的三个问题 1....优化: 预览(今日头条),预览窗口实现成效果,高端机上体验非常好,不过低端机上会拉长总的时长(建议在Android6.0以上才启用此方案); //优点:避免点击桌面图标无响应 //缺点...:拉长总的时长 //(可以配合三方库懒加载,异步初始化等方案使用,减少初始化时长) //1....子线程install(不推荐): 页开一个子线程去执行MultiDex.install,然后加载完才跳转到主页, 需要注意的是页的Activity,包括页中引用到的其它类必须在主dex中,...启动时间的扣除逻辑:,广告,新手引导的时间都应扣除 启动排除逻辑:Broadcast、Server 拉起,启动过程进入后台等都需排除掉 衡量启动速度快慢的标准 平均启动时间(体验差的用户可能被平均

5K85

一触即发——App启动优化最佳实践

同时,Google针对App,也给出了非常详细的设计定义,如下所示。 https://material.google.com/patterns/launch-screens.html ?...其实最早的时候,是用来在App未完全启动的时候,让用户不至于困惑App是否启动而加入的一个设计。...而现在的很多App,基本上都把当做一个广告、宣传的页面了,貌似已经失去了原本的意义,但,不管怎么说,在一个App启动的时候,都是非常重要的,设计的事情,交给UE吧,开发要做的,就是让App的启动体验...接下来可以设置一个新的Style,这个Style就是Activity加载的Style。 ? OK,下面在Mainifest中给Activity指定需要加载的Style: ?...最后,我们在Activity加载真正的界面之前,将Theme设置回正常的Theme就好了: ?

1.4K40
您找到你想要的搜索结果了吗?
是的
没有找到

面试官:今日头条启动很快,你觉得可能是做了哪些优化?

二、启动优化 直奔主题,常见的启动优化方式大概有这些: 页优化 MultipDex优化(本文重点) 第三方库懒加载 WebView优化 线程优化 系统调用优化 2.1 页优化 消除启动时的白屏/...需要注意的是页的Activity,包括页中引用到的其它类必须在主dex中,不然在MultiDex.install之前加载这些不在主dex中的类会报错Class Not Found。...所以这种方案的缺点很明显: MultiDex加载逻辑放在页的话,页中引用到的类都要配置在主dex。...总结一下这篇文章主要涉及到哪些内容: 应用启动流程 页优化 MultiDex 原理分析 ClassLoader 加载一个类的流程分析 热修复原理 MultiDex优化: 介绍了两种方式,一种是直接在页开个子线程去加载...快速启动Activity的方式:创建Activity,加载数据。 启动时间监控的方式:Systrace+插桩、BlockCanary。

1K30

启动优化

应用) 其他工作(数据的加载加载,业务组件初始化) 窗口可操作 启动问题分析 由启动过程可以推测出用户可能遇到的三个问题 1....优化: 预览(今日头条),预览窗口实现成效果,高端机上体验非常好,不过低端机上会拉长总的时长(建议在Android6.0以上才启用此方案); //优点:避免点击桌面图标无响应 //缺点...:拉长总的时长 //(可以配合三方库懒加载,异步初始化等方案使用,减少初始化时长) //1....子线程install(不推荐): 页开一个子线程去执行MultiDex.install,然后加载完才跳转到主页, 需要注意的是页的Activity,包括页中引用到的其它类必须在主dex中,...启动时间的扣除逻辑:,广告,新手引导的时间都应扣除 启动排除逻辑:Broadcast、Server 拉起,启动过程进入后台等都需排除掉 衡量启动速度快慢的标准 平均启动时间(体验差的用户可能被平均

3.3K54

iOS App冷启动治理:来自美团外卖的实践

比较容易想到的方案是:在启动时创建一个启动管理,然后读取所有启动项,然后当时间节点到来时由启动触发启动项执行。...页的使用 现在许多App在启动时并不直接进入首页,而是会向用户展示一个持续一小段时间的页,如果使用恰当,这个页就能帮我们节省一些启动时间。...因为当一个App比较复杂的时候,启动时首次构建App的UI就是一个比较耗时的过程,假定这个时间是0.2秒,如果我们是先构建首页UI,然后再在Window上加上这个页,那么冷启动时,App就会实实在在地卡住...0.2秒,但是如果我们是先把页作为App的RootViewController,那么这个构建过程就会很快。...缓存定位&首页请求 美团外卖App冷启动过程中一个重要的串行流程就是:首页定位-->首页请求-->首页渲染过程,这三个操作占了整个首页加载时间的77%左右,所以想要缩短冷启动时间,就一定要从这三点出发进行优化

1.3K31

海量之道系列文章之弱联网优化 (七)

① 【网络交互可否延后】 微博客户端某个版本启动时,从加载到timeline界面需要6秒+。这样的体验是无法接受的,与用户2秒以内的等待容忍度是背道而驰的。...从技术角度去分析,很容易发现问题,诸如我们在启动时有10+个并发的网络请求(因为是HTTP短链接,意味着10+个并发的网络链接)、加载、主UI创建、本地配置加载、本地持久化数据加载至Cache等等程序行为...② 【网络内容可否预先加载】 微博客户端在timeline刷新时,用户向上快速滑,到达一个逻辑分页(比如30条微博消息)时,有两个取舍,一是提前加载下个分页内容并自动拼接,给用户无缝滑动的体验...,最好这些策略云端可以控制; 4) 预先通过网络拉取加载或存储的过程中,不要打搅用户的正常使用; 在移动APP中,加载有大量的实践,比较典型的就是升级提醒,大家都采用了先下载好升级包...,即便是配合加载,也可能因为网络太慢,操控太快而又见菊花。

2.5K00

iOS App冷启动治理:来自美团外卖的实践

注:启动项的定义,在App启动过程中需要被完成的某项工作,我们称之为一个启动项。例如某个SDK的初始化、某个功能的加载等。 性能增量问题 一般情况下,在App早期阶段,冷启动不会有明显的性能问题。...比较容易想到的方案是:在启动时创建一个启动管理,然后读取所有启动项,然后当时间节点到来时由启动触发启动项执行。...页的使用 现在许多App在启动时并不直接进入首页,而是会向用户展示一个持续一小段时间的页,如果使用恰当,这个页就能帮我们节省一些启动时间。...因为当一个App比较复杂的时候,启动时首次构建App的UI就是一个比较耗时的过程,假定这个时间是0.2秒,如果我们是先构建首页UI,然后再在Window上加上这个页,那么冷启动时,App就会实实在在地卡住...0.2秒,但是如果我们是先把页作为App的RootViewController,那么这个构建过程就会很快。

96640

APP,Activity的启动速度优化

正常情况下,如果从桌面启动一个Activity,那么thisTime==totalTime,但是通常app会有一个不加载布局文件的页面,然后再跳转到相应的Activity,这时候thisTime仅仅是代表最后一个...Activity的启动时间,而totalTime还包括而totalTime是指APP进程启动时长,页面的启动时长以及页面的消失,新Activity的启动时长之和,所以关注APP的启动时间,我们通常关注的是...的根结点,保证扁平化的布局可以有效的缩短布局加载时间;使用ViewStub,因为ViewStub只要你不调用inflat,它是不会去加载View的,在Activity启动后,并不是每一个View都需要马上加载...为了实现点击秒开的效果,我们往往会实现APP页面,所谓的页面就是一个不加载布局文件的Activity,但是可以设置它的theme里面的window background成启动欢迎页面(图片分辨率不要太大...,否则加载时间会比较长),这样就能达到点击app,马上就能看到启动页面,由于Activity不用setContentView,所以启动页面的速度也很快,然后再由页面跳转到欢迎页面,然后再进入主界面

1.5K30

iOS App冷启动治理:来自美团外卖的实践

w=1134&h=628&f=png&s=106767] 注:启动项的定义,在App启动过程中需要被完成的某项工作,我们称之为一个启动项。例如某个SDK的初始化、某个功能的加载等。...比较容易想到的方案是:在启动时创建一个启动管理,然后读取所有启动项,然后当时间节点到来时由启动触发启动项执行。...页的使用 现在许多App在启动时并不直接进入首页,而是会向用户展示一个持续一小段时间的页,如果使用恰当,这个页就能帮我们节省一些启动时间。...因为当一个App比较复杂的时候,启动时首次构建App的UI就是一个比较耗时的过程,假定这个时间是0.2秒,如果我们是先构建首页UI,然后再在Window上加上这个页,那么冷启动时,App就会实实在在地卡住...0.2秒,但是如果我们是先把页作为App的RootViewController,那么这个构建过程就会很快。

1.1K20

Android App性能优化全方面解析

应用发生冷启动时,系统一定会执行下面的三个任务: 开始加载并启动应用 应用启动后,显示一个空白的启动窗口(启动页) 创建应用信息 那么创建应用信息,系统就需要做一屁股的事: application的初始化...相比冷启动,暖启动过程减少了对象初始化、布局加载工作启动时间更短。但启动时,系统依然会展示页,直到第一个 Activity 的内容呈现为止。...热启动 相比暖启动,热启动时应用做的工作更少,启动时间更短。热启动产生的场景很多,常见如:用户使用返回键退出应用,然后马上又重新启动应用。...我们可以在页进行一些必要的加载,例如用户信息,定位等等,那么至于其他的,我们可以进入主页进行加载。就和热更新一样,在用户不知情的情况下,默默的更新bug。So,对于一些网络请求,例如广告之类的。...我们可以通过此方法进行加载。 我们还可以这样,页我们把他当作一个fragment嵌套在MainActivity中,那么我们可以在进入时直接加载主页的view。

59910

你想要的Android性能优化系列:启动优化 !

所以,能异步的task优先使用异步启动在Application的onCreate方法中加载,对于不能异步且耗时较少的task,我们可以利用延迟启动进行加载。...6.4 Multidex加载优化 安装或者升级后 首次 MultiDex 花费的时间过于漫长,我们需要进行Multidex的加载优化。...5.0以上默认使用ART,在安装时已将Class.dex转换为oat文件了,无需优化,所以应判断只有在主进程及SDK 5.0以下才进行Multidex的加载 抖音BoostMultiDex优化实践:...页、首页的数据加载广告、首页数据 加载后缓存到本地,下次进入时直接读取缓存。...首页读取缓存到内存的操作还可以提前到页。 6.6 页面绘制优化 页与主页的绘制优化,这里涉及到绘制优化相关知识了,例如减少布局层级等。

1.5K30

Android性能优化(一)之启动加速35%

这样在启动的时候,会先展示一个界面,这个界面就是Manifest中设置的Style,等Activity加载完毕后,再去加载Activity的界面,而在Activity的界面中,我们将主题重新设置为正常的主题...注意:页的2秒停留可以利用,把耗时操作延迟到这个时间间隔里。...; 工作线程使用未设置优先级; 信息未缓存,重复获取同样信息; 流程问题:例如图每次下载,当次使用; 以及其它细节问题: 执行无用老代码; 执行开发阶段使用的代码; 执行重复逻辑; 调用三方SDK里或者...修改广告逻辑为下次生效。...六、对比效果: 通过ADB命令统计应用的启动时间:adb shell am start -W 首Activity。

1.9K41

Android性能优化之启动加速35%

这样在启动的时候,会先展示一个界面,这个界面就是Manifest中设置的Style,等Activity加载完毕后,再去加载Activity的界面,而在Activity的界面中,我们将主题重新设置为正常的主题...注意:页的2秒停留可以利用,把耗时操作延迟到这个时间间隔里。...; 工作线程使用未设置优先级; 信息未缓存,重复获取同样信息; 流程问题:例如图每次下载,当次使用; 以及其它细节问题: 执行无用老代码; 执行开发阶段使用的代码; 执行重复逻辑; 调用三方SDK里或者...修改广告逻辑为下次生效。...六、对比效果: 通过ADB命令统计应用的启动时间:adb shell am start -W 首Activity。

75810

Android性能优化(一)之启动加速35%

[三方组件调用优化示例代码] 注意:页的2秒停留可以利用,把耗时操作延迟到这个时间间隔里。...; 工作线程使用未设置优先级; 信息未缓存,重复获取同样信息; 流程问题:例如图每次下载,当次使用; 以及其它细节问题: 执行无用老代码; 执行开发阶段使用的代码; 执行重复逻辑; 调用三方SDK里或者...修改广告逻辑为下次生效。...六、对比效果: 通过ADB命令统计应用的启动时间:adb shell am start -W 首Activity。...但是在启动时这个注重速度的阶段,忽略的细节就会导致性能的瓶颈。 开发过程中,对核心模块与应用阶段如启动时使用TraceView进行分析,尽早发现瓶颈。

1.2K30

Android App常规测试内容

1.支持多种屏幕显示不同网络1.支持多种网络运行联机调试测试eclipse +android sdk+jdk+代码1.连接真机进入联调模式专项测试启动时间第一次启动与非第一次启动时间流量启动第一次与非第一次...,图片加载多的页面,电量后台运行24小时以及模拟用户使用2天GPUGPU过度绘制CPU 内存 FPS 稳定性测试monkey测试 遍历测试 固定路径压力测试常规测试: 10W 压力型测试:30W...\字符转义快速点击按钮快速点击或者快速刷新,会造成显示异常或者退横视频播放点击返回卡顿删除数据,上拉,下拉数据刷新数据填充满以后,对数据删除后进行刷新操作,会页面异常断网数据加后载断网;断网后联网;...数据加载过程中断网;断网后APP操作修改系统时间对相关时间显示得功能或者时间判断的接口会出现异常按home键数据刷新或者加载,按home键,在进入,页面异常或者退数据跨年15年查找之前14年APP存储数据...对于质量平台(接口测试,自动化测试,性能测试,兼容性,数据收集)只是一概而过,这个无法一一说清楚。

1K10

Android性能优化典范 - 第6季

这次一共才6个小段落,涉及的内容主要有:程序启动时间性能优化的三个方面:优化activity的创建过程,优化application对象的启动过程,正确使用启动显达到优化程序启动性能的目的。...App Launch Time & Theme Launch Screens 启动不仅仅可以作为品牌宣传页,还能够减轻用户对启动耗时的感知,但是如果使用不恰当,将适得其反。...如果程序的启动速度足够快,我们看的窗口停留显示的时间则会很短,但是当程序启动速度偏慢的时候,这个启动可以一定程度上减轻用户等待的焦虑感,避免用户过于轻易的关闭应用。...对于启动,正确的使用方法是自定义一张图片,把这张图片通过设置主题的方式显示为启动,代码执行到主页面的onCreate的时候设置为程序正常的主题。 5....使用这些类库不仅仅额外增加了包的大小,还增加了编译时间。单纯依靠Proguard可能无法完全移除那些使用不到的方法,最佳的方式是使用一些更加轻量化,专门为Android APP设计的jar类库。

64530

Android 性能优化—— 启动优化提升60%

因为现在 App 应用启动都会先进入一个页(LaunchActivity) 来展示应用信息 默认情况下会出现白屏现象,系统默认会在启动应用程序的时候 启动空白窗口 ,直到 App 应用程序的入口...2000ms - diffTime. } 所以我们就可以动态的设置应用的显示时间,尽量让每一部手机展示的时间一致,这样就不会让手机配置较低的用户感觉漫长难熬的页时间(例如初始化了2000ms...,又要展示2000ms的页时间.)...,优化用户体验 广告页优化 页过后就要展示金主爸爸们的广告页了 因为项目中广告页图片有可能是大图,APng动态图片,所以需要将这些图片下载到本地文件,下载完成后再显示,这个过程往往会遇到以下两个问题...或者是其它异步下载操作 在广告页图片 文件流完全写入后 记录图片大小,或者记录一个标识 在下次的广告页加载中可以判断是否已经下载好了广告页图片以及图片是否完整,否则删除并且再次下载图片 另外因为在页中仍然有

1.9K20

Hippy首渲染优化小结

Hippy 在 android使用 v8 作为 JS 引擎,而 iOS 则为 JSCore,以 v8 为例,其加载js的流程大体上分成: Step1: context 初始化 Step2: 源代码字符串加载...下面主要介绍一下本人负责的部分,主要的工作包括 native渲染 和 数据合法性校验。 2.1....关于引擎的初始化耗时如何,我们可看看任务页的具体加载指标,如下图所示。如果暂时无法在引擎初始化前渲染,那退而求其次,在jsbundle加载时执行该动作,在下面这个场景中也至少可以节省400+ms。...何时销毁 首节点销毁的时机执行太早容易出现白屏,执行太晚又容易阻塞用户可操作的时间,事实上在调试过程中两者都有遇到过,比较自动化的解决方式是客户端检测到页面不再发生变化后自动将首的 View 给移除掉...,这里可能会出现首节点创建完了但页面实际并未完全渲染完毕,这就会导致的现象,这里的优化方式(TODO)可以是通过检测回调的触发次数来判断页面节点发生变化的程度,以此作为移除首节点的时机标注。

1.7K30
领券