Android —— 项目坑总结

admin 2023年2月24日10:30:47评论29 views字数 971阅读3分14秒阅读模式

    • 需求:定时任务

  • 处理:不能在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 —— 项目坑总结

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2023年2月24日10:30:47
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Android —— 项目坑总结http://cn-sec.com/archives/1569214.html

发表评论

匿名网友 填写信息