My Blog List

Sunday, May 11, 2014

Android clearly exit source

영어로 설명하려고 하다 보니깐 너무 어려워서 한글로 설명을 해야겠다.

내 현상 :
난 웹뷰를 사용하는 Application을 사용했는데 web에서 Browser의 accept-lanuguage의 값을 받아서 셋팅을 한다. 한국어 모드에서 어플리케이션을 종료하고 영어 모드로 변경하고 다시 어플을 실행했을때 웹뷰에서 예전의 값을 그대로 가지고 있는 현상이 발생되었다.
그 말은 즉, 어플리케이션이 정상적으로 완전 종료가 되지 않아서 프로세스가 완전 재실행되지 않고 웹뷰의 헤더값이 예전과 유지되는 현상이 있었다.

인터넷에서 찾아보니깐 어플리케이션을 종료하는 방법에는 여러가지가 있더라.
1. finish();

2. restartPackage

3. killBackgroundProcessor

4. killProcessor

5. System.exit(0)

마지막으로 아래와 같은 방법

테스트 결과 아래처럼 하는 방법이 제일 안전하고, 그리고 Webview의 내용이 정상적으로 재설정되었다.
아래 참조 링크 걸었는데 거기에 자세한 내용이 나온다.


final ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
//stop running service inside current process. 
List<RunningServiceInfo> serviceList = am.getRunningServices(100);
for(RunningServiceInfo service : serviceList){
    if( service.pid == Process.myPid()){
        Intent stop = new Intent();
        stop.setComponent(service.service);
        stopService(stop);
    }
}
//move current task to background.
Intent launchHome = new Intent(Intent.ACTION_MAIN);
launchHome.addCategory(Intent.CATEGORY_DEFAULT); launchHome.addCategory(Intent.CATEGORY_HOME);
startActivity(launchHome);
//post delay runnable(waiting for home application launching) 
new Handler().postDelayed(new Runnable(){
    @Override public void run() {
        am.killBackgroundProcesses(getPackageName());
    }
}, 3000);




참조 :
http://blog.naver.com/PostView.nhn?blogId=huewu&logNo=110120532880


No comments:

Post a Comment