webViewWebContentProcessDidTerminate 是否曾经调用过在后台运行的应用程序?

Hen*_*k N 9 ios wkwebview

如果 WKWebView 在应用程序在前台运行时终止,webViewWebContentProcessDidTerminate将在其委托上调用。

\n

但如果应用程序在后台运行会发生什么?

\n

还会立即收到回调吗?当应用程序稍后置于前台时它会收到它吗?它根本不运行吗?

\n

我目前不知道如何触发终止 \xe2\x80\x93 否则我会尝试一下。

\n

我之所以这么问,是因为我想让它重新加载已终止的 Web 视图,以避免我的应用程序中出现空白屏幕,但我不确定这是否真的适用于在后台运行的应用程序。

\n

Jas*_*n B 16

如果您正在运行模拟器,则可以从命令行终止 Web 内容进程以触发调用webViewWebContentProcessDidTerminate

# In the command line, find the PID of your simulator process:
ps -p `pgrep launchd_sim`

# or if you have many simulators running:
ps -A | grep launchd_sim

# Find the PID of the WebContent process:
pgrep -P <simulator-pid> 'com.apple.WebKit.WebContent'

# kill it
kill <webcontent-pid>

# or if you want a one-lner:
kill $(pgrep -P $(pgrep launchd_sim) 'com.apple.WebKit.WebContent')
Run Code Online (Sandbox Code Playgroud)

要点在这里:https://gist.github.com/jasonbekolay/dad7c446ae1b02f174dc3eb3a5ea70ee


Fa1*_*gel 1

对我来说,仅当我的应用程序位于后台并且 iOS 缺乏用于终止我的应用程序中的 WKWebView 的其他应用程序的内存时,WKWebView 才会终止。如果您再次打开应用程序,WKWebView 将被破坏并被webViewWebContentProcessDidTerminate调用。

尝试按照@joemasilotti 指出的方式进行复制:

  1. 打开您的应用程序并激活 WKWebView
  2. 将您的应用程序移至后台 - 不要终止它!
  3. 打开许多其他应用程序以使用内存,或者玩一些图形密集型游戏几秒钟。
  4. 尝试再次打开您的应用程序,您应该会看到空白/灰色屏幕。