Метод restorePicture WebView - Предотвращение просмотра веб-страницы для перезагрузки страницы - PullRequest
6 голосов
/ 18 ноября 2010

Как я уже говорил в этой теме, я хочу, чтобы мой 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);
}

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

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

Manuel.

1 Ответ

0 голосов
/ 18 ноября 2010

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

android:configChanges="orientation|keyboardHidden"

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...