我使用 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(使用前将#替换为@)