我使用WebView在我们的应用程序之一上显示一些Internet内容
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 的
webView.destroy()
方法中调用onPause()
,但它没有任何影响。
当我禁用在webView中打开网页的调用时
(
webView.loadUrl(...)
),这些线程自然不会启动,并且因此,离开 Activity 后不要继续。
关于如何使
WebView
的线程退出的任何想法在离开后都会停止他们的 Activity ?
最佳答案
您应该能够通过在Web View 上调用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