Android无法优化应用,你真的懂Android App的启动优化吗?

知其然知其所以然

App 启动的三种状态

每一种状态都会影响你的App对用户可见的时间

冷启动(冷启动是App从零状态开始的状态,相对于其他的状态,我们应该更注重优化这状态下的启动)

什么是冷启动?

在系统关闭App前提下,设备首次启动

冷启动时,系统做了些什么?

加载和启动应用程序

在启动后,显示应用的空白启动窗口

创建app process

app process 就开始做接下来的部分(见下图)

656818e12073

image

热启动(热启动和温启动,是系统把正在运行的App从后台带到前台的状态)

重新启动App,但是这个时候App的Activitys都还存在内存中

温启动

我根据官网的解释,重新进入App,重新调用onCreate()方法就是温启动,然后为什么会调用onCreate,可以认为App数据在内存中被清除了

这里可以先来分析下,根据官网提供的图,注意看,在这个单打独斗的日子,我们改不了系统的源码,我们只能做到我们开发中注意的点,两个onCreate回调方法,我们平时肯定是会用到的,不要在这做太多的耗时,影响DislayTime**

App启动流程分析

我在绍文大神的《Android开发高手课》专栏中看到,其实我们真正的业务不止这么简单,我们可能有闪屏页,广告页,然后到主页,这才是单单的页面展示,里面加载广告,热修复框架,插件话框架,等等

656818e12073

邵文大神课里的图

查看启动时间

那么你可以通过logcat中Displayed,来查看你应用到某个页面的时间

2019-07-26 14:36:40.016 1151-1188/? I/ActivityManager: Displayed com.txt.demo/DemoActivity: +847ms (total +2s405ms)

或者通过adb的命令行来查看

adb shell am start -S -W com.txt.demo/DemoActivity

Stopping: com.txt.demo

Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=com.txt.demo/DemoActivity }

Status: ok

Activity: com.txt.demo/DemoActivity

ThisTime: 405

TotalTime: 908

WaitTime: 939

Complete

你还可以通过调用reportFullyDrawn()这是Activity的方法,可以来查看从启动到该页面的时间,根据你项目的需求,比如你有一系列懒加载,导致用户不能点击,那么你可以在懒加载完成之后,调用这个函数,告诉系统,然后可以查看。

656818e12073

image

2019-07-26 14:52:23.990 1151-1485/? I/ActivityManager: Fully drawn com.txt.homecredit/.ui.MainActivity: +1s380ms

当然好的工具也很重要,AS的CPU分析器工具真的至少要会一种,因为很多性能分析,找到思路或者是想找到问题,工具能帮助你如虎添翼,有空我分享下

可能出现的启动问题

1. 点击图标很久都不响应,或出现白屏(黑屏)

我们应用要是没有处理的话,都会出现这个问题,这个问题的解决,网上已经有很多方案,有方案说禁用预览窗口,但是官网说建议还是用设置theme的背景图片方法

android:gravity="fill"/>

2. 首页显示的太慢

现在业务多,启动流程越来越复杂,闪屏广告、热修复框架、插件话框架等等都需要在启动阶段完成,所以会导致部分性能不好的机型出现显示很慢的情况

3. 首页显示后无法操作

这个操作是基于首页显示的太慢做的优化,更多的工作在放在异步来处理,但是导致的弊端,页面展示后,有些数据没有出来,导致白屏,或者用户就无法操作页面。

启动优化

Application优化

在上面冷启动的图,能看出在onCreate()尽量不做耗时工作

闪屏优化

闪屏优化,就是把预览窗口实现成闪屏的效果,可以用我上面说的这个方法来实现

业务优化

在启动过程中,我们要知道那些模块一定是要用到的,那些是可以在后面加载的

细节优化

比如在广告页中,需要展示3秒的图片,在获取图片的时候,如果超过了三秒,就下次再展示(此时可以展示之前的图片或者不展示,展示logo之类),如果在3秒内,就展示这次的图片。

在上面说到的一定要加载的模块,可以再优化下,是不是可以通过算法,或者其他的方式实现,可优的点(这部分感觉要点能力,哈哈,我跟着绍文大神在学习中)

线程、GC等等比较让人头大的问题都可以优化

启动优化,需要知道系统从启动到展示页面的逻辑,需要清楚了解我们的应用,业务在启动过程中做了什么,我们大部分能做的优化,就是在我们业务上面,通过更好的实现来优化。

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
应用背景为变电站电力巡检,基于YOLO v4算法模型对常见电力巡检目标进行检测,并充分利用Ascend310提供的DVPP等硬件支持能力来完成流媒体的传输、处理等任务,并对系统性能做出一定的优化。.zip深度学习是机器学习的一个子领域,它基于人工神经网络的研究,特别是利用多层次的神经网络来进行学习和模式识别。深度学习模型能够学习数据的高层次特征,这些特征对于图像和语音识别、自然语言处理、医学图像分析等应用至关重要。以下是深度学习的一些关键概念和组成部分: 1. **神经网络(Neural Networks)**:深度学习的基础是人工神经网络,它是由多个层组成的网络结构,包括输入层、隐藏层和输出层。每个层由多个神经元组成,神经元之间通过权重连接。 2. **前馈神经网络(Feedforward Neural Networks)**:这是最常见的神经网络类型,信息从输入层流向隐藏层,最终到达输出层。 3. **卷积神经网络(Convolutional Neural Networks, CNNs)**:这种网络特别适合处理具有网格结构的数据,如图像。它们使用卷积层来提取图像的特征。 4. **循环神经网络(Recurrent Neural Networks, RNNs)**:这种网络能够处理序列数据,如时间序列或自然语言,因为它们具有记忆功能,能够捕捉数据中的时间依赖性。 5. **长短期记忆网络(Long Short-Term Memory, LSTM)**:LSTM 是一种特殊的 RNN,它能够学习长期依赖关系,非常适合复杂的序列预测任务。 6. **生成对抗网络(Generative Adversarial Networks, GANs)**:由两个网络组成,一个生成器和一个判别器,它们相互竞争,生成器生成数据,判别器评估数据的真实性。 7. **深度学习框架**:如 TensorFlow、Keras、PyTorch 等,这些框架提供了构建、训练和部署深度学习模型的工具和库。 8. **激活函数(Activation Functions)**:如 ReLU、Sigmoid、Tanh 等,它们在神经网络中用于添加非线性,使得网络能够学习复杂的函数。 9. **损失函数(Loss Functions)**:用于评估模型的预测与真实值之间的差异,常见的损失函数包括均方误差(MSE)、交叉熵(Cross-Entropy)等。 10. **优化算法(Optimization Algorithms)**:如梯度下降(Gradient Descent)、随机梯度下降(SGD)、Adam 等,用于更新网络权重,以最小化损失函数。 11. **正则化(Regularization)**:技术如 Dropout、L1/L2 正则化等,用于防止模型过拟合。 12. **迁移学习(Transfer Learning)**:利用在一个任务上训练好的模型来提高另一个相关任务的性能。 深度学习在许多领域都取得了显著的成就,但它也面临着一些挑战,如对大量数据的依赖、模型的解释性差、计算资源消耗大等。研究人员正在不断探索新的方法来解决这些问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值