gpt4 book ai didi

Android清除webview线程,释放内存,避免OutOfMemoryError

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:10:14 25 4
gpt4 key购买 nike

我在 web View 中显示了一个相当大的图像,以便双指缩放功能和其他查看便利功能已经可用。

第一次显示正确。但是在离开 Activity 并返回到 Activity 之后,应用程序因与 webview 线程相关的 OutofMemoryError 而崩溃。

我尝试了几种方法来尝试关闭 webview 或停止线程,或清除其对内存的使用,但都无济于事。以下是我添加到 Activity 的 onStop() 函数

中的代码示例
    wv.stopLoading();
wv.clearCache(true);
//removeView(wv);
wv.clearView();
wv.freeMemory();
wv.destroy();
try {
Class.forName("android.webkit.WebView").getMethod("onPause", (Class[]) null).invoke(wv, (Object[]) null);
} catch (IllegalArgumentException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (SecurityException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IllegalAccessException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (InvocationTargetException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}

无论如何,请随意批评任何这些代码行,但关键是它们对错误根本没有影响!与webviewcore线程本身不释放内存有关。

这让我感到震惊,因为即使我使用较小的图像,这看起来最终还是会发生。帮忙?

最佳答案

好的,所以这个问题的结论是,在这些文件大小下,无法预先确定或正确清除字符串缓冲区。

在这种情况下,图像作为字符串从服务器中提取,作为字符串进行操作,最后显示为图像。

无论显示为 ImageView 还是 Webview,都没关系,一旦字符串缓冲区变满,应用程序就会崩溃(无论我释放多少东西或设置为 null,它都不会清除),这是一个加密工作。

但最终还是决定将图像存储在应用程序的 Assets 文件夹中。

关于Android清除webview线程,释放内存,避免OutOfMemoryError,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6415182/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com