App启动时间优化 一、首先我们需要清楚App的主题加载 你的App的主题位于 res/values/styles 我们点击Light主题进
你的App的主题位于
res/values/styles
我们点击
Light
主题进去,会发现此主题位于
app/build/intermediates/exploded-oar/com.Android.support/appcompat-v7/25.1.0/res/values/values.xml
点击此
Light
又会跳到
我们点击后面这个
Light
进去又会跳到
在这里他定义了一个
false
这里有一个非常重要的选项
在他的父类
中有一个
@color/background_material_light
而这个color就是白色
在v7包中的color中定义此色
@color/material_grey_50
所以我们可根据
去优化App启动的视觉感官windowBackground
1> 我们可以在原来的
AppTheme
主题下去加一行
true
这样我们在启动App时回去加载一个透明的背景,当然在用户层面看到的就是
Launcher
桌面,过一会应用才会加载出来,强行甩锅给手机系统。Activity
的onCreat
方法中去
setTheme(R.style.AppTheme)
这样在应用加载出来时又恢复了正常,只是手机
System
需要背锅了
2> 如果想要彻底的优化根治app的启动时间,我们需要更加深入的了解app的启动以及一些测量app启动的方法
三、如何测启动一个App的时间我们如和获知一个APP的启动时间呢
1> 我们在用
loGCat
抓取手机app启动的日志中去搜索 “dispaly” 关键字可获取该app的启动时间Activity
去获取该app的启动时间
adb shell am start -W 包名/+全类名
比如
adb shell am start -W com.lqr.wechat/com.lqr.wechat.activity.SplashActivity
在控制台打印出日志中的
ThisTime
就是启动时间
四、Launcher启动App的过程
在
Launcher
上点击某个app的图标会直接调用到am
的startActivity
方法,该方法会将app分为方法区
,堆区
,java栈
三个部分ActivityThread
的attach
方法会开启app,Application
再开启activity
,在调用attach
后会调用attach Application
远端进程调用handleBindApplication
去创建App,调用Application
的onCreat
方法也就是ActivityThread
中的mInstrumenttation.callApplicationOnCreat(app)
去启动
五、找到最耗时的方法
通过检查trace的方法在主线程中找到最耗时的方法看能否放在子线程中,放在子线程中的方法要复合以下几个特征:
1、没有创建handler
2、没有绘制UI
3、异步要求不是很高
除此以外如果是单例模式的话可以尝试用懒汉模式创建,这样在使用该对象的时候再去创建,节省资源
如果是对启动页要求不是很大的情况下可以加入
true
意思为设置禁止启动项
--结束END--
本文标题: Android性能优化(一)App启动时间优化
本文链接: https://lsjlt.com/news/28867.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
2024-01-21
2023-10-28
2023-10-28
2023-10-27
2023-10-27
2023-10-27
2023-10-27
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0