使用自定义字体动画TextView会导致字体缓存繁重

God*_*hen 5 android

我有一个TextView我注册以下动画:

mScaleAnimation = new ScaleAnimation(1f, 1.2f, 1f, 1.2f,
            mReferenceTextView.getWidth() / 2, mReferenceTextView
                    .getHeight() / 2);
    mScaleAnimation.setRepeatCount(Animation.INFINITE);
    mScaleAnimation.setRepeatMode(Animation.REVERSE);
    mScaleAnimation.setDuration(500);
Run Code Online (Sandbox Code Playgroud)

它工作正常,看起来很酷:)

我唯一担心的是:当我看到logcat时,它完全无法使用,因为只要动画正在运行,我会不断地每秒多次获取这些日志:(

06-20 17:50:05.555: DEBUG/skia(14179): purging 213K from font cache [7 entries]
06-20 17:50:05.750: DEBUG/skia(14179): purging 196K from font cache [7 entries]
06-20 17:50:05.870: DEBUG/skia(14179): purging 202K from font cache [8 entries]
06-20 17:50:05.995: DEBUG/skia(14179): purging 190K from font cache [8 entries]
Run Code Online (Sandbox Code Playgroud)

TextView使用自定义字体/字体(在OTF格式).

是什么原因导致字体缓存的繁重工作?

Fra*_*aro 1

我相信你的缓存正在被杀死,因为你正在生成大量的 TypeFace 对象。我猜这是 ICS 之前的版本?有一个错误会保留 TypeFaces 并且无法正确释放它。因此,当您制作动画时,它会不断为每个位置创建新对象,并且它们会泄漏并且永远不会被清理。

我发现有人建议用 HashMap 创建 TypeFace 缓存。您可以查看这篇文章以了解更多详细信息。自定义字体和 XML 布局 (Android)