首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

我的AnimationDrawable对象的run方法减慢了我的应用程序,有什么解决方案吗?

AnimationDrawable是Android中用于实现帧动画的类。当调用AnimationDrawable的run方法时,它会按照预设的帧间隔时间逐帧播放动画。如果run方法的执行导致应用程序变慢,可能是由于以下原因:

  1. 帧间隔时间过短:如果帧间隔时间设置得太小,会导致动画播放过快,从而占用大量的CPU资源。可以尝试增加帧间隔时间,减少动画的播放速度。
  2. 图片资源过大:如果动画中使用的图片资源过大,会导致内存占用增加,从而影响应用程序的性能。可以尝试使用较小尺寸的图片资源,或者对图片进行压缩处理,以减少内存占用。
  3. 动画帧数过多:如果动画中包含大量的帧数,会导致动画播放时的计算量增加,从而影响应用程序的性能。可以尝试减少动画的帧数,或者使用其他动画实现方式,如属性动画。
  4. 其他耗时操作:如果在动画播放过程中执行了其他耗时操作,如网络请求、数据库读写等,也会导致应用程序变慢。可以尝试将这些操作放在子线程中执行,以避免阻塞主线程。

综上所述,解决AnimationDrawable导致应用程序变慢的方案包括:调整帧间隔时间、优化图片资源、减少动画帧数、避免耗时操作等。根据具体情况选择合适的方案进行优化。

腾讯云相关产品和产品介绍链接地址:

  • 腾讯云移动应用分析(MTA):https://cloud.tencent.com/product/mta
  • 腾讯云移动推送(TPNS):https://cloud.tencent.com/product/tpns
  • 腾讯云移动直播(MLVB):https://cloud.tencent.com/product/mlvb
  • 腾讯云移动短信(SMS):https://cloud.tencent.com/product/sms
  • 腾讯云移动应用安全(MSA):https://cloud.tencent.com/product/msa
  • 腾讯云移动游戏加速(GME):https://cloud.tencent.com/product/gme
  • 腾讯云移动智能(MIA):https://cloud.tencent.com/product/mia
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

学Java什么方法?刻苦学技术让最终成为自信码农

在大学专业课阶段,我们除了学C语言之外,还接触到了Java语言。其实,作为计算机专业学生来讲,多学会几门语言还是好处。因为这样就有机多接触更多项目,有利于自己开拓一下眼界。...考虑到毕业之后就业,还是选择主攻一下Java语言,希望能够在毕业后成为一名Java程序员。学Java什么方法?这个问题也一直在探索。...在这里做项目用到Tomcat和Linux系统,还有用SSM框架搭建一套管理信息系统。通过做不同项目让体验到了比较完备技术工作。...在这里学习5个月左右时间里,不仅让自己能力了跨越发展,还让自己在这里结识了几十个和我一样拥有梦想的人,他们学习热情,学习朝气,是他们让克服了很多惰性,每天坚持学习。...还有就业部老师不厌其烦给我们看简历、做面试指导才能让我们在面试中游刃有余。 学Java什么方法?一路走来,让感触最深还是刻苦学习过程。

75060
  • 2014-10-31Android学习------序列帧动画,开始,结束监听解决--------GIF动画实现

    我们只看类概述: 该对象是用来创建序列帧动画(一帧接一帧动画),这些系列帧动画是通过一系列可以绘制对象来定义, 而这些可以绘制对象能够被作为一个View对象背景。...创建系列帧动画最简单方法就是在XML文件中去定义动画,把它们放在文件夹下,res/drawable/folder(folder是可以自己定义,也可以不要这个文件),把他们设置为一个视图对象背景。...然后,调用函数run()去启动动画 一个AnimationDrawable(可绘制动画) 是在XML中定义,它通常是这样定义(由下面的这些组成):在xml文件中 根节点是来定义

    1.4K30

    Android 逐帧动画( Drawable 动画),这一篇就够了

    ---- 实现方法 这里给大家介绍两种实现方法 在活动代码中添加实现 先生成 animation-list 资源文件,再在活动中引用。...注意:这里个 OneShot() 方法,该方法用于设置是否需要循环播放,true为仅播放一次,false 为连续循环播放。....start(); ----  引用资源文件方法 方法一个很严重缺陷,就是每次要给控件添加这个动画时,都需要重新一步步添加,但是有的时候,一套动画,我们可能需要在很多地方反复使用到。...在活动代码中,像添加图片资源一样,为控件添加它 通过 getDrawable 方法,重空间中获得它并添加给 AnimationDrawable 对象 调用 start 方法开启动画 建立资源文件如下...; ---- 注意事项 在使用帧动画时,这里几个要点需要大家记住: 其一、在范例代码中,大家可以看到,是直接在 imageView 对象执行过 findViewById 后就添加了,但是这样会导致一个严重问题

    3.2K20

    Java学习笔记(4)——并发基础

    这当然是一种解决方案,但是想象一下,如果一个应用程序需要执行任务非常多,例如LOL游戏吧,光是需要播放音乐就有非常多,人物本身语音,技能音效,游戏背景音乐,塔攻击声音等等等,还不用说游戏本身...——调用对象finalize方法线程 [4] Signal Dispatcher——分发处理发送给JVM信号线程 多线程优势: 尽管面临很多挑战,多线程一些优点使得它一直被使用。...多线程一定快? 以下是测试结果,可以看出,当不超过1百万时候,并行是明显比串行要慢,为什么并发执行速度会比串行慢呢?这是因为线程创建和上下文切换开销。 ?...两种方式区别 对于这两种方式哪种好并没有一个确定答案,它们都能满足要求。就个人意见,更倾向于实现Runnable接口这种方法。...(MyRunnable()); 2| newThread.run(); //should be start(); 起初你并不会感觉到什么不妥,因为run()方法的确如你所愿被调用了。

    83330

    AnimationDrawable 实现正在加载旋转动画

    ,首先我们需要去了解他原理,这里面使用是:AnimationDrawable  原理: Drawable animation可以加载Drawable资源实现帧动画。...AnimationDrawable是实现Drawable animations基本类。 推荐用XML文件方法实现Drawable动画,不推荐在代码中实现。...,界面上显示是正在加载动画 其他知识: 注意: 一旦给指定View设置Drawable Animation之后,其BackGround就变成AnimationDrawable对象, 代码如下...因为AnimationDrawable并未完全关联到Window, 在onCreate()方法中,View并未完成显示(同理,在此方法中测量某个View宽高,常得到0值。...也同理SurfaceHolder要增加Callback方法)。 在此如果想最快启动动画,使用监听方法onWindowFoucsChanged().

    2.1K80

    android-drawable子类介绍

    ,当通知栏被拉下来或者一个对话框弹出时候应用程序就不在前台了 注意:如果有多个item,那么程序将自动从上到下进行匹配,最先匹配将得到应用。...如果你想自己动态绘制二位图形,那么我们就可以使用ShapeDrawable资源对象,用ShapeDrawable,我们可以绘制我们所能想象形状。。...一个ShapeDrawable 需要一个Shape对象来管理呈现资源到UI Screen,如果没有Shape设置,那么会默认使用RectShape对象。...frameAnimation.start(); 注意:AnimationDrawable. start()方法不能够在ActivityonCreate()方法中调用,因为AnimationDrawable...还未完全附加(attached)到Window,如果你不需要交互而立即播放动画,那么可以在onWindowFocusChanged() 方法中,这个方法会在你Activity Windows获取焦点是触发

    45310

    Java并发基础,不怕你看不懂!

    这当然是一种解决方案,但是想象一下,如果一个应用程序需要执行任务非常多,例如 LOL 游戏吧,光是需要播放音乐就有非常多,人物本身语音,技能音效,游戏背景音乐,塔攻击声音等等等,还不用说游戏本身...常见错误:调用 run() 方法而非 start() 方法 创建并运行一个线程所犯常见错误是调用线程 run() 方法而非 start() 方法,如下所示: 1| Thread newThread...= new Thread(MyRunnable()); 2| newThread.run(); //should be start(); 起初你并不会感觉到什么不妥,因为 run() 方法的确如你所愿被调用了...想要让创建新线程执行 run() 方法,必须调用新线程 start() 方法。 三、线程安全问题 ---- 吃苹果游戏不安全问题 我们来考虑一下上面吃苹果例子,会有什么问题?...它特性是允许复制、拒绝写入。最典型只读对象 String、Integer 等。

    50030

    一道超简单Leetcode242:异位词,耗时1小时,能学到什么

    还是自己抽时间看,然后把比较枯燥知识点想办法转化成比较有意思知识,这样小码匠更容易接受。 回到正题,今天小码匠刚到家。 开始安排功课 老码农:今天作业多? 小码匠:一点,20分钟能完成。...双之后,的确爽了不少,可以更多时间一起学编程,和小孩沟通。 小码匠:休息10分钟,吃个苹果就过来哈。 老码农:嗯,去吧。...你有没有考虑过其他解决方案啊。 第一次提交 小码匠:是没想到特别好方式,反正就是先排序,然后比较值是不是一样。 小码匠:咱们先提交呗。 老码农:真的现在就提交? 小码匠:那当然。...小码匠:嗯,好 方法一:跟我是一样,只是他是用Java实现方法二:哈希表,看看代码。 看了一分钟,小码匠大呼一声,明白了。...老码农:应该还有更好解决方案,真相是需要你不断追寻才能一步一步逼进。 小码匠:可我真的想不出来更好解决方案了。 老码农:记得有个库也是统计次数想想啊。

    24120

    高并发编程学习(1)——并发基础

    这当然是一种解决方案,但是想象一下,如果一个应用程序需要执行任务非常多,例如 LOL 游戏吧,光是需要播放音乐就有非常多,人物本身语音,技能音效,游戏背景音乐,塔攻击声音等等等,还不用说游戏本身...在这里,三个同学完成抢苹果例子,使用实现方式才是更合理方式。 对于这两种方式哪种好并没有一个确定答案,它们都能满足要求。就个人意见,更倾向于实现 Runnable 接口这种方法。...常见错误:调用 run() 方法而非 start() 方法 创建并运行一个线程所犯常见错误是调用线程 run() 方法而非 start() 方法,如下所示: 1| Thread newThread...= new Thread(MyRunnable()); 2| newThread.run(); //should be start(); 起初你并不会感觉到什么不妥,因为 run() 方法的确如你所愿被调用了...想要让创建新线程执行 run() 方法,必须调用新线程 start() 方法。 三、线程安全问题 吃苹果游戏不安全问题 我们来考虑一下上面吃苹果例子,会有什么问题?

    36520

    高并发编程学习(1)——并发基础

    这当然是一种解决方案,但是想象一下,如果一个应用程序需要执行任务非常多,例如 LOL 游戏吧,光是需要播放音乐就有非常多,人物本身语音,技能音效,游戏背景音乐,塔攻击声音等等等,还不用说游戏本身...在这里,三个同学完成抢苹果例子,使用实现方式才是更合理方式。 对于这两种方式哪种好并没有一个确定答案,它们都能满足要求。就个人意见,更倾向于实现 Runnable 接口这种方法。...常见错误:调用 run() 方法而非 start() 方法 创建并运行一个线程所犯常见错误是调用线程 run() 方法而非 start() 方法,如下所示: 1| Thread newThread...= new Thread(MyRunnable()); 2| newThread.run(); //should be start(); 起初你并不会感觉到什么不妥,因为 run() 方法的确如你所愿被调用了...想要让创建新线程执行 run() 方法,必须调用新线程 start() 方法。 三、线程安全问题 ---- 吃苹果游戏不安全问题 我们来考虑一下上面吃苹果例子,会有什么问题?

    52190

    韦东山freeRTOS系列教程之【第四章】同步互斥与通信

    4.1 同步与互斥概念 一句话理解同步与互斥:等你用完厕所,再用厕所。 什么叫同步?就是:哎哎哎,正在用厕所,你等会。 什么叫互斥?就是:哎哎哎,正在用厕所,你不能进来。...同步与互斥经常放在一起讲,是因为它们之关系很大,“互斥”操作可以使用“同步”来实现。“等”你用完厕所,再用厕所。这不就是用“同步”来实现“互斥”? 再举一个例子。...4.2 同步与互斥并不简单 4.3 各类方法对比 能实现同步、互斥内核方法:任务通知(task notification)、队列(queue)、事件组(event group)、信号量(semaphoe...这些内核对象五花八门,记不住怎么办?也记不住,通过对比方法来区分它们。 能否传信息?只能传递状态? 为众生?只为你? 生产,你们消费?...信号量: 核心是"计数值" 任务、ISR释放信号量时让计数值加1 任务、ISR获得信号量时,让计数值1 任务通知: 核心是任务TCB里数值 会被覆盖 发通知给谁?

    74140

    Android动画基础 | 概述、逐帧动画、视图动画

    , 逐张地呈现一系列事先加载好图片而产生动画效果; 定义逐帧动画方法: 使用AnimationDrawable对象定义逐帧动画; 它是一个Drawable容器(DrawableContainer...), 可以理解为,它事先加载好了一系列图片; 和普通Drawable一样,它可以被设为视图对象背景; 最简单定义逐帧动画方法, 在drawable文件夹下新建一个xml文件; 在xml...View控件; 通过(AnimationDrawable)view.getBackground();获得view背景Drawable对象并向下转型为AnimationDrawable对象, 然后赋给一个...), 把第一句中加载转换得到Animation对象设置进来; 至此,便实现AlphaAnimation; ---- 以上,是通过xml方法定义动画,事实上我们还有一种简洁定义动画方法:...我们进入Animation类源码,可以看到这么一个方法——applyTransformation(),其实这个方法就跟我们方才说 “每个视图对象都通过一个转换矩阵映射到手机屏幕上” 中 转换矩阵

    4K21

    Android:帧动画和补间动画看这篇就足够了!

    关于动画相关博文说实话很多,但是为什么要写这篇文章呢?因为发现很多博客都上来就“翻译”了一通 API ,这对很多没有建立起 Android 动画体系概念新人来说,非常不友好。...以前魅族手机 /system/media 文件夹下,找到了一系列以上这种图片,组合到一起就是开机动画了。...你可能还对上面所说第二种使用场景表示怀疑,前几天看到一个应用一个非常酷炫效果,3D特效旋转画面,请脑补一下数码宝贝进化样子,刚开始还纳闷,这个用代码怎么实现啊,想了下想通了,这个用帧动画其实最好实现了...对象AnimationDrawable animationDrawable = (AnimationDrawable) ivFrame.getBackground();...同样,补间动画实现依然可以两种方式,xml 定义或者是纯代码方式,这里依然是建议使用 xml 方式。

    2K30

    Android动画效果-更新中

    AnimationSet类中很多方法都与Animation类一致,该类中最常用方法便是addAnimation方法,该方法用于为动画集合对象添加动画对象。...帧动画方式类似于放电影原理,是通过顺序播放多张图片来实现动画效果,图片之间一定动作连贯性,这样人眼看来就像对象真正在运动一样。...最好是在onWindowFocusChanged这个方法中启动动画。因为在onCreate中启动动画, AnimationDrawable可能还没有完全attach 到Window上 ?...---- 小结 动画技术能够给应用程序带来丰富特效,增强用户体验。...* 因此,将用一个包装类来包装原始view对象,对其提供setWidth()和getWidth()方法 */ private static class ViewWrapper {

    3.7K20

    Android动画绘制原理(源码解析)

    前言 Android 平台提供了三类动画,一类是 Tween 动画-Animation,即通过对场景里对象不断做图像变换 ( 平移、缩放、旋转 ) 产生动画效果;第二类是 Frame 动画,即顺序播放事先做好图像...如果有人对ViewGroup内部View使用过View动画还知道layout-animation。 大家对这三种动画基本都能熟练使用,那么…...?...想知道动画与界面渲染与屏幕刷新有着什么关系? 想知道属性动画为什么会发生内存泄露么?...因为本文章中会有一些屏幕刷新、Vsync信号相关知识点,读过 Android16ms和垂直同步以及三重缓存 和Android系统编舞者Choreographer 这两篇文章同学会可能会更容易了解本文章...、延迟动画中是否和当前动画相同动画 //若有就把相同动画取消掉 // See if any of the current active/pending animators

    3.4K30

    【创作赢红包】喂,鬼仔,你还在瞒着偷偷使用强制相等

    我们都知道JavaScript== (强制相等)和===(严格相等)运算符进行比较。但你可能不知道它们两个究竟有什么不同,并且更重要是,在 js 引擎中使用它们时候发生了什么?...== null && typeof value == "object"; } 这是不是太复杂了,甚至不确定这是正确! 也许你知道更简单算法。...但有趣是,你会发现在上面的算法中,如果其中一个操作数是对象,VM 将调用. valueof()来允许对象将自身强制转换为基本类型。 强制转换成本 上面的实现很复杂。...对于字符串,== 比 === 性能下降了 50%,看起来挺糟是吧。 字符串在VM中是特殊,但一旦我们涉及到对象,我们就慢了 4 倍。看看 mix 这栏,现在速度减慢了 4 倍! 但还有更糟。...其他使用 == 理由 现在,=== 非常快! 因此,即使是使用 === 15倍减速,在大多数应用程序中也不会有太大区别。尽管如此,还是很难想出为什么要使用 == 而不是 === 任何理由。

    5800
    领券