- 需求:定时任务
 - 处理:不能在service中循环调用 AsyncTask执行长时间任务,会造成堵塞。要改用Thread或CachedThreadPool线程池。
 - 原因:
在官方文档中指出,AsyncTasks should ideally be used for short operations, 就是说AsyncTask执行的任务应该是一些短时间内可以完成的任务, 因为在Android3.0之后, 默认情况下, 同一时间只能有一个AsyncTask在运行, 也就是说所有的task都是串行运行的。所以如果某个task执行时间很长, 会导致后面的task长时间等待, 当然也可以通过调executeOnExecutor(AsyncTask.THREAD_POOL_EXECUTOR), 可以同时运行5个Task。
如果最大同时运行5个Task不能满足要求,就要自己使用线程池了。 
- 需求:加载大图防止内存溢出问题
 - 问题:decodeStream解析图片一直为null
 - 原因:Android 的一个bug,input 流不能用两次 可以把流转换成数组,然后再用该方法
 
- 需求:科大讯飞语音转文字
 - 问题:
1.组件加载失败
解决:so包缺失
2.用户校验失败
解决:libmsc.so一定要用自己id下载的SDK,因为SDK和appid是绑定的,拷贝旧项目的so是不行的! 
- 问题:
mImageView.getDrawingCache()取值为空 - 解决:
setImageBitmap()/setImageDrawable设置图片的方式才可以取到缓存setImageResource方法设置图片则缓存取值为null。
官方建议用setImageDrawable代替setImageBitmap,这样可以减少new的对象。实际上setImageBitmap方法就是把Bitmap对象封装成Drawable对象,然后调用setImageDrawable 
- 问题:
 - 需求:文件传输
 - 问题:新文件发过来后在系统媒体库中找不到新文件记录,必须得重启才能更新
 - 解决:自己手动把新文件信息插入媒体库