应用除了有内存占用、内存泄露、内存抖动等看不见的性能问题外,还有很多看得见的性能问题,比如进入界面慢、点击反应慢、页面卡顿等等。
除了Android明令禁止在UI线程中执行网络操作外,还有一些耗时的操作也不能在UI线程中执行,比如IO操作、耗时较长的逻辑操作(比如算法)。
在Android中可以通过如下几种方式来实现异步任务:
-
AsyncTask
-
Thread
-
Timer,TimerTask
-
Handler
如果是在执行异步任务后需要更新界面,优先考虑使用AsyncTask和Handler,它们提供了刷新UI的方案;
如果是定时任务可以考虑使用Handler和Timer,TimerTask;
如果是使用Thread和Timer,TimerTask,更新UI时可以通过执行当前Activity的runOnUiThread方法实现更新UI操作。
布局文件嵌套太深标示着需要更多次的布局、测量和绘制,会导致耗时更多,这个可以使用android自带的“hierarchyviewer”查看,边优化边看效果;
但有时候即使布局足够扁平,加载布局文件时还是会比较耗时,因为布局文件中的视图太多了,此时对于不需要进入界面就需要显示的视图,可以使用ViewStub来延迟加载,比如加载的进度条、特定状态下出现的倒计时和动画等