------------------------------------------------------------------------------------------------
출처: http://java.ihoney.pe.kr/195
------------------------------------------------------------------------------------------------
프로젝트에서 하이브리드앱 형태로 해서 모바일 웹페이지를 안드로이드의 웹뷰에서
보여주며 동작시키는 앱을 만들었다.
제조사마다 다양한 종류의 디바이스에서 테스트를 해봐야하는 안드로이드 개발은
앞으로도 고역이 될 것 같다.
얼마간 나를 괴롭히던 녀석이 있었다.
로그인을 할때 CookieManager를 이용해서 웹뷰의 쿠키 Sync를 맞춰두고
로그인 상태를 유지하도록 만들었다.
이 싱크를 맞추는 작업이 지금까지도 곤혹스럽다.
갤럭시S는 사용자가 많다.
그런데 가장 이상한 안드로이드폰이 갤럭시 S다.
갤럭시S를 제외한 안드로이드폰들에서는 정상적으로 동작하는 앱이 꼭!
갤럭시S에서는 다르게 반응하는 것이다. 후아.
인터넷을 뒤져보다가 이 문제에 대한 해결책을 찾았다.
참고 Url : http://cdkkcdkktoandroid.tistory.com/27
CookieManager 소스 url :
/** * Remove all session cookies, which are cookies without expiration date */
|
위의 소스를 보면 마지막에 new Thread(clearCache).start()가 실행되는 것이 보인다. CookieManager.removeSessionCookie() 가 스레드로 실행되는 것을 확인할 수 있다.
갤럭시S가 다른폰들과 다른 반응을 보인 부분이 이 부분이다.
하는 생각으로 인터넷을 뒤적거리다가"인터넷에 해결 방법이 있을까? "
해결방법을 찾았다.
jinu's blog : Android webview cookie sync 문제 : http://jinu.info/blog/372
1년 전에 작성된 글인데, 글의 중간에 보면
// 500ms 강제 delay 주고 하단 부분 실행!!
try { Thread.sleep(500); } catch (Exception e) {}
for (int i = 0; i < cookies.size(); i++) {
...
...
}
위의 코드가 핵심이다. 500ms의 강제 대기시간을 주어서 cookieManager가 세션쿠키를 삭제할 수 있는
충분한 시간적인 여유를 부여한 후에 진행되도록 하는 것이다.
<< 위의 내용을 힌트삼아서 수정한 소스 >>
public void removeAllCookie()
public void removeSessionCookies()
private void threadSleep()
|
처럼 처리했다.
'IT_Programming > Android_Java' 카테고리의 다른 글
[펌] manifest activity 태그의 multiprocess 속성. (0) | 2012.02.03 |
---|---|
intent 간의 data 가 100kb 가 넘어갈 경우 ! (0) | 2011.12.15 |
HttpClient HTTP POST로 String 받는 두 가지 방법 (0) | 2011.11.27 |
Android(Java) httpClient + zlib(zip) (0) | 2011.11.27 |
Android Java Package 지원범위 (0) | 2011.11.26 |