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

2024-01-08

我使用 WebView 在我们的应用程序之一上显示一些互联网内容 活动。
问题是当用户退出此活动时, 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在每个线程中退出。

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

关于我如何制作的任何想法WebView的线程在离开后停止 他们的活动?


您应该能够通过在 Web 视图上调用 onPause / onResume 来停止/恢复这些线程。

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

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 http://code.google.com/p/android/issues/detail?id=10282

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

WebView 线程永远不会停止(WebViewCoreThread、CookieSyncManager、http[0-3]) 的相关文章

随机推荐