跳过内容

@capgo/capacitor-webview-crash

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

This plugin stores a native marker when the previous Capacitor WebView process dies or is recycled, then exposes that marker to the next JavaScript runtime after the app recovers. It can also restart the WebView from native code after a crash, on a fixed interval, on a cron schedule, or when JavaScript explicitly requests restartWebView(),这有助于避免长时间会话期间的内存积累,帮助 kiosk、POS、仪表板、扫描器和标牌应用程序

  • Native crash restart - iOS 或 Android 重启 WebView 当渲染进程死亡时。
  • Scheduled restart - 使用 native 定时器在长时间运行的 WebView 上进行回收,使用 restartIntervalMs 或墙钟 restartCron.
  • Manual native restart - 允许 JavaScript 请求一个新的 native WebView restartWebView() 而不需要重新加载页面。
  • Typed Capacitor config - exposing WebViewCrashPluginConfig 用于 plugins.WebViewCrashcapacitor.config.ts.
  • getPendingCrashInfo getNativeCrashMarker - 返回存储的 native crash 或重启标记,或者 null 当没有任何内容等待时。
  • clearPendingCrashInfo clearNativeCrashMarker - 清除存储的标记后,应用程序恢复其状态。
  • simulateCrashRecovery - 创建一个模拟崩溃标记,以便在本地测试恢复流程。
  • addListener - 发送 webViewRestoredAfterCrash for 崩溃标记和 webViewRestoredAfterRestart for 本地重启标记。
方法描述
getPendingCrashInfo返回存储的本机崩溃或重启标记,或者 null 当没有待处理的标记时。
clearPendingCrashInfo清除存储的标记后,应用程序恢复其状态。
simulateCrashRecovery创建一个模拟崩溃标记,以便在本地测试恢复流程。
restartWebView写入 reason: 'manualRestart' 并要求本地code创建一个新的WebView。
addListener触发 webViewRestoredAfterCrashwebViewRestoredAfterRestart 当一个监听器附加并且一个匹配的标记仍在等待时。
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重启。不要同时配置两个计划:native初始化会抛出一个致命配置错误,当 restartCron 设置并且 restartIntervalMs 大于 0.
  • 在Android上,额外的字段,如 didCrash 并且 rendererPriorityAtExit 可能可用。
  • 在 iOS 上,插件记录 appState 当终止的 WebView 过程被观察到时。手动和计划重启重建 Capacitor 桥视图,因此创建一个新的 WKWebView 真实来源

标题:真实来源

此参考从

src/definitions.ts __CAPGO_KEEP_0__-webview-crash 继续阅读 @capacitor/__CAPGO_KEEP_1__-webview-crash.

标题:继续阅读 @capgo/capacitor-webview-crash

Section titled “Keep going from @capgo/capacitor-webview-crash”

If you are using @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 {"targetLanguage":"Simplified Chinese","pagePath":"/zh/docs/plugins/webview-crash/","protectedTokens":["Cloudflare","Capacitor","GitHub","Capgo","code","API","SDK","CLI","npm","bun"],"items":[{"text":"@capgo/capacitor视频播放器的实现细节"},{"text":"编辑页面"}]}