-
-
需求:定时任务
-
处理:不能在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
-
-
需求:文件传输
-
问题:新文件发过来后在系统媒体库中找不到新文件记录,必须得重启才能更新
-
解决:自己手动把新文件信息插入媒体库
作者:FeelsChaotic
链接:https://www.jianshu.com/p/1dda7576f0cd
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
原文始发于微信公众号(汇编语言):Android —— 项目坑总结
- 左青龙
- 微信扫一扫
-
- 右白虎
- 微信扫一扫
-
评论