@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);paint = new Paint(Paint.LINEAR_TEXT_FLAG);}

在自定义View中的onDraw中如果有new的对象,将会报出警告,警告如下:

Avoid object allocations during draw/layout operations (preallocate and reuse instead)Issue: Looks for memory allocations within drawing code
Id: DrawAllocationYou should avoid allocating objects during a drawing or layout operation. These are called frequently, so a smooth UI can be interrupted by garbage collection pauses caused by the object allocations.The way this is generally handled is to allocate the needed objects up front and to reuse them for each drawing operation.
Some methods allocate memory on your behalf (such as Bitmap.create), and these should be handled in the same way.

翻译大意就是必要在draw/layout(onDraw()反复运行)这种频繁操作中分配对象,会导致大量new新的对象,频繁垃圾回收。
解决方法,将new对象放在构造函数中,在onDraw中进行复用:

class YourClass extends View
{//Paint paint = new Paint();也可以Paint paint;public YourClass(Context context) {this(context, null);init();}public YourClass(Context context, AttributeSet attrs) {this(context, attrs, 0);init();}public YourClass(Context context, AttributeSet attrs, int defStyleAttr) {super(context, attrs, defStyleAttr);init();}private void init(){paint = new Paint(Paint.LINEAR_TEXT_FLAG);}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);paint.setColor(Color.WHITE);

stackoverflow

Avoid object allocations during draw/layout operations相关推荐

  1. android 常用命令随手记

    检测工具 lint (a static code analysis tool) : http://developer.android.com/tools/help/lint.html A.检测无用的资 ...

  2. Android基础操作-----SuppressLint和SuppressWarnings

    一.SuppressLint 1)SuppressLint Lint是一个静态检查器,它围绕Android项目的正确性.安全性.性能.可用性以及可访问性进行分析. 它检查的对象包括XML资源.位图.P ...

  3. 自定义控件 1 (入门)

    怕作者删除,粗粗保存一下,这文章没图,就看原文 --------------------------------------- 尊重原创转载请注明:From AigeStudio(http://blo ...

  4. 万字长文!View的进阶,自定义一款自带动画的雷达图

    点击上方 "程序员小乐"关注, 星标或置顶一起成长 关注订阅号「程序员小乐」,收看更多精彩内容 每日英文 You can't change the past, but you ca ...

  5. View的进阶,自定义一款自带动画的雷达图

    /   今日科技快讯   / 近日工信部发放四张5G商用牌照,中国联通.中国移动.中国电信和中国广播电视网络有限公司各得到一张牌照.中国的5G商用元年正式开启.5G牌照的发放,将推升产业链的成熟.加快 ...

  6. 【自定义View】洋葱数学同款雷达图深入解析-RadarView

    开箱即用的源码地址 洋葱数学同款雷达图-RadarView 支持XML自定义属性: rv_webRadius:雷达网的半径(该属性决定了View的宽高) rv_webMaxProgress:各属性表示 ...

  7. 安卓下实现排序算法动画

    前言 最近在学习基础的排序算法,发现仅凭算法的定义公式,即使结合代码在IDE下debug查看数组变化,也依然不是很好的理解,于是就在网上搜索排序算法动画,果然已经有人实现了排序演示,有java实现的, ...

  8. JVM - 剖析Java对象头Object Header之指针压缩

    文章目录 Pre 指针压缩 论证压缩效果 UseCompressedOops & UseCompressedClassPointers [指针压缩]开启 VS 关闭 指针压缩的目的 为什么堆内 ...

  9. JVM - 剖析Java对象头Object Header之对象大小

    文章目录 Pre 总览 对象头剖析 查看对象内存的占用情况 对象头C++源码 注释 Pre JVM - 写了这么多年代码,你知不道new对象背后的逻辑? 中大体介绍了Java中 new 对象背后的主要 ...

最新文章

  1. java activiti5_工作流Activiti5.13学习笔记(一)
  2. Zabbix监控zookeeper
  3. arm下的linux可以运行qt吗,Ubuntu平台Arm下QT环境搭建
  4. 易语言 设置屏幕刷新率 源码_一块好的手机屏幕应具备什么条件?现在了解还不晚...
  5. 中原银行签约神策数据 数据驱动构建智能服务体系
  6. C/C++串口通信原理及读写与操作
  7. java list 合并去重复_java 实现多个list 合并成一个去掉重复的案例
  8. 斗鱼Q3财报:移动端季度平均MAU再创新高至6190万,付费用户720万
  9. SolrClient或SolrTemplate写入时连接solr服务器超时问题的一种解决方案
  10. 用这4种策略提高你的Facebook广告浏览量
  11. 天燃气与电热水器哪个用着成本低?
  12. ubuntu系统的python3.6升级到python3.7
  13. Deep Learning-Deep feedforward network
  14. Python科学计算函数库介绍
  15. webstorm破解版
  16. 一些有用软件收藏(更新中)
  17. iOS-AppStore上线被拒的各种理由...
  18. Ubuntu 18.04 中Chrome浏览器安装与使用
  19. Redhat8.0 安装web consol、可视化管理工具
  20. 【NLP】讯飞英文学术论文分类挑战赛Top10开源多方案--1 赛后总结与分析

热门文章

  1. Python 增强视频画质,就这么做!
  2. 山东电销机器人_青岛语音电销机器人 欢迎来电「山东启云创客网络科技供应」...
  3. 《30岁之前的每一天》阅读笔记(一)
  4. 匡威react是什么意思_react+zoom的神仙配置?这双如此牛掰的匡威似乎不如李宁?...
  5. 两次考研失利!但这一次「我没输」
  6. 「跳一跳」两年后,广告“杀死”游戏小程序?
  7. 格力美的,谁代表中国制造的未来
  8. 杂事记诗-- 读网文《穷鬼的上下两千年》有感
  9. Windows IDEA 字体美化
  10. 书单|如何成为一个真正的写作高手?