700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > Android 应用性能优化(2)---优化Android 应用启动速度

Android 应用性能优化(2)---优化Android 应用启动速度

时间:2023-03-10 04:31:32

相关推荐

Android 应用性能优化(2)---优化Android 应用启动速度

优化Android 应用启动速度(应用启动慢的真正原因探究)

开门见山告诉答案:

一个Android 应用真正启动慢的原因是在Application 里面做了耗时的操作。把这些耗时的操作找出来并且new Thread 放到异步线程里面,那么问题就解决了。

下面看我的优化过程,这是我在未优化之前的Application的onCreate() 方法里面做的事情:

@Overridepublic void onCreate() {mUPushHelper = new UPushHelper(this);mUPushHelper.init();if (AppHelper.isAppMainProcess(this)) {super.onCreate();Log.v("tag_2","1");SDKInitializer.initialize(app);Log.v("tag_2","2");QbSdk.initX5Environment(app, null);Log.v("tag_2","3");TuSdk.enableDebugLog(!IS_OFFICIAL);TuSdk.init(app, "1faa2d433fef2f60-03-glpcq1");Log.v("tag_2","4");MobclickAgent.setDebugMode(!IS_OFFICIAL);Log.v("tag_2","5");}}

看上面,我把每个方法执行的间隔时间都给打印出来了。如下图所示:

每个方法的耗时一目了然。1和2之间耗时270毫秒,3和4之间耗时330毫秒。4和5之间耗时340毫秒。

于是我把这些方法放到一个线程里面去执行,如下所示:

@Overridepublic void onCreate() {mUPushHelper = new UPushHelper(this);mUPushHelper.init();if (AppHelper.isAppMainProcess(this)) {super.onCreate();// //耗时操作,一定要放到异步线程里new Thread() {@Overridepublic void run() {Looper.prepare();SDKInitializer.initialize(app);QbSdk.initX5Environment(app, null);TuSdk.enableDebugLog(!IS_OFFICIAL);TuSdk.init(app, "1faa2d433fef2f60-03-glpcq1");Looper.loop();}}.start();MobclickAgent.setDebugMode(!IS_OFFICIAL);}}

注意看上面的Looper.prepare() 和 Looper.loop() ,有些方法的运行需要在一个有Looper的线程才不会报错,所以我就给这个线程一个Looper。

我做了这一步优化之后,日志显示启动时间减少了270毫秒+330毫秒= 600毫秒。

运行OK ,启动速度明显提示。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。