본문 바로가기

Android

[android]WebView history stack & back

WebView 사용 시 history가 누적되었을 경우, 


Back을 눌렀을 때 WebView가 띄워진 Activity를 바로 종료하지 않고


WebView의 첫 화면으로 돌아간 후 다시 Back을 누르면 Activity를 종료(Back의 원래 기능).


해당 기능 구현을 위해 onBackPressed를 Override.


@Override
public void onBackPressed() {
// 누적된 history를 저장할 변수
WebBackForwardList list = mWebView.copyBackForwardList();
if (list.getCurrentIndex() <= 0 && !mWebView.canGoBack()) {
// 처음 들어온 페이지이거나, history가 없는경우
super.onBackPressed();
} else {
// history가 있는 경우
// 현재 페이지로 부터 history 수 만큼 뒷 페이지로 이동
mWebView.goBackOrForward(-(list.getCurrentIndex()));
// history 삭제
mWebView.clearHistory();
}
}