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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

使用UniWebView时的内存管理

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

內(nèi)存管理

內(nèi)存是移動(dòng)平臺(tái)的一個(gè)關(guān)鍵限制。我們仔細(xì)設(shè)計(jì)并檢查了內(nèi)存管理,以確保沒有意外的內(nèi)存使用或泄漏。為了讓您的游戲保持快速并占用較少的內(nèi)存,請(qǐng)遵循以下規(guī)則。

#不需要時(shí)銷毀 Web 視圖

使用 UniWebView 時(shí)的一個(gè)常見錯(cuò)誤是不斷創(chuàng)建新的 Web 視圖而不破壞未使用的視圖。

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

<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)有可能被破壞,請(qǐng)?zhí)砑覱nDestroy并MyMonoBehaviour關(guān)閉 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方法只是為了視覺效果:隱藏的網(wǎng)頁視圖仍然存在,當(dāng)然還要占用內(nèi)存。如果您不打算再次顯示該頁面,Destroy它而不是調(diào)用Hide.

我們建議您始終在瀏覽會(huì)話完成后盡快銷毀 Web 視圖。當(dāng)您需要新的瀏覽操作時(shí),您總是可以創(chuàng)建一個(gè)新的 Web 視圖。

#重置 Web 視圖引用以避免錯(cuò)誤

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

為事件添加一個(gè)監(jiān)聽器OnShouldClose,當(dāng) Web 視圖將被用戶操作關(guān)閉時(shí),Android 和 iOS 都會(huì)調(diào)用該監(jiān)聽器。在那里,您可以將對(duì) Web 視圖的引用設(shè)置回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>

此事件還使您有機(jī)會(huì)覆蓋關(guān)閉操作。如果您false在事件操作中返回,則不會(huì)關(guān)閉 Web 視圖。

在MyMonoBehaviour使用 的其他部分中webView,請(qǐng)記住 Web 視圖可能已經(jīng)消失了。使用前進(jìn)行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>

#不使用時(shí)清理緩存

當(dāng)您的用戶瀏覽 Internet 時(shí),它會(huì)創(chuàng)建一些緩存,包括緩存的圖像和響應(yīng)。網(wǎng)頁也可能將內(nèi)容存儲(chǔ)在本地存儲(chǔ)中。盡管在大多數(shù)情況下它不會(huì)占用內(nèi)存,但如果您沒有使用緩存,請(qǐng)CleanCache在適當(dāng)?shù)臅r(shí)候調(diào)用以清除它們:

<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>

總結(jié)

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

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。