2011-10-04 7 views
2

내 질문은 방향 변경 후 WebView 처리와 관련된 많은 기존 질문과 관련되어 있습니다.Android WebView restoreState freeze

나는 액티비티가 파괴 된 것을 알고 있으므로 onSaveInstanceState()를 사용하여 상태를 저장하고 나중에 restoreState()를 사용하여 복원합니다.

그리고 대부분의 경우 잘 작동합니다. 그러나 오리엔테이션을 너무 빠르게 변경하는 경우 - 다른 레이아웃에서 돌아온 후 내 활동을 시작하거나 WebView 객체를 생성 한 직후에는 그렇지 않습니다. 디버깅은 내 WebView 상태가 저장된다는 것을 보여줍니다 (방향 변경이 발생할 때 모든 객체가 이미 만들어지고 준비되어 있음) 상태 복원을 시도하지만 어떻게 든 할 수는 없습니다. 어떤 종류의 오류도 없지만 페이지가로드되지 않습니다. 무한한 흰색 화면이 보입니다. WebView.reload()를 호출해도 도움이되지 않습니다.

왜 이런 일이 발생하는지 알고 싶습니다. 앞에서 말했듯이 오리엔테이션 변경시 모든 객체가 만들어지고 loadUrl() 메서드가 호출되므로 상태를 올바르게 저장해야합니다.

답변

1

WebView 번들을 확인하십시오. 비 었으면 상태를 복원하지 마십시오.

if (!bundleObject.isEmpty()) { 
    mWebView.restoreState(bundleObject); 

}

+0

가 네, 정답입니다! 나는 (bundleObject! = null) 만 검사하고 충분하지 않았다. isEmpty() 함수가 트릭을 수행합니다. 또는 다음과 같이하면 알 수 있습니다. WebBackForwardList retval = myWebView.restoreState (bundleObject); retval이 null가 아닌지 확인하십시오. – Krzychu