Androidでライブ壁紙を作成しようとしています。次の方法でテキストが描画され、カスタム文字列が assets ディレクトリに配置されます。
String path = "fonts/calligraffiti.ttf";
AssetManager a1 = getApplicationContext().getAssets();
Typeface typef = Typeface.createFromAsset(a1, path);
mp1.setTypeface(typef);
ここでは mp1 はペイントです。これを描画する方法は次のとおりで、これは毎秒更新されます。
c.drawText(Integer.toString(t.get(Calendar.HOUR)), wt/2-5*wt/100, ht/2+sec*60+ht/15, mp1);
数秒ごとに Logcat に次のように表示されます: フォント キャッシュから 41K をパージ [6 エントリ] など
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.
これは、カスタム フォントの使用が原因であることは間違いありません。私が使用するカスタム フォントでも同じことが起こり、カスタム フォントがなくてもすべて正常に動作します。
ライブ壁紙サービスをクラッシュさせずにカスタム フォントを引き続き使用するにはどうすればよいでしょうか?
回答ありがとうございました!