我正在尝试使用我的移动应用程序提高后续登录(第一次登录后)的应用启动性能,并且在进行一些秒表诊断后,我可以看到定义MobileServiceSQLiteStore.DefineTable<T>
的8个表平均需要2.5秒每次。
在运行iOS 7的iPhone 4上,如果不是每次都必须定义这些表,加载时间将小于一秒。我希望它们只需要在安装SQLite数据库时定义应用程序的第一次运行。我已经尝试删除后续登录中的定义并尝试获取同步表,但它失败并显示“表未定义”。
所以,这似乎是预期的行为。你能解释为什么每次都需要定义它们和/或是否有任何解决方法?考虑到我的手机现在很老了,它可以忽略不计......但如果可能的话,它仍然是我想删除的东西。
答案 0 :(得分:2)
是的,每次都需要调用它,因为如果您通过无类型接口(即IMobileServiceSyncTable
而不是IMobileServiceSyncTable<T>
)读取数据,SDK会使用它来了解如何对数据进行反序列化。
到目前为止,没有任何工作可以避免每次都调用它。然而,我很惊讶你花了2.5秒,因为DefineTable没有做任何数据库操作。它只检查你的类型/ JObject上的成员,并维护一个内存字典供以后重用。
我建议你下载并编译SDK并调试你的方法来确定实际花费的时间。