是的,在 Android 应用程序中使用 WebView 时,`localStorage`和`IndexedDB`的行为应该与在标准浏览器中相同。它们都是用于在客户端持久化存储数据的技术,即使在应用程序重启后,数据也应该保持不变。如果数据在应用程序重启后丢失,可能是由于以下原因:
1. **WebView 配置**:如果 WebView 没有正确配置,或者应用程序的某些设置导致 WebView 在重启时清除了数据。
2. **应用程序的清理机制**:某些 Android 应用程序可能会有自己的清理机制,这可能会影响到 WebView 中的数据持久化。
3. **存储空间限制**:`localStorage`通常有 5MB 的存储限制,而`IndexedDB`可以使用更多的存储空间,但如果用户的设备存储空间不足,可能会影响数据的持久化。
4. **应用程序的权限**:应用程序可能需要特定的权限来保证数据的持久化,如果没有这些权限,数据可能无法保存。
5. **浏览器缓存策略**:不同的 Android 版本和浏览器可能有不同的缓存策略,这可能会影响到数据的持久化。
为了确保数据能够在应用程序重启后仍然可用,开发者需要确保 WebView 和应用程序的设置都支持数据持久化,并且要考虑到不同设备和浏览器版本之间的兼容性问题。¹²³
源: 与必应的对话,2024/3/13
(1) How to use IndexedDB to Store Local Data for your Web App.
https://dev.to/alexeagleson/how-to-use-indexeddb-to-store-data-for-your-web-application-in-the-browser-1o90.
(2) A complete guide to using IndexedDB - LogRocket Blog.
https://blog.logrocket.com/using-indexeddb-complete-guide/.
(3) 浏览器缓存库设计总结( localStorage/indexedDB ) - 知乎.
https://zhuanlan.zhihu.com/p/120761426.