3

我正在尝试在 Android 中创建动态壁纸。它以下列方式在其上绘制了一个文本,并将自定义字符串放置在 assets 目录中:

String path = "fonts/calligraffiti.ttf";
AssetManager a1 = getApplicationContext().getAssets();
Typeface typef = Typeface.createFromAsset(a1, path);
mp1.setTypeface(typef);

mp1 在这里是一个 Paint。绘制方式如下,每秒更新一次:

c.drawText(Integer.toString(t.get(Calendar.HOUR)), wt/2-5*wt/100, ht/2+sec*60+ht/15, mp1);

每隔几秒钟,我就会在 Logcat 中看到以下内容:从字体缓存 [6 个条目] 中清除 41K,以及类似的内容然后在像这样的几次清除之后,动态壁纸服务停止并重新启动:

01-02 13:31:59.344: I/ActivityManager(1319): Process ca.jvsh.livewallpaper (pid 3444) has died.
01-02 13:31:59.375: W/WallpaperService(1319): Wallpaper service gone: ComponentInfo{ca.jvsh.livewallpaper/ca.jvsh.livewallpaper.LiveWallpaper}
01-02 13:31:59.383: I/WindowManager(1319): WIN DEATH: Window{457c0628 ca.jvsh.livewallpaper.LiveWallpaper paused=false}
01-02 13:31:59.391: W/ActivityManager(1319): Scheduling restart of crashed service ca.jvsh.livewallpaper/.LiveWallpaper in 5000ms
01-02 13:31:59.508: I/ActivityManager(1319): Low Memory: No more background processes.

这肯定是由使用自定义字体引起的。我使用的任何自定义字体都会发生同样的情况,如果没有自定义字体,一切都可以正常工作。

怎么可能仍然使用我的自定义字体而不会使动态壁纸服务崩溃?

非常感谢您的回复!

4

1 回答 1

0

我在动态壁纸应用程序上遇到了类似的问题。我想知道我是否添加了我的 opengl 纹理的问题,最后我刚刚声明,如果 Android 操作系统需要,可以随时从内存中清除应用程序,并使用 AlarmManager 添加恢复过程。

一些参考资料:

https://stackoverflow.com/a/14748123/3540391

https://stackoverflow.com/a/8321512/3540391

于 2014-06-17T08:03:55.907 回答