저는 작업중인 약간의 취미 앱이 있습니다. 기본 레이아웃에서 웹 뷰를 사용합니다. webview 내부의 링크를 클릭하면 사용자가 webview 내에있게됩니다. 앱을 시작한 후에도 앱 내부에있는 동안 모든 것이 정상입니다. 그러나 휴대 전화가 잠시 잠자기 후 앱을 다시 열어 내가 중단했던 곳에서 서핑을하면 예기치 않은 동작이 발생합니다.긴 잠을 자면 Android webview가 응답하지 않습니다.
- 웹 페이지에는 텍스트가로드되지만 이미지는 표시되지 않습니다 (물음표 또는 예상되는 이미지의 빈 공간).
- webview에서 웹 페이지의 링크를 클릭하면 사용자가 webview에서 나가고 외부 브라우저가 열립니다. 참고로
는, 나는 이미 수행 한 :
@Override
protected void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
webview.saveState(outState);
}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
webview.restoreState(savedInstanceState);
}
뿐만 아니라이 내부에서 onCreate 코드 :
if (savedInstanceState != null) {
webview.restoreState(savedInstanceState);
}else{
// this means my app is starting from scratch and do the necessary webview loading
}
을 내가 실종하지만 웹뷰하고있어 확실하지 않다 긴 잠을 자면 더 나은 용어가 결여되어 "깨진"것처럼 보입니다. 이 문제에 관해 더 많은 정보를 찾으려고 노력했지만 더 많은 사람들이이 문제를 접하게되는 것을 보지 못했습니다. 사람들은 webview가 이런 방식으로 사용될 것을 기대하지 않거나 잘못된 것을하고 있습니다. 나는 그것이 후자라고 생각한다.
의견을 보내 주셔서 감사합니다.
추가 정보 : webview는 앱의 루트 활동입니다. 문제를 복제하는 단계는 webview에서 메인 메뉴를 눌러 앱이 웹보기 활동을 일시 중지하거나 잠자기 상태로 두거나 전화를 켜고 앱을 열고 웹 페이지가로드 된 마지막 페이지에서 활동이 다시 시작되도록하는 것입니다. 충분히 오래 기다리면 webview 활동이 언급 한 동작을 나타냅니다. 나는 또한 설치 기본 라이프 사이클 기능 onResume, onPause, 중지시,들의 OnDestroy 모든 등 각각의 슈퍼 함수를 호출 한
..
나는 또한 WebViewClient와 WebChromeClient를 사용합니까.
내 WebViewClient는 "onPageStarted", "onReceivedError", "shouldOverloadUrlLoading"및 "onPageFinished"만 처리합니다.
반면 WebChromeClient는 "onGeolocationPermissionShowPrompt"및 "onProgressChanged"만 수행합니다.
둘 모두 페이지로드 진행률을 표시하기 위해 웹보기 상단에 로딩 막대를 만드는 데 사용됩니다.