Xamarin-如何在WKWebView上禁用JIT?

时间:2018-07-17 11:28:11

标签: xamarin xamarin.forms xamarin.ios wkwebview

我有一个Xamarin.Forms应用程序,我们遇到了一个问题,用户位于呈现WKWebView的页面上,将会发生以下两种情况之一。该应用程序将崩溃,或者它们所在的网页仅呈现一半的内容。 scrollView看起来具有合适的内容高度,但在中间位置截断。

在搜索中,我发现:UIWebView/WKWebView crash on iOS11 (ran out of executable memory)

解决方案是设置一个环境变量以禁用JIT。如何禁用JIT?并非100%肯定会解决问题,但是值得尝试。

using System; using Foundation; using xxxxxxx.Controls; using xxxxxxx.iOS.Renderers; using WebKit; using Xamarin.Forms; using Xamarin.Forms.Platform.iOS; [assembly: ExportRenderer (typeof(HybridWebView), typeof(HybridWebViewRenderer))] namespace xxxxxxx.iOS.Renderers { public class HybridWebViewRenderer : ViewRenderer<HybridWebView, WKWebView> { public HybridWebViewRenderer() : base() { MessagingCenter.Subscribe<BrowserGoBackMessage>(this, BrowserGoBackMessage.Message, (obj) => { if (Control.CanGoBack) Control.GoBack(); }); MessagingCenter.Subscribe<BrowserGoForwardMessage>(this, BrowserGoForwardMessage.Message, (obj) => { if (Control.CanGoForward) Control.GoForward(); }); MessagingCenter.Subscribe<BrowserRefreshMessage>(this, BrowserRefreshMessage.Message, (obj) => { Control?.Reload(); }); } protected override void OnElementChanged(ElementChangedEventArgs<HybridWebView> e) { base.OnElementChanged(e); if (Control == null) { var config = new WKWebViewConfiguration { }; var webView = new WKWebView(Frame, config) {AllowsBackForwardNavigationGestures = true}; SetNativeControl(webView); } if (e.OldElement != null){ } if (e.NewElement != null) { if (Element.Uri != null) { Console.WriteLine("Changing = " + Element.Uri); Control.LoadRequest(new NSUrlRequest(new NSUrl(Element.Uri))); } } } } }

0 个答案:

没有答案