gpt4 book ai didi

android - WebView 线程永不停止(WebViewCoreThread、CookieSyncManager、http[0-3])

转载 作者:IT老高 更新时间:2023-10-28 21:39:58 25 4
gpt4 key购买 nike

我使用 WebView 在我们的一个应用程序中显示一些互联网内容 Activity 。
问题是当用户退出这个 Activity 时,WebView 的线程一直在运行!
有问题的线程是:

Thread [<17> WebViewCoreThread] (Running)
Thread [<25> CookieSyncManager] (Running)
Thread [<19> http0] (Running)
Thread [<29> http1] (Running)
Thread [<31> http2] (Running)
Thread [<33> http3] (Running)

暂停这些线程中的每一个,并检查它正忙于做什么:

Thread [<17> WebViewCoreThread] (Suspended)
Object.wait(long, int) line: not available [native method]
MessageQueue(Object).wait() line: 288
MessageQueue.next() line: 148
Looper.loop() line: 110
WebViewCore$WebCoreThread.run() line: 471
Thread.run() line: 1060

Thread [<25> CookieSyncManager] (Suspended)
Object.wait(long, int) line: not available [native method]
MessageQueue(Object).wait(long) line: 326
MessageQueue.next() line: 144
Looper.loop() line: 110
CookieSyncManager(WebSyncManager).run() line: 90
Thread.run() line: 1060

Thread [<19> http0] (Suspended)
Object.wait(long, int) line: not available [native method]
RequestQueue(Object).wait() line: 288
ConnectionThread.run() line: 93

我想知道如何让每个线程中的 Looper 退出。

我尝试在 Activity 的 onPause() 方法中调用 webView.destroy(),但没有影响。
当我禁用在 webView 中打开网页的调用时( webView.loadUrl(...) ),那些线程自然没有启动,并且因此,离开 Activity 后不要继续。

关于如何让 WebView 的线程在离开后停止的任何想法他们的 Activity ?

最佳答案

您应该能够通过调用 webview 上的 onPause/onResume 来停止/恢复这些线程。

然而,这些是隐藏的,所以你需要通过反射(reflection)来做到这一点。以下代码对我有用:

Class.forName("android.webkit.WebView").getMethod("onPause", (Class[]) null).invoke(webView, (Object[]) null);

其中 webView 是 WebView 的实例。

另见:http://code.google.com/p/android/issues/detail?id=10282

关于android - WebView 线程永不停止(WebViewCoreThread、CookieSyncManager、http[0-3]),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2040963/

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