Запуск WebView в фоновом режиме
Я разрабатываю приложение, которое использует WebView для входа на веб-сайт, вытаскивает контент из него, а затем уведомляет пользователя, когда контент обновляется. Я получил WebView, чтобы получить контент, однако мне нужно знать, как я могу запустить WebView как сервис, чтобы заставить его работать в фоновом режиме.
Как я понимаю, WebViews необходимо манипулировать из потока пользовательского интерфейса, что делает вещи намного сложнее.
предложения/обходные пути, как я могу получить приложение, чтобы уведомить пользователя независимо от того, есть ли у них приложение открыто или нет?
3 ответов
в то время как WebViews нужно манипулировать в одном потоке, он не обязательно должен быть потоком пользовательского интерфейса (если вы не хотите присоединить WebView к иерархии представлений), однако он должен быть одним и тем же потоком для всех WebViews.
хотя это не что-то явно поддерживаемое (или сильно протестированное), нет ничего особенного, что WebView делает, чтобы предотвратить его запуск в Службе. WebView вызывает несколько методов в контексте, которые обычно не работают в Службе (например, getTheme ()), поэтому вам придется обойти это с помощью ContextWrapper. Вам также необходимо вручную вызвать WebView.layout
чтобы обмануть WebView, думая, что у него есть размер. Может быть, вам нужно сделать больше вещей, но больше ничего не приходит на ум.
вы не можете надуть или изменить любой вид из фонового потока. Но если вам нужно содержимое веб-страницы, вы можете получить его в фоновом потоке с помощью HTTP GET. Вам нужно использовать GET on the url, чтобы получить его HTML-данные.