Метод restorePicture WebView - предотвращение перезагрузки страницы в веб-просмотре

Как я уже говорил в этой теме, я хочу, чтобы мой WebView предотвращал перезагрузку веб-страницы, когда на передний план выходит другое действие или просто при изменении ориентации. Причина в том, что содержимое WebView почти полностью создается с помощью Javascript/AJAX. После поиска на нескольких форумах я обнаружил, что многие люди предлагали использовать методы «saveState» и «restoreState», но когда я смотрю документацию, там говорится:

Обратите внимание, что этот метод больше не восстанавливает отображаемые данные для этого WebView. См. savePicture(Bundle, File) и restorePicture(Bundle, File) для сохранения и восстановления отображаемых данных.

Итак, здесь я использовал эти savePicture и restorePicture следующим образом:

protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

... некоторые другие строки ....

        setContentView(R.layout.main);
        mWebView = (WebView) findViewById(R.id.webview);

        if (savedInstanceState == null){
            loadInicialWebUi();
        }else{
            mWebView.restoreState(savedInstanceState);
            boolean restoredPic = mWebView.restorePicture(savedInstanceState, new File("savedDisplayWebView.temp"));
            Log.d(TAG, "restored Picture:" + restoredPic);
        }
    }

@Override
protected void onSaveInstanceState(Bundle savedInstanceState) {
    mWebView.saveState(savedInstanceState);
    boolean savedPic = mWebView.savePicture(savedInstanceState, "savedDisplayWebView.temp");
        Log.d(TAG, "saved Picture:" + savedPic);
    super.onSaveInstanceState(savedInstanceState);
}

И хорошо, эти журналы показали, что он сохраняет изображение, но не может его восстановить. Я подозреваю, что может быть что-то о ссылках на файлы, но я не мог придумать лучшего способа получить ссылку на файл, который я создал при сохранении состояния.

Кто-нибудь в восторге? Буду признателен за любые подсказки/предложения. Заранее спасибо.

Мануэль.


person mdelolmo    schedule 18.11.2010    source источник


Ответы (1)


Я бы загрузил страницу в onCreate() и поместил этот атрибут в вашу активность в манифесте:

android:configChanges="orientation|keyboardHidden"

Это предотвратит перезапуск вашей активности при изменении ориентации. И поскольку ваша активность загружает страницу в onCreate(), перенос другой активности на передний план не приведет к перезагрузке страницы.

person Ryan Reeves    schedule 18.11.2010
comment
Спасибо за ваш ответ, это сработает для изменения ориентации экрана, как я читал в других статьях, но когда я отправляю намерение открыть действие (в частности, VoiceRecognition), используя ту же задачу и с включенной историей, как только она возвращается, он теряет динамически сгенерированный контент, поэтому меня заинтересовал этот конкретный метод (savePicture). - person mdelolmo; 19.11.2010
comment
Извините, в моем коде были некоторые ошибки, поэтому WebView терял сгенерированный контент. Теперь все в порядке, но мне все еще интересно узнать об этих методах savePicture и restorePicture. - person mdelolmo; 19.11.2010