Lea*_*yes 10 javascript iphone html5 android web-applications
我创建了一个可以保存到iPhone上"主屏幕"的webapp.该应用程序使用画布,并与改变状态相当互动.
每当应用程序最小化并重新打开时,它将重置为初始状态.关闭应用程序并重新加载时会发生相同的(如预期的那样).
如何在仅最小化应用程序时阻止重新加载应用程序?
保存状态数据的最佳方法是什么,以便在关闭并重新打开应用程序时,它会无缝地继续?
我需要使用哪些事件来确保状态数据不会丢失?
如果可能的话,跨平台解决方案将是首选的iPhone + Android ...
TL; DR您需要将应用程序设计为使用本地存储或cookie或其他可以保留状态的机制.它需要查看本地存储并在每次启动时重建它的界面.使用本地存储或webdb(折旧但受支持),您需要保存每个状态更改,并确保在页面加载到浏览器时重新加载它们.
最小化?在后台运行?
无论主屏幕上的状态如何,您的webapp只是加载到浏览器中的另一个页面.由于a)设备上缺少内存和b)多任务处理如何工作,操作系统可以要求应用程序释放内存,甚至可以随时终止自身.
这就是为什么当你构建一个iOS应用程序时,你有:
- (void)applicationWillTerminate:(UIApplication *)application
作为开发人员,此方法允许您在应用程序在从OS接收终止信号时终止之前指定要使用的行为(例如保存用户数据).这也是iOS开发人员指南要求您保留状态并始终确保在将应用程序带到前台时恢复状态的原因.(用户可能不知道应用已终止,因为当您双击主页时它仍会出现在"正在运行的应用程序"列表中).
现在我明白你在谈论一个网络应用程序,但这很重要.网页,我也很确定你的,在手机中占用一些内存 - 你有DOM,所有资源,关于状态的信息,关于页面的位置以及哪些小部件被设置为什么.你说你的应用程序是相当互动的使用画布和东西 - 我敢肯定它占用了大量的内存.
因此,当您将Safari置于后台时,Safari很可能会破坏您的内存缓存.
Safari可以访问本地存储和cookie数据.iOS5也可以访问WebSQL(但没有IndexedDB因为WebSQL被折旧而感到难过).选择你的毒药.
你需要永远保存状态.由于您无法通过JS访问UIApplicationDelegate方法,因此每次用户执行某些操作时,您都需要保存该状态更改.每次重新加载页面时,都需要检查持久状态并从您选择的存储选项重新加载.
| 归档时间: |
|
| 查看次数: |
7475 次 |
| 最近记录: |