概览
“概览”章节原生重启崩溃的 WebView,并按固定间隔回收长时间运行的 WebView
从这里开始 getPendingCrashInfo() 以及下方列出的其他核心方法。
平台支持
标题为“平台支持”的部分| 平台 | 支持 | 备注 |
|---|---|---|
| iOS | 是 | 原生 |
| Android | 是 | 原生 |
| Web 端 | 部分支持 | 查看入门指南 |
核心功能
标题为“核心功能”的章节- Native crash restart - 当渲染进程崩溃时,从 iOS 或 Android 端重启 WebView。
- Scheduled restart - 使用原生定时器定期回收长时间运行的 WebView,
restartIntervalMs或基于实际时间restartCron. - Manual native restart - 允许 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;}备注
“注意事项”章节- 该插件会检测 WebView 崩溃后的恢复情况,但无法防止底层崩溃本身。
- 恢复后的 JavaScript 运行时是全新的,因此当这个 API 触发时,之前 WebView 中的内存状态已经丢失。
- 定时重启会写入
reason: 'periodicRestart';手动重启会写入reason: 'manualRestart'。在启用短重启间隔、cron 定时任务或调用之前,请先持久化未保存的状态restartWebView(). restartCron使用设备本地时区的 5 位 cron 语法,例如0 3 * * *用于每日 03:00 重启。请勿同时配置两个调度任务:当restartCron被设置且restartIntervalMs大于0.- 时,原生初始化会抛出致命配置错误。在 Android 上,可能支持
didCrash以及rendererPriorityAtExit等额外字段。 - 在 iOS 上,插件会在
appState观察到已终止的 WebView 进程时进行记录。手动和定时重启会重建 Capacitor bridge view,从而创建一个新的WKWebView。
单一事实来源
标题为“单一事实来源”的部分此参考文档同步自 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”中的原生能力, 使用 @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. 中的实现细节