我的應用程序的主要活動是一個Activity
,其中包含一個Webview
加載網頁。如何在Android中調用多個WebView時控制內存使用情況?
我重寫了方法shouldOverrideUrlLoading(WebView view, String url)
以使每個URL請求調用Intent
並加載包含WebView
的新同一活動。
這樣做是爲了提供更好的體驗,當按下BACK鍵時,只需完成當前活動並返回到前一個活動,無需再花時間再次呈現頁面,與在單個webview中使用goBack()相比。
但現在的問題是,當我打開很多網址,建立在後臺activitys的長龍,其佔用的內存變大。
當我回到啓動程序並檢查進度時,我可以看到我的應用程序緩存了超過200M的數據。這是不能接受的......
而且有趣的是,我可以看到我的應用程序中使用了我的記憶,但在DDMS的Eclipse中的堆視圖我可以看到應用程序分配的不超過10M的內存。所以我猜200M是webStorage
緩存Webview
?
有沒有什麼辦法控制內存?
我在考慮只保存可能的5層活動,而當回到5次只是跳回主頁。但是仍然不知道如何在我需要的5個活動旁邊釋放內存,而我再也不會使用它了?
或者,如果那是因爲WebView
是保持自動緩存網頁,哪能經理這個手動?如設置最大緩存大小或頁數的限制?
對我來說,這是一個殘酷的解決方案來獲得速度......覆蓋後退按鈕的工作方式,並轉到頁面的另一個活動對我來說並不是一個真正的解決方案。您應該嘗試優化頁面以加快載入速度,但使用壓縮圖像,壓縮圖像等。可能還有其他WebView方法和設置可供您嘗試和加快速度。 – 2012-11-14 19:41:19