2014-11-17 62 views
0

我正在使用n离线应用程序,它使用localstorage作为脱机数据存储。Ionic应用程序崩溃问题

这个应用程序中有大约30个模板。也可以添加任意数量的用户。本地存储主要用于存储3件东西。首先是关于用户和上次登录用户的主要信息。第二次最新的用户通知显示在应用程序启动。然后用户可以从服务器刷新它们。还有用户的聊天。

我的问题是,最近有iOS和iPad上的iOS 8的内存崩溃问题。在追踪问题原因的过程中,我禁用了本地存储,然后内存警告没有出现。所以我假设本地存储可能是问题的原因。另外我认为本地存储的大小不是问题。我用这个代码 unescape(encodeURIComponent(JSON.stringify(localStorage)))。length);找到本地存储的大小。它永远不会超过2.5MB。主要的问题可能是对本地存储数据的过度操纵。

我的查询是应该使用SQL Lite来达到这个目的。如果是,与Cordova应用程序一起使用的最佳实践是什么。 SQL lite的使用会导致更多的计算开销?

P.S.我也考虑过使用JavaScript包装进行localstorage管理(localstorageDB),但我认为它们在内部也是以同样的方式提供抽象。此外,我们在android上有相同的应用程序,但没有在android上的内存问题。

请提供您的建议。

回答

1

你可能想看看两件事情:

ngStorage - https://github.com/gsklee/ngStorage

的SQLite - http://ngcordova.com/docs/#SQLite

这是奇怪的,你是有问题的,但话又说回来,你可以做一些疯狂的操作,比你想象的要多。

这里是我曾在离子框架上的SQLite写的教程:

https://www.thepolyglotdeveloper.com/2014/11/use-sqlite-instead-local-storage-ionic-framework/

希望这些解决方案之一纠正你的问题。

Regards,

+0

谢谢....我想我宁愿使用SQLite。但对此有一个疑问。如果我只是用SQL数据库替换本地存储并继续我使用localstorage的方式(只更新当前使用本地存储的持久性服务),这可能会增加计算开销。对于例如有一个显示用户活动的视图,并且每次加载时都会从本地存储获取数据。如果我使用数据库,那么这个获取将变成数据库调用。你能建议最佳实践方案吗? – saurabhgupta05085

+0

您是否能够告诉我预计在打开应用程序的前两分钟内发生了多少次保存/读取请求?我真的不明白为什么你会得到内存错误,除非你的代码是行为不端。 –