自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(11)
  • 收藏
  • 关注

原创 Android多线程(五)线程池ThreadPoolExecutor机制浅析

ThreadPoolExecutor简介  Android开发中经常用到线程,但是频繁的创建销毁线程会影响系统性能,如果线程数到达一定数量之后大量线程之间抢占系统资源就会造成系统阻塞,为了有效避免以上情况的发生,我们需要一个多线程的管理者,于是线程池就诞生了。Android中的线程池也源于Java,线程池的最顶级的接口是Executor,真正的实现类是ThreadPoolExecutor。

2018-02-03 11:12:08 289

原创 Android多线程(四)IntentService源码原理解析

IntentService简介  在上一篇文章HandlerThread源码原理解析学习了HandlerThread的用法和原理,其实在Android的多线程实现中还有一个类将HandlerThread和Service有机地结合在一起,那就是IntentService。先来看一下Service本身存在的问题:Service和启动它的组件是在同一个线程中,在Service中处理耗时操作可能会阻塞

2018-01-27 11:16:40 252

原创 Android多线程(三)HandlerThread源码原理解析

HandlerThread实例  在上一遍中文章Android消息处理机制—Handler、Message、Looper源码原理解析中我们学习了Looper、Handler、Message之间的关系,在子线程中创建Handler的过程稍显复杂,有没有一种更简单的办法呢,答案是肯定的,其实Android已经为我们封装了一个Handler、Looper的结合体——HandlerThread,我们来

2018-01-20 11:21:06 311

原创 Android多线程(二)消息处理机制---Handler、Message、Looper源码原理解析

在Android中UI操作不是线程安全的,只有UI线程才能修改UI,所以我们经常开启子线程去处理一些耗时的操作,然后通过Handler发送消息,在UI线程中接送消息并处理UI组件,一个典型的Handler写法如下:private Handler handler = new Handler(){@Overridepublic void handleMessage(Message msg)

2018-01-12 20:24:29 282

原创 Android多线程(一)AsyncTask源码原理解析

最近在review去年处理过的bug,发现一个关于AsyncTask的问题,反正最近也在review代码,那就好好学习一下Android开发中经常用到的线程相关知识吧。前面说的问题是这样的,相册在读取连拍照片时,会有一段时间的黑屏,但是照片的数量并不多,只有20张,使用Asynctask加载的话应该可以秒开才对,看了一下代码:private AsyncTask mInitBurstData

2018-01-05 20:02:11 263

原创 为什么需要一个无参构造函数的Fragment

之前在用Android Lint时发现里面的有选项“Fragment not instantiatable”Every fragment must have an empty constructor, so it can be instantiated when restoring its activity’s state. It is strongly recommended that subcl

2018-01-02 15:59:27 3678 3

原创 Android性能优化实战(三)----避免内存泄露

Android性能优化中一个非常重要的点就是内存泄露,内存泄露一般情况下并不会影响程序的正常运行,但是它会导致程序的内存占用率过高,随之而至的很可能就是内存溢出。通过这篇博客记录一下项目中避免内存泄露的一些方法。Android常见的内存泄露场景单例造成的内存泄漏  单例的特点是其生命周期和Application一样长,如果使用不当,很容易引起内存泄露,比如下面这个例子:private static

2017-12-21 20:05:30 225

原创 Android性能优化实战(二)----界面布局优化

App界面布局是用户能体验到应用性能好坏最直接的方式,如果布局写得不好,App就容易卡顿,严重影响用户体验。通过这篇博客,来学习总结一下常用的View布局优化方法。优化布局层次结构我们知道,Android View的绘制分为三个过程:measure、layout和draw,首先绘制的父类布局ViewGroup,绘制完父类布局后再对ViewGroup里面的子View绘制,如果你的app布局层次复杂,就

2017-12-16 12:35:16 538

原创 Android性能优化实战(一)----App启动时间优化

测试小妹反馈说,我们的相册Gallery和友商的相比,启动时间慢了不少,相册是消费者使用最多的App之一,重要性不言而喻,因此boss要求我们对相册的启动时间做一个优化,既然提到了优化,就不能光做启动时间的优化了,连根带土把布局优化,内存优化等一起做了。我就用几篇文章把之前对相册优化过程记录一下。App启动方式Android App的启动方式一般来说分为两种:冷启动和热启动。 1、冷启动:当应用程

2017-12-09 10:13:38 904

原创 LruCache、DiskLruCache实现自定义SharedPreferences

最新的Android O平台上多了一个RetailModeSeivice,

2017-12-02 10:00:30 505

原创 Android非UI线程中更新UI界面

“好记性不如烂笔头”,明明刚用完不久的知识很容易又忘记了,感觉自己有必要通过博客把工作一年以来遇到的典型问题记录,就从Android工作线程更新UI界面引起的crash说起吧。项目中的Gallery在显示照片详细信息中使用了Google Map来标记照片的拍摄地点,测试工程师反馈了一个严重的bug,点击照片中的详细信息查看地图上照片拍摄地点,如果旋转屏幕,Gallery有时会崩溃。查找了一下cr

2017-11-27 20:12:32 1444

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除