该插件在前一个Capacitor WebView进程死亡或回收时存储一个本机标记,然后在应用程序恢复后将该标记暴露给下一个JavaScript运行时。它还可以在崩溃后从本机code重启WebView,或者在固定的时间间隔,或者在cron调度,或者当JavaScript明确要求 restartWebView(),这有助于避免长时间会话期间的内存积累,帮助kiosk、POS、仪表盘、扫描器和指示器应用程序。
核心功能
名为“核心功能”的部分- 本机崩溃重启 - 在iOS或Android上重启WebView renderer进程死亡时
- 定时重启 - 使用本机定时器在长时间运行的WebViews上进行回收
restartIntervalMs或墙钟restartCron. - 手动本机重启 - 允许JavaScript请求一个新的本机WebView
restartWebView()而不需要重新加载页面。 - Capacitor类型配置 - 暴露
WebViewCrashPluginConfig用于plugins.WebViewCrash在capacitor.config.ts. getPendingCrashInfo- 返回存储的本机崩溃或重启标记,或者null当没有任何标记时。clearPendingCrashInfo- 清除标记后应用程序恢复其状态。simulateCrashRecovery- 创建一个虚拟崩溃标记,以便在本地测试恢复流程。addListener- 触发webViewRestoredAfterCrash崩溃标记和webViewRestoredAfterRestart任何本机重启标记。
公共API
标题为“公共API”| 方法 | 描述 |
|---|---|
getPendingCrashInfo | 返回本地崩溃或重启标记, 或 null 当没有待处理的标记时。 |
clearPendingCrashInfo | 在应用恢复其状态后清除存储的标记。 |
simulateCrashRecovery | 创建一个模拟崩溃标记, 以便在本地测试恢复流程。 |
restartWebView | 写入 reason: 'manualRestart' 并要求本地code创建一个新的 WebView。 |
addListener | 触发 webViewRestoredAfterCrash 或 webViewRestoredAfterRestart 当一个监听器附加并匹配的标记仍在等待时。 |
removeAllListeners | 移除所有插件监听器。 |
配置类型
配置类型Capacitor的插件增强了一个类型化的 PluginsConfig 配置项: WebViewCrash 复制到剪贴板
export interface WebViewCrashPluginConfig { restartOnCrash?: boolean; restartIntervalMs?: number; restartCron?: string; restartAfterCrashDelayMs?: number;}- __CAPGO_KEEP_0__恢复的JavaScript运行时是新的,因此从前WebView的内存状态已经丢失了,当此__CAPGO_KEEP_0__触发时。
- The recovered JavaScript runtime is new, so any in-memory state from the previous WebView is already gone when this API fires.
- 手动重启写
reason: 'periodicRestart'Scheduled restarts write manual restarts writereason: 'manualRestart'. 在启用短暂重启间隔、cron计划或调用之前,保存未保存的状态restartWebView(). restartCron使用设备本地时区的 5 个字段 cron 语法,例如0 3 * * *每天 03:00 重启。不要同时配置两个计划:当restartCron设置且restartIntervalMs大于0.- 在 Android 上,额外的字段,如
didCrash和rendererPriorityAtExit可能可用。 - 在 iOS 上,插件记录
appState当终止的 WebView 过程被观察到时。手动和计划重启重建Capacitor桥接视图,因此创建一个新的WKWebViewSource Of Truth
protectedTokens
真实来源此参考资料是从 src/definitions.ts 在 capacitor-webview-crash.
从@capgo/capacitor-webview-crash继续
从@capgo/capacitor-webview-crash继续如果您正在使用 @capgo/capacitor-webview-crash 将其与 使用@capgo/capacitor-webview-crash 为在使用@capgo/capacitor-webview-crash中native能力 使用@capgo/capacitor-live-activities 为使用 @capgo/capacitor-live-activities 的原生能力 @capgo/capacitor-live-activities 为 @capgo/capacitor-live-activities 的实现细节 使用 @capgo/capacitor-video-player 为使用 @capgo/capacitor-video-player 的原生能力, 和 @capgo/capacitor-video-player 为 @capgo/capacitor-video-player 的实现细节