Android性能优化(一)App启动时间优化
你的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中去加载最开始的主题。
可以在主
Activity
的onCreat
方法中去
setTheme(R.style.AppTheme)
这样在应用加载出来时又恢复了正常,只是手机
System
需要背锅了
2> 如果想要彻底的优化根治app的启动时间,我们需要更加深入的了解app的启动以及一些测量app启动的方法
三、如何测启动一个App的时间我们如和获知一个APP的启动时间呢
1> 我们在用
logcat
抓取手机app启动的日志中去搜索 “dispaly” 关键字可获取该app的启动时间2>可以使用adb命令去启动主
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
意思为设置禁止启动项
作者:Easyhood
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341