每次运行都需要MobileServiceSQLiteStore.DefineTable <t>,如果是这样,为什么?</t>

时间:2014-09-15 23:47:31

标签: ios sqlite azure-mobile-services

我正在尝试使用我的移动应用程序提高后续登录(第一次登录后)的应用启动性能,并且在进行一些秒表诊断后,我可以看到定义MobileServiceSQLiteStore.DefineTable<T>的8个表平均需要2.5秒每次。

在运行iOS 7的iPhone 4上,如果不是每次都必须定义这些表,加载时间将小于一秒。我希望它们只需要在安装SQLite数据库时定义应用程序的第一次运行。我已经尝试删除后续登录中的定义并尝试获取同步表,但它失败并显示“表未定义”。

所以,这似乎是预期的行为。你能解释为什么每次都需要定义它们和/或是否有任何解决方法?考虑到我的手机现在很老了,它可以忽略不计......但如果可能的话,它仍然是我想删除的东西。

1 个答案:

答案 0 :(得分:2)

是的,每次都需要调用它,因为如果您通过无类型接口(即IMobileServiceSyncTable而不是IMobileServiceSyncTable<T>)读取数据,SDK会使用它来了解如何对数据进行反序列化。

到目前为止,没有任何工作可以避免每次都调用它。然而,我很惊讶你花了2.5秒,因为DefineTable没有做任何数据库操作。它只检查你的类型/ JObject上的成员,并维护一个内存字典供以后重用。

我建议你下载并编译SDK并调试你的方法来确定实际花费的时间。