天天看點

Android Studio直接運作影響啟動性能Android Studio直接運作影響啟動性能

之前eclipse時代,測試空應用啟動性能時,都是直接在ide中啟動,這樣修改起來友善。

到了android studio時代,這個習慣被我保持下來了。

結果就被instant run功能給小小坑了一下。

從性能日志上看,發現空應用在handlebindapplication的時候,在mtk6753晶片上費時60多毫秒,展訊9832晶片上超過100毫秒。

而空應用,既沒有application的oncreate,又沒有installprovider之類的,要花這麼長時間很奇怪。

後來列印了一下backtrace,原來是這樣的:

原來instantrun的時候,安裝的應用的application是com.android.tools.fd.runtime.bootstrapapplication,這個application重載了attachbasecontext,正是這個重載的方法耗費了這麼長的時間。

application的attach方法是個hide的方法:

50 @override

51 protected void attachbasecontext(context newbase) {

52 super.attachbasecontext(newbase);

53 }

65 protected void attachbasecontext(context base) {

66 if (mbase != null) {

67 throw new illegalstateexception("base context already set");

68 }

69 mbase = base;

70 }

繼續閱讀