自定义视图及其性能

线程性能

性能中很关键的一点就是多线程的使用.Android 中很多事件只能在主线程中执行,比如 输入事件,应用程序回调服务,警报等等.

这意味着这些事件会形成一个阻塞队列,这些任务会依次按顺序执行.然而UI 渲染也是在主线程中的,而他们每 16ms 就会渲染一次,来达到一个平滑的过渡,但是如果有大量的其他任务堆积在主线程中,可能会导致你错过某一个 16ms 的渲染机会,导致丢帧的情况.

为了处理这种情况,我们可以把一些耗时较长的任务转移到其他线程处理,这样主线程就能够更快的响应了.Android 中提供了一些有助于这个目的的类.

  • AsyncTask : 帮助你区分 UI 线程和非 UI 线程的工作
  • HandlerThread : 需要一个 API 回调来指定线程
  • ThreadPool : 管理大量的并行工作
  • IntentService : 适合用于后台任务

这里没有什么银弹,要注意的是,当你在一个 Activity 中声明了一个内部类(比如 AsyncTask)的时候,它会隐式的持有外部 Activity 的引用,在 Activity 销毁的时候如果线程还在运行会导致内存泄露的情况.

About Me

我的博客 leonchen1024.com

我的 GitHub https://github.com/LeonChen1024

微信公众号

wechat

You forgot to set the business and currency_code for Paypal. Please set it in _config.yml.
You forgot to set the url Patreon. Please set it in _config.yml.
Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×