android 在文件室数据库中存储TypeFace对象列表

2guxujil  于 2023-03-27  发布在  Android
关注(0)|答案(1)|浏览(122)

我正在实现一个应用程序,它请求所有GoogleFonts(API:https://www.googleapis.com/webfonts/v1/webfonts?key=)。
因此,我使用FontsContractCompat.FontRequestCallback来检索TypeFace类型的对象。每个检索到的字体都被添加到List<TypeFace>中。
现在我想把这个列表存储到一个房间数据库中。我想把TypeFace-Object序列化成一个字符串,然后把它存储在数据库中就足够了。
问题是,当我加载序列化的字符串并尝试将i反序列化回TypeFace-object时,应用程序崩溃。

Typeface typeface = new Gson().fromJson(item.getTypefaceString(), Typeface.class);
mTextName.setTypeface(typeface); // <-- Here it crashes

是否有任何解决方案来存储TypeFace对象在房间数据库?
提前感谢!

34gzjxbg

34gzjxbg1#

logcat中的错误是:

9057-9057  libc                    cprojects.fontviewer                 A  Fatal signal 11 (SIGSEGV), code 1, fault addr 0x71c45398a0 in tid 9057 (ects.fontviewer)
 9083-9083  DEBUG                   pid-9083                             A  pid: 9057, tid: 9057, name: ects.fontviewer  >>> cprojects.fontviewer <<<

一个序列化的TypeFace-object看起来像这样:

{"isLikeDefault":false,"mStyle":0,"native_instance":488625117344}

我认为,TypeFace对象不能被序列化,然后再反序列化回来。
我需要找到一种方法来持久化我的应用程序中的TypeFaces列表。否则,每次打开应用程序时,所有字体都将从Google的字体API请求。大约有1500种字体,因此此过程需要时间。

相关问题