Running WebView in Background

You cannot inflate or modify any view from background thread. But if you want the content of a web page, you can fetch it in a background thread using HTTP GET. You need to use GET on the url to get its HTML data.


You mean that?

runOnUiThread(new Runnable(){
        public void run() {
            ... something 
        }
    });

While WebViews need to be manipulated on a single thread it doesn't necessarily need to be the UI thread (unless you want to attach the WebView to the view hierarchy), however it needs to be the same thread for all of the WebViews.

While it's not something explicitly supported (or heavily tested) there is nothing special that the WebView does to prevent you from running it in a Service. The WebView does call a couple of methods on the Context that don't normally work in a Service (like getTheme()), so you'd have to work around that with a ContextWrapper. You'll also need to manually call WebView.layout to trick the WebView into thinking it has a size. There might be more stuff you'd need to do, but nothing else comes to mind.