2010-11-18 54 views
6

正如我在主題中所說的,我希望我的WebView能夠防止當另一個活動進入前臺或僅在方向發生更改時重新加載網頁。原因是因爲WebView內容幾乎完全由Javascript/AJAX生成。一對夫婦的論壇搜索後,我發現很多人建議用「saveState和」和「restoreState」的方法,但是當我看的文檔,它說:WebView的restorePicture方法 - 防止webview刷新頁面

請注意,這種方法不再恢復顯示此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。

回答

0

我會onCreate()加載頁面,並把這個屬性對你的活動在清單:

android:configChanges="orientation|keyboardHidden" 

這將防止您的活動被重新定位的變化時。由於您的活動將頁面加載到onCreate()中,因此將其他活動放在前臺不會導致您重新加載頁面。

+0

感謝您的回答,它將適用於屏幕方向更改,因爲我在其他文章上閱讀過,但是當我發送打開活動(特別是VoiceRecognition)的意圖時,使用相同的任務和啓用的歷史記錄一旦它恢復失去動態生成的內容,這就是爲什麼我對該特定方法感興趣(savePicture)。 – mdelolmo 2010-11-19 09:40:10

+0

對不起,我的代碼中有一些錯誤,所以WebView失去了生成的內容。現在沒問題,但我仍然對這個savePicture和restorePicture方法感到好奇。 – mdelolmo 2010-11-19 13:10:20