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

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

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

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

解决 APP启动白屏黑屏问题

页简介 页,我们手机上每个 APP 几乎都有自己页,就是在真正进入程序前,会有一个页面停顿几秒钟。其实我们完全可以充分利用好这几秒钟做很多程序初始化了启动。...为什么 APP 启动会白屏或者黑屏 有时候我们会发现,我们在启动我们自己 APP 时候,总是有那么点时间是白屏(黑屏),经过了白屏(黑屏)后才会进入我们 APP。那么这是为什么呢?...我们都知道 Window 布局顶层是 DecorView,而 StaringWindow 显示是一个 DecorView,只是这个 DecorView 会应用我们这个 Activity 所指定...我们默认 Theme 是 @android:style/Theme.Light 的话,这个时候就会产生白屏了。...黑屏就是应用了 @android:style/Theme.Black,好了到这里我们就彻底明白为什么会出现白屏或者黑屏了。

2.8K20

被后台杀死后,Android应用如何重新走逻辑

从推送唤起被杀APP时,如何走逻辑 对于推送消息处理,其路由器一般放在MainActivity,并且在onCreate跟onNewIntent都有添加,如果APP存活情况,可以直接跳转目标页面,...如果APP被杀,这个时候,希望先跳转主界面,再跳转目标页面,在效果上来看就是,用户先看到目标页面,点击返回时候再看到主界面,如果加上,希望达到效果是先看到、点击返回看到目标页,再点击返回看到主页面...路由系统中,针对这两种场景要,先跳转回来后,再跳转推送页 如何判断呢,后面两种场景其实只需要判断是否有Activity存活即可,也就是查查APPtopActivity是否为null,注意不要去向...,基本能够满足APP“死亡”情况下,先跳转需求。...作者:看书小蜗牛 原文链接:被后台杀死后,Android应用如何重新走逻辑 仅供参考,欢迎指正

2.7K40

Android性能优化(四)之内存优化实战

Memory Leak 内存泄漏:对于Java来说,就是new出来Object 放在Heap上无法被GC回收(内存中存在无法被回收对象);内存泄漏发生时主要表现为内存抖动,可用内存慢慢变少。...OOM(art运行环境统计规则还是和dalvik保持一致) 内存溢出是程序运行到某一阶段最终结果,直接原因是剩余内存不能满足内存申请,但是再分析间接原因内存为什么没有了: 内存泄漏存在可能导致可用内存越来越少...通常内存抖动会导致多次GC,实践中内存抖动代表了一段时间内分配了临时对象。...6.3 实现方式可能存在问题:例如启动页图,show完毕之后应该释放掉Bitmap。 一些实现方式看起来没有问题实现了功能但是实际上可能对内存造成了影响。...与之类似的还有:首页图展示之后,Bitmap对象应该及时释放掉。

1.1K30

Android 内存优化总结&实践

(前台进程) 系统需要进行内存回收时最先回收进程,然后是后台进程,以此类推最后才会回收前台进程(一般情况下前台进程就是与用户交互进程了,如果连前台进程都需要回收那么此时系统几乎不可用了)。...Android App为什么会OOM呢?其实就是申请内存超过了Dalvik Heap最大值。...通过这个方式我们看到这三张图分别是,App主背景,App抽屉背景。 ?...这里其实有两个问题: 这几张图原图实际都是1280x720,而在1080p手机上实测这几张图都缩放到了1920x1080 页面,其实这张图在显示过后应该可以回收,但是因为历史原因(和JOOX退出机制有关...优化方式:我们通过将这三张图从xhdpi挪动到xxhdpi(当然这里需要看下图片显示效果有没很大影响),以及在显示过后回收图片。 优化结果: ?

1.9K71

Android App性能优化全方面解析

讲道理是不能。虽然实际也是不能。因为顾客是上帝~~~ So,我们如何判断一个对象是一个可回收垃圾对象呢?这是我们一个主观判断。...第二、流量使用!!我又要拿我们公司项目搞事情了。一个缓存60+M。。。没错,就是60+M。简直可怕,我清个3、5次缓存,在打开个3、5次。好了,2分钟时间,我一个月流量就没了。。。...但启动时,系统依然会展示页,直到第一个 Activity 内容呈现为止。 热启动 相比暖启动,热启动时应用做工作更少,启动时间更短。...但是一般项目都会有页。然后从跳转到首页。我们可以按照大多数项目来改善。怎么说,我们可以看到一般项目都有倒计时显示。也就是说倒计时结束就自动进入首页。或者可以直接跳过进入首页。...我们还可以这样,页我们把他当作一个fragment嵌套在MainActivity中,那么我们可以在进入时直接预加载主页view。倒计时我们把页remove掉直接显示首页。

60010

App、接口测试面试题

cookie 数据存放在客户浏览器上,session 数据存放在服务器上。...cookie 不是很安全,别人可以分析存放在本地 cookie 并进行 cookie 欺骗,考虑到安全应当使用 session。 session 会在一定时间内保存在服务器上。...单个 cookie 保存数据不能超过 4K,很多浏览器都限制一个站点最多保存 20 个 cookie ,可以将登陆信息等重要信息存放为 session;其他信息需要保存,可以放在 cookie。...可用性测试:根据约定协议、方法、格式内容,传输数据到接口经处理后返回期望结果。 接口功能是否正确实现。 返回值测试 - 返回值除了内容要正确,类型也要正确,保证调用方能够正确地解析。...输入异常值(值、特殊字符、超过约定长度等),接口抛错,没做封装处理。 输入错误参数、多输入、少输入参数,接口可能出现错误。

89530

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

项目修改: 将友盟、Bugly、听云、GrowingIO、BlockCanary等组件放在WorkThread中初始化; 延迟地图定位、ImageLoader、自有统计等组件初始化:地图及自有统计延迟...[三方组件调用优化示例代码] 注意:2秒停留可以利用,把耗时操作延迟到这个时间间隔里。...卡顿不能都靠异步来解决,错误使用工程线程不仅不能改善卡顿,反而可能加剧卡顿。...; 工作线程使用未设置优先级; 信息未缓存,重复获取同样信息; 流程问题:例如图每次下载,当次使用; 以及其它细节问题: 执行无用老代码; 执行开发阶段使用代码; 执行重复逻辑; 调用三方SDK里或者...修改广告逻辑为下次生效。

1.2K30

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

因为现在 App 应用启动都会先进入一个页(LaunchActivity) 来展示应用信息 默认情况下会出现白屏现象,系统默认会在启动应用程序时候 启动空白窗口 ,直到 App 应用程序入口...,直到 App 应用程序入口 Activity 创建成功,视图绘制完毕 解决方法可查看Android启动界面SplashActivit实现方法 代码优化 Android中如何计算 App 启动时间...最后还剩下那些为数不多组件在主线程初始化动作,例如埋点,点击流,数据库初始化等,不过这些消耗时间可以在其它地方相抵 需求背景: 应用App通常会设置一个固定页展示时间,例如2000ms,所以我们可以根据用户手机运行速度...//所以页展示时间为 2000ms - diffTime. } 所以我们就可以动态设置应用显示时间,尽量让每一部手机展示时间一致,这样就不会让手机配置较低用户感觉漫长难熬页时间...(例如初始化了2000ms,又要展示2000ms页时间.)

1.9K20

如何打造一款高质量Android移动应用

崩溃处理 1、Java崩溃类型比较明显,实际开发过程中NullPointerException指针情况比较多,从后台获取数据没有判空就就进行使用等情况容易产生指针异常,或者OutOfMemoryError...Bitmap内存一般占据应用总内存很大一部分,把bitmap放到native内存,虽然可以减少GC频繁调用带来问题,提高了系统内存利用率,但是并不能解决bitmap占用内存过大问题。...Android APP启动过程优化 Android APP启动过程: 1、点击桌面图标解析Manifest; 2、Application创建,Activity创建;...根据整个启动流程我们可以把启动优化分为:优化,业务梳理,业务优化,线程优化,GC优化和系统调用优化。...,展示完毕有remove掉,同时在2秒时间内进行首页网络数据缓存,同时采用viewstub形式对activity_main布局进行懒加载,防止首页过于复杂耽误view解析时间。

1.3K40

Android全方位性能调优:启动页面(页面)实现

页面是指APP刚启动时页面会自动跳转到主页面 单单实现页面非常简单。...界面的作用: 1.展示自己软件logo,口号标识语等 2.作为广告平台,获取利益 3.加载下一页面(其他Activity或全局)所需要数据 4.检查更新 首先目录结构 image.png...> 首先在AndroidManifest.xml中注册新加入SplashActivity。...然后将内容放在SplashActivity下。 意思就是让SplashActivity内容先启动。然后再跳转到MainActivity 最后 如果你看到了这里,觉得文章写得不错就给个赞呗?...如果你觉得那里值得改进,请给我留言。一定会认真查询,修正不足。谢谢。 希望读到这您能转发分享和关注一下我,以后还会更新技术干货,谢谢您支持!

2.1K10

折叠开发指导系列⑤丨揭秘开发者不可不看开发、调测工具

本文将介绍通过模拟器调试、命令模拟器调试方法,提供测试用例建议,为开发者快速完成应用在折叠设备上调试提供指导。...1.通过模拟器调试 从Android Studio 3.5 Canary版本开始,开发者可创建一个运行Q Beta 2版本折叠虚拟设备,其支持硬件配置分别为7.3英寸(折叠后为4.6英寸),以及8...建议开发者选择8英寸设备来模拟适配华为MateX折叠手机(备注:Android Studio 3.5 Canary版本下载地址:https://developer.android.google.cn...3.2 用例2:应用在展开态下核心页面功能正常 测试步骤: 1)在屏幕展开状态下,打开应用; 2)遍历应用核心页面的控件按钮,所有功能按钮可用,无失效/crash/anr等问题。...预期结果: 2)应用在折叠展开后,核心页面功能可用

1.9K20

Android开发工程师文集-Activity生命周期,启动方式,Intent相关介绍,Activity详细讲解

问:如果在这里你会问 onRestart()这个方法,你这个靠英语理解一下就可知道,重新启动,那么会问为什么不onCreate()方法,因为MainActivity()这个已经创建了,所以就不用而用...MainActivity onStop()放在 SecondActivity onCreate() 之前会导致什么呢,会出现退效果。onStop()调用,后台运行,不会销毁。...竖与横周期 什么是竖与横周期,就是手机上有横看,和竖效果,周期也是有不一样。...()->onResume() 竖与横切换会效果,这是创建到销毁到创建效果。...❤️ 总结 本文讲了Android开发工程师文集-Activity生命周期,启动方式,Intent相关介绍,Activity详细讲解,如果您还有更好地理解,欢迎沟通 定位:分享 Android&Java

64930

Android开发者Flutter入门(二)

涉及到有以下这些点: 页 自定义布局 下拉刷新 上拉加载更多 使用Assets 路由(页面跳转) 内嵌WebView 页 由于启动Flutter app时候需要初始化Flutter...这个时间是比较长。所以开发Flutter app时候都需要加一个页。给Android平台上跑Flutter app加页其实是和给一个正常Android app加页是一样。...那段注释大概意思是说这个标签是用来表示让Flutter在启动过程中保持页直到第一帧画面被绘制出来。也就是说,隐藏不需要我们来处理了。 接下来看看这个LaunchTheme: ?...LaunchTheme 可见就定义了一个窗口背景了,也就是我们页本尊了,这里你可以把这个drawable改成你自己页图片也OK。 至于ios平台页怎么弄,可以参考这里。...自定义布局 我们都知道,在Android中,如果系统提供布局控件不能满足我们需求,我们会自定义布局控件来实现。Flutter同样也提供自定义布局控件功能。

1.3K20
领券