coder1cv8
@coder1cv8
Инди-разработчик

WebView — как не перезагружать страницу при повороте экрана?

Дано: приложение с одной хост-Activity и множеством фрагментов. В одном из фрагментов контент подгружается в WebView. Хотелось бы сделать так, чтобы страница не перезагружалась из Интернета каждый раз, когда пользователь поворачивает устройство.

Stackoverflow предлагает такой ответ:
public class MyFragment extends Fragment {
	
	...
	
	@Override
	public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
		
		...
		
		if (savedInstanceState == null) {
			mWebView.loadUrl(URL);
		} else {
			mWebView.restoreState(savedInstanceState);
		}
	}
	
	@Override
	public void onSaveInstanceState(Bundle outState) {
		mWebView.saveState(outState);
	}
}

Проблема в том, что restoreState точно так же тупо тянет страницу из Интернета (проверял на 4.4.2 и 6.0.1).

Нашел еще такое решение: www.devahead.com/blog/2012/01/preserving-the-state... Оно сводится к тому, чтобы отключить автоматическое пересоздание Activity и сохранять вдобавок сам WebView. Но это совершенно не вариант, так как у меня ~30 фрагментов и обрабатывать вручную в каждом onConfigurationChanged... Хм...

Это не работает с фрагментами? Или так и должно быть?
  • Вопрос задан
  • 1512 просмотров
Пригласить эксперта
Ответы на вопрос 2
@aol-nnov
Склонен считать, что это проблема мобильного хромиума (который и есть вебвью)
типа такой

у меня на киткате (SGS3) была такая проблема просто при переключении табов браузера, а на CM11 на этом же аппарате - не было.
Ответ написан
Комментировать
severus256
@severus256
Code everywhere....
Проблема в пересоздании активити. Кажется на андроид это не решить без костылей
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы