我们有一个 Singleton 来维护小程序的当前 UI 状态。问题是:
- 用户在浏览器中打开小程序页面,在下拉列表中选择一个值。
- 用户在应用程序中浏览另一个纯 HTML 页面。
- 用户回到小程序页面,UI 状态完好无损,即他在下拉菜单中选择的值在那里。这种下拉状态来自一个Singleton,它保存了applet UI 状态。
- 用户再次转到应用程序中的纯 HTML 页面。
- 用户再次回到小程序页面,这次状态丢失并重置为默认布局(下拉菜单包含默认值)。
我发现的原因是,当用户第二次返回小程序时,保存 UI 状态的 Singleton 无法保持其状态。所有静态变量都重置为其默认值。
我发现小程序应该是无状态的,因为这个链接:
其中说:
如果类加载器缓存获取的内存不需要用于其他目的,则存储在小程序中的值可以在调用之间保持不变。但是你不能依赖这种行为。一般来说,小程序应该是无状态的。如果需要持久存储,请使用浏览器 cookie。
在这种情况下,我们如何为 Applets 创建单例?我无法在浏览器 cookie 中保存整个 UI 状态。