Я использую веб-представление для отображения некоторого интернет-контента на одной из Операций нашего приложения.
Проблема состоит в том, что, когда пользователь переключается из этого действия, потоки 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
остановка потоков после отъезда их действия?
Вы должны иметь возможность останавливать / возобновлять эти потоки, вызывая 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