欢迎来到天天文库
浏览记录
ID:15380367
大小:8.14 MB
页数:141页
时间:2018-08-03
《android 应用性能优化_david wu》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、ImprovingAndroidApplicationPerformanceDavidWudave_wu@htc.comComputerScienceandInformationEngineering,NationalTaiwanUniversityDecember22,2011©2010HTCCorporation.Allrightsreserved.2H!,I’mD"v!dF#l$o%@w&m"n34567Agenda•Performance•FrameworkAPIs•UIperformance•I/Operformance•Scrollingperformance•Mem
2、ory•HowAndroidmemorymanagementworks•OOMkillerandlowmemorykiller•Memorymeasurementofanapplication•Identifyingmemoryleaks•Bestpractices8P'r(o)m"n*e9Whycareaboutperformance?10B"du+e)e,p'r!e-c'11Activitytakesalongtimetolaunch12Applicationnotrespondingtouserevents13Poorframerate14Framerates•Toachi
3、eve60fps,youhave16mstohandleeachframe.•Toachieve24fps,youhave41mstohandleeachframe.•BinderRPCcalltakes~0.12ms.•Readingabytefromflashtakes~5-25ms.•Writingtoflashtakes~5-100ms.•TCPsetup+HTTPfetchtakesseconds.15Numberstakenfromhttp://www.youtube.com/watch?v=c4znvD-7VDAWriteperformancevaries16Tak
4、enfromhttp://www.youtube.com/watch?v=c4znvD-7VDANeverstalltheUIthreadSpawnanewthreadtodowork17RunnableThreadFutureExecutorService18newThread(newRunnable(){@Overridepublicvoidrun(){//dosomeheavywork}}).start();!19newAsyncTask(){protectedLongdoInBackground(URL...urls){final
5、intcount=urls.length;for(inti=0;i6、=newHandlerThread("WorkerThread");Handlerhandler=newHandler(mHandlerThread.getLooper()){@OverridepublicvoidhandleMessage(Messagemsg){switch(msg.what){caseJOB_1://dojob#1break;caseJOB_2://dojob#2break;}}};!21handler.sendEmptyMessage(JOB_1);handler.sendEmptyMessage(JOB_2);handler.post(newRunnab7、le(){@Overridepublicvoidrun(){//domorework}});!22@OverrideprotectedvoidonDestroy(){mHandlerThread.quit();super.onDestroy();}!23newAsyncQueryHandler(getContentResolver()){@OverrideprotectedvoidonQueryComplete(inttoken,Objectcookie,Cursorcursor
6、=newHandlerThread("WorkerThread");Handlerhandler=newHandler(mHandlerThread.getLooper()){@OverridepublicvoidhandleMessage(Messagemsg){switch(msg.what){caseJOB_1://dojob#1break;caseJOB_2://dojob#2break;}}};!21handler.sendEmptyMessage(JOB_1);handler.sendEmptyMessage(JOB_2);handler.post(newRunnab
7、le(){@Overridepublicvoidrun(){//domorework}});!22@OverrideprotectedvoidonDestroy(){mHandlerThread.quit();super.onDestroy();}!23newAsyncQueryHandler(getContentResolver()){@OverrideprotectedvoidonQueryComplete(inttoken,Objectcookie,Cursorcursor
此文档下载收益归作者所有