Я прочитал это обсуждение, и я столкнулся с той же проблемой.
Я много искал, но это не то решение, которое обещают.
И я не знаюЯ не хочу использовать устаревший обратный вызов onNewPicture.
В моей собственной ситуации мне нужно только восстанавливать позицию прокрутки WebView при запуске действия, и я думаю, что это в большинстве случаев, так как когдаСтек заданий активности переходит в фоновый режим, Android автоматически сохраняет состояние `WebView`, поэтому, когда он выходит на передний план, он будет выглядеть так же.Если это будет убито в фоновом режиме, я уверен, что вам удастся сохранить состояние в методах жизненного цикла Activity, таких как `onPause`.
Так что вместо расширения` WebView` и переопределения бла, бла, бла..., я использую обработчик и пост-модель.
private final Handler mHandler = new Handler();
// in onCreate
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
if (mWebView.getContentHeight() > 0) {
mWebView.scrollTo(0, mLastPosition);
Log.d("scrolling", "true");
mHandler.removeCallbacks(this);
} else {
mHandler.postDelayed(this, 100);
}
}
}, 100);
Этот блок кода будет периодически проверять, можно ли манипулировать страницей WebView, если это так, он выполняет прокрутку и удаляет обратный вызов, в противном случае он зацикливается,Я проверяю это и выясняю, что обычно это не займет много времени.
Надеюсь, это поможет!