跳过内容

@capgo/capacitor-webview-crash

原生 WebView 崩溃恢复、手动重启和长时间运行的 Capacitor 应用程序的定期 WebView 回收。

概述

概述

该插件在前一个Capacitor WebView进程死亡或被回收时存储一个本机标记,然后在应用程序恢复后将该标记暴露给下一个JavaScript运行时。它还可以在崩溃后从本机code重启WebView,或者在固定的间隔,或者在cron调度,或者当JavaScript明确要求 restartWebView(),这有助于避免长时间会话期间的内存积累,帮助kiosk、POS、仪表板、扫描器和指示器应用程序

核心功能

核心功能
  • 本机崩溃重启 - 在iOS或Android上重启WebView renderer进程死亡
  • 定时重启 - 使用__CAPGO_KEEP_0__或__CAPGO_KEEP_1__在本机定时器上回收长时间运行的WebViews restartIntervalMs 定时重启 - 使用__CAPGO_KEEP_0__或__CAPGO_KEEP_1__在本机定时器上回收长时间运行的WebViews restartCron.
  • 手动原生重启 - 让 JavaScript 请求一个新的原生 WebView restartWebView() 不需要进行页面重载。
  • 类型化 Capacitor 配置 - exposing WebViewCrashPluginConfig 用于 plugins.WebViewCrash 在 capacitor.config.ts.
  • getPendingCrashInfo - 返回存储的原生崩溃或重启标记,或者 null 当没有任何待处理的标记时。
  • clearPendingCrashInfo - 在应用恢复其状态后清除存储的标记。
  • simulateCrashRecovery - 创建一个模拟崩溃标记,以便在本地测试恢复流程。
  • addListener - 触发 webViewRestoredAfterCrash 崩溃标记 webViewRestoredAfterRestart 和任何原生重启标记
方法描述
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运行时是新的,因此从前一个WebView中丢失的内存状态在此API触发时已经丢失了。
  • 定时重启写入 reason: 'periodicRestart'; 手动重启写入 reason: 'manualRestart'. 在启用短重启间隔、cron计划或调用 restartWebView().
  • restartCron 使用设备本地时区的5字段cron语法,例如 0 3 * * * 每天03:00重启。 不要同时配置两个计划:native初始化会在 restartCron 设置且 restartIntervalMs 大于 0.
  • 在Android上,额外字段,如 didCrash 和 rendererPriorityAtExit 可能可用。
  • 在iOS上,插件记录 appState 当终止的WebView进程被观察到时。 手动和计划重启重建了Capacitor桥接视图,因此一个新的 WKWebView 在 Capgo 中创建。

真实来源

源头真实

此参考从 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-视频播放器 为@capgo/capacitor-video-player的实现细节