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

zsbz8rwp  于 11个月前  发布在  iOS
关注(0)|答案(3)|浏览(206)

如果WKWebView在应用程序在前台运行时终止,则将在其委托上调用webViewWebContentProcessDidTerminate
但是,如果应用程序在后台会发生什么?
它仍然会立即收到回调吗?它会在应用程序稍后前景化时收到回调吗?它根本不会运行吗?
我目前don't know如何触发终止-否则我只是尝试它。
我问是因为我想让它重新加载被终止的Web视图,以避免我的应用程序出现空白屏幕,但我不确定这是否真的适用于在后台运行的应用程序。

8fq7wneg

8fq7wneg1#

如果您正在运行模拟器,则可以从命令行终止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')

字符串
标签:https://gist.github.com/jasonbekolay/dad7c446ae1b02f174dc3eb3a5ea70ee

epfja78i

epfja78i2#

对我来说,WKWebView只有在我的应用程序处于后台并且iOS缺乏内存以供其他应用程序在我的应用程序中终止WKWebView时才会终止。如果您再次打开应用程序,WKWebView会损坏并调用webViewWebContentProcessDidTerminate
试着复制@joemasilotti指出的:
1.在WKWebView处于活动状态时打开应用
1.在后台移动您的应用-不要终止它!
1.打开很多其他应用程序来使用内存,或者玩一个图形激烈的游戏。
1.尝试再次打开应用程序,您应该会看到空白/灰色屏幕。

cbwuti44

cbwuti443#


但是,如果应用程序在后台会发生什么?它仍然会立即收到回调吗?它会在应用程序稍后前景化时收到回调吗?它根本不会运行吗?

做了一个快速测试,答案是肯定的,立即收到回调,即使应用程序在后台

我目前不知道如何触发终止-否则,我会尝试它。

  • 这个问题前面的答案是正确的,我想在上面加上我的发现。
  • 如果你是像我一样的人,谁讨厌命令行这里是基于GUI的解决方案。
Step 1. Run the app on the simulator
Step 2. Open Activity Monitor from Mac's Launchpad (refer to the below screenshot)

字符串
x1c 0d1x的数据

Step 3. Select the CPU tab from the top menu
Step 4. Search webcontent on the right-hand side top corner search bar (refer to the attached screenshot)


Step 5. As soon as you select all filtered processes the stop button will be enabled.


Step 6. Press the stop button it will open a popup(refer to the below screenshot)


Step 7. Press the quit button - Voila! the WebView triggers the


webViewWebContentProcessDidTerminate

  • 如果你是像我这样的人谁想要在真实的设备上测试它,不幸的是,活动监视器在iOS设备上不可用(AFAIK添加您的评论,如果有任何其他选项). *

别担心,你可以按照我在真实的设备上模拟的方式来做。
尝试查找使用基于WebView的内容呈现的应用。
例如,Gmail应用程序。打开收件箱中的每一封电子邮件(**有用的提示:**左右滑动可以在上一封和下一封电子邮件之间导航,以使处理速度更快),并使用一段时间(最好的选择是内容密集的电子报)
另一种选择是在您的设备上使用Safari浏览器。使用它一段时间,您将能够模拟。

**注1:**请确保您没有在后台运行多个应用,否则操作系统会在后台状态下终止您的应用。当您重新打开应用时,应用将重新启动,您的努力将被浪费。
**注2:**尝试在低端设备上进行,因为它更容易模拟。

希望这个回答对大家有帮助,调试愉快!

相关问题