WebView 线程永不停止(WebViewCoreThread、CookieSyncManager、http[0-3]) [英] WebView threads never stop (WebViewCoreThread, CookieSyncManager, http[0-3])

查看:19
本文介绍了WebView 线程永不停止(WebViewCoreThread、CookieSyncManager、http[0-3])的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用 WebView 在我们的应用程序之一上显示一些互联网内容活动.
问题是当用户退出这个活动时,WebView 的线程继续运行!
有问题的线程是:

I use a WebView to display some internet content on one of our app's Activities.
The problem is that when the user switches out of this activity, WebView's threads keep running!
The problematic threads are:

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

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

Pausing each one of these threads, and checking what it is busy doing:

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 退出.

I wonder how can I tell the Looper in each of those threads to quit.

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

I tried calling webView.destroy() in the activity's onPause() method, but it had no influence.
When I disable the call for opening a web page in the webView ( webView.loadUrl(...) ), those threads naturally are not started, and therefore don't stay on after leaving the activity.

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

Any ideas as to how I can make WebView's threads stop after leaving their activity?

推荐答案

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

You should be able to stop / resume these threads by calling the onPause / onResume on the webview.

然而这些都是隐藏的,所以你需要通过反射来完成.以下代码对我有用:

Those are however hidden, so you will need to do it through reflection. The following code worked for me:

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

其中 webView 是 WebView 的实例.

Where webView is the instance of WebView.

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

这篇关于WebView 线程永不停止(WebViewCoreThread、CookieSyncManager、http[0-3])的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆