日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用UniWebView时的内存管理

發布時間:2023/12/9 编程问答 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 使用UniWebView时的内存管理 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

內存管理

內存是移動平臺的一個關鍵限制。我們仔細設計并檢查了內存管理,以確保沒有意外的內存使用或泄漏。為了讓您的游戲保持快速并占用較少的內存,請遵循以下規則。

#不需要時銷毀 Web 視圖

使用 UniWebView 時的一個常見錯誤是不斷創建新的 Web 視圖而不破壞未使用的視圖。

一旦您不使用 Web 視圖組件,我們強烈建議您盡快銷毀它。要關閉和銷毀 Web 視圖,請將其傳遞給 Unity 的Destroy方法。還要重置對它的任何引用以確保代碼安全:

<span style="background-color:#282c34"><span style="color:#2c3e50"><span style="color:#cccccc"><code><span style="color:#cc99cd">public</span> <span style="color:#cc99cd">class</span> <span style="color:#f8c555">MyMonoBehaviour</span> <span style="color:#cccccc">:</span> <span style="color:#f8c555">MonoBehaviour</span> <span style="color:#cccccc">{</span><span style="color:#f8c555">UniWebView</span> webView <span style="color:#67cdcc">=</span> <span style="color:#999999">//... You set the web view as a member somewhere</span><span style="color:#f8c555"><span style="color:#cc99cd">void</span></span> <span style="color:#f08d49">CloseWebView</span><span style="color:#cccccc">(</span><span style="color:#cccccc">)</span> <span style="color:#cccccc">{</span><span style="color:#f08d49">Destroy</span><span style="color:#cccccc">(</span>webView<span style="color:#cccccc">)</span><span style="color:#cccccc">;</span>webView <span style="color:#67cdcc">=</span> <span style="color:#cc99cd">null</span><span style="color:#cccccc">;</span><span style="color:#cccccc">}</span> <span style="color:#cccccc">}</span> </code></span></span></span>

如果 Web 視圖的持有者組件(此處為MyMonoBehaviour)有可能被破壞,請添加OnDestroy并MyMonoBehaviour關閉 Web 視圖
?

<span style="background-color:#282c34"><span style="color:#2c3e50"><span style="color:#cccccc"><code><span style="color:#cc99cd">public</span> <span style="color:#cc99cd">class</span> <span style="color:#f8c555">MyMonoBehaviour</span> <span style="color:#cccccc">:</span> <span style="color:#f8c555">MonoBehaviour</span> <span style="color:#cccccc">{</span><span style="color:#f8c555">UniWebView</span> webView <span style="color:#67cdcc">=</span> <span style="color:#999999">//... You set the web view as a member somewhere</span><span style="color:#f8c555"><span style="color:#cc99cd">void</span></span> <span style="color:#f08d49">CloseWebView</span><span style="color:#cccccc">(</span><span style="color:#cccccc">)</span> <span style="color:#cccccc">{</span><span style="color:#f08d49">Destroy</span><span style="color:#cccccc">(</span>webView<span style="color:#cccccc">)</span><span style="color:#cccccc">;</span>webView <span style="color:#67cdcc">=</span> <span style="color:#cc99cd">null</span><span style="color:#cccccc">;</span><span style="color:#cccccc">}</span><span style="color:#f8c555"><span style="color:#cc99cd">void</span></span> <span style="color:#f08d49">OnDestroy</span><span style="color:#cccccc">(</span><span style="color:#cccccc">)</span> <span style="color:#cccccc">{</span><span style="color:#f08d49">CloseWebView</span><span style="color:#cccccc">(</span><span style="color:#cccccc">)</span><span style="color:#cccccc">;</span><span style="color:#cccccc">}</span> <span style="color:#cccccc">}</span> </code></span></span></span>

#隱藏或破壞

有一種Hide方法可以使 Web 視圖不可見。但是,該Hide方法只是為了視覺效果:隱藏的網頁視圖仍然存在,當然還要占用內存。如果您不打算再次顯示該頁面,Destroy它而不是調用Hide.

我們建議您始終在瀏覽會話完成后盡快銷毀 Web 視圖。當您需要新的瀏覽操作時,您總是可以創建一個新的 Web 視圖。

#重置 Web 視圖引用以避免錯誤

在 Android 上,用戶可以使用設備上的后退按鈕關閉 Web 視圖。在 iOS 上,工具欄中還有一個“完成”按鈕。對于任何一種情況,如果您在腳本中持有 Web 視圖的引用,則需要將其重置為nullWeb 視圖關閉時。

為事件添加一個監聽器OnShouldClose,當 Web 視圖將被用戶操作關閉時,Android 和 iOS 都會調用該監聽器。在那里,您可以將對 Web 視圖的引用設置回null:


? <span style="background-color:#282c34"><span style="color:#2c3e50"><span style="color:#cccccc"><code><span style="color:#cc99cd">public</span> <span style="color:#cc99cd">class</span> <span style="color:#f8c555">MyMonoBehaviour</span> <span style="color:#cccccc">:</span> <span style="color:#f8c555">MonoBehaviour</span> <span style="color:#cccccc">{</span><span style="color:#f8c555">UniWebView</span> webView<span style="color:#cccccc">;</span><span style="color:#f8c555"><span style="color:#cc99cd">void</span></span> <span style="color:#f08d49">CreateWebView</span><span style="color:#cccccc">(</span><span style="color:#cccccc">)</span> <span style="color:#cccccc">{</span>webView <span style="color:#67cdcc">=</span> gameObject<span style="color:#cccccc">.</span><span style="color:#f08d49">AddComponent</span><span style="color:#f8c555"><span style="color:#cccccc"><</span>UniWebView<span style="color:#cccccc">></span></span><span style="color:#cccccc">(</span><span style="color:#cccccc">)</span><span style="color:#cccccc">;</span>webView<span style="color:#cccccc">.</span>OnShouldClose <span style="color:#67cdcc">+=</span> <span style="color:#cccccc">(</span>view<span style="color:#cccccc">)</span> <span style="color:#67cdcc">=></span> <span style="color:#cccccc">{</span>webView <span style="color:#67cdcc">=</span> <span style="color:#cc99cd">null</span><span style="color:#cccccc">;</span><span style="color:#cc99cd">return</span> <span style="color:#f08d49">true</span><span style="color:#cccccc">;</span><span style="color:#cccccc">}</span><span style="color:#cccccc">;</span><span style="color:#cccccc">}</span> <span style="color:#cccccc">}</span> </code></span></span></span>

此事件還使您有機會覆蓋關閉操作。如果您false在事件操作中返回,則不會關閉 Web 視圖。

在MyMonoBehaviour使用 的其他部分中webView,請記住 Web 視圖可能已經消失了。使用前進行null檢查:

<span style="background-color:#282c34"><span style="color:#2c3e50"><span style="color:#cccccc"><code><span style="color:#cc99cd">public</span> <span style="color:#cc99cd">class</span> <span style="color:#f8c555">MyMonoBehaviour</span> <span style="color:#cccccc">:</span> <span style="color:#f8c555">MonoBehaviour</span> <span style="color:#cccccc">{</span><span style="color:#f8c555">UniWebView</span> webView<span style="color:#cccccc">;</span><span style="color:#f8c555"><span style="color:#cc99cd">void</span></span> <span style="color:#f08d49">Load</span><span style="color:#cccccc">(</span><span style="color:#cccccc">)</span> <span style="color:#cccccc">{</span><span style="color:#cc99cd">if</span> <span style="color:#cccccc">(</span>webView <span style="color:#67cdcc">!=</span> <span style="color:#cc99cd">null</span><span style="color:#cccccc">)</span> <span style="color:#cccccc">{</span>webView<span style="color:#cccccc">.</span><span style="color:#f08d49">Load</span><span style="color:#cccccc">(</span><span style="color:#7ec699">"https://example.com"</span><span style="color:#cccccc">)</span><span style="color:#cccccc">;</span><span style="color:#cccccc">}</span><span style="color:#cccccc">}</span> <span style="color:#cccccc">}</span> </code></span></span></span>

#不使用時清理緩存

當您的用戶瀏覽 Internet 時,它會創建一些緩存,包括緩存的圖像和響應。網頁也可能將內容存儲在本地存儲中。盡管在大多數情況下它不會占用內存,但如果您沒有使用緩存,請CleanCache在適當的時候調用以清除它們:

<span style="background-color:#282c34"><span style="color:#2c3e50"><span style="color:#cccccc"><code>webView<span style="color:#cccccc">.</span><span style="color:#f08d49">CleanCache</span><span style="color:#cccccc">(</span><span style="color:#cccccc">)</span><span style="color:#cccccc">;</span></code></span></span></span>

總結

以上是生活随笔為你收集整理的使用UniWebView时的内存管理的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。