由于某些原因(主要是 apk 大小较大,即使有 ABI 分割)我需要完全删除 Realm 并使用 Sqlite 而不会丢失数据。
我找不到办法。看来应用程序必须继续使用 Realm,否则用户将完全丢失数据。
任何想法将不胜感激
我认为我不完全理解你的问题是什么。如果您询问是否有一个工具可以为您自动执行数据迁移,那么没有,没有这样的工具。
否则它就相当简单了:
Handle onCreate
, onDowngrade
and onUpgrade
实施方法SQLiteOpenHelper
class.
In your onCreate
方法,创建表后,立即从中获取所有数据Realm并插入到 SQLite 表中。
像这样的东西:
Realm realm = Realm.getDefaultInstance();
RealmResults<MyClass> all = realm.where(MyClass.class)
.findAll();
for (MyClass instance : all) {
doInsert(instance);
}
我实际上建议你调查一下如何减小 APK 大小 https://news.realm.io/news/reducing-apk-size-native-libraries/使用 Realm 时,但这取决于你
EDIT 1您必须确保首先迁移数据,然后删除领域文件。虽然让你的 APK 变大的并不是数据文件,而是 Realm 附带的实际库。因此,不幸的是,为此您必须采取两个步骤:首先发布将数据迁移到 SQLite 的更新,经过一段合理的时间(例如一周)后,您可以发布将 Realm 库完全删除的更新。希望这是有道理的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)