1.메니페스트 파일에 RESTART_PACKAGES 권한을 사용한다고 선언한다.<uses-permission android:name="android.permission.RESTART_PACKAGES"/>2.ActivityManager 의 restartPackage API 를 호출한다.ActivityManager am= (ActivityManager)getSystemService(ACTIVITY_SERVICE);am.restartPackage(getPackageName());
- START_NOT_STICKY 모드가 아닌 Service 가 작동 중인 경우.
- Activity Task 상에 현재 화면에 보이는 Activity 바로 아래 위치한 Activity 가 종료하고자 하는 Process 의 구성 요소 일 때. (Task 는 Process 가 아니라 안드로이드 시스템에서 관리하고 있음으로, 갑자기 종료된 Activity 바로 아래에 위치한 Activity 를 시스템에서 다시 시작하려고 함으로...)
public void restartPackage (String packageName)
Have the system perform a force stop of everything associated with the given application package. All processes that share its uid will be killed, all services it has running stopped, all activities removed, etc. In addition, a ACTION_PACKAGE_RESTARTED
broadcast will be sent, so that any of its registered alarms can be stopped, notifications removed, etc.
API 설명에 잘 나와 있듯이, restartPackage() 의 경우, 단지 Process 를 종료하는 것이 아니라, 안드로이드 플랫폼에게 특정 어플리케이션 패키지가 종료됨을 알리고, 따라서 이미 실행중인 Service 나 Activity 를 안드로이드 시스템상에서 모두 제거하게 됩니다.
<편히 잠들기를...>
안드로이드 플랫폼은 우리가 알게 모르게 많은 일들을 수행하고 있습니다. 그렇기 때문에, 안드로이드 플랫폼에게 Process 가 죽었다는 사실을 알려준 후에야, 묻어놓은 개발자들은 시체가 무덤에서 다시 돌아오지 않을 것임을 확신하고 마음 편히 잠들 수 있습니다...
출처:http://blog.naver.com/PostView.nhn?blogId=huewu&logNo=110082677696
[출처] 안드로이드 어플리케이션 Process 를 정말로 죽이는 방법|작성자 휴우
'Android > 기본' 카테고리의 다른 글
Progressbar로 로딩표현 (인터넷로딩) (1) | 2012.04.28 |
---|---|
안드로이드 서비스 동작중인 서비스 인지 체크 (0) | 2012.04.28 |
Xml 가져오기 (날씨) (0) | 2012.04.28 |
SQLite 연동하기 (1) | 2012.04.28 |
터치해서 화면 전환 Flipper Touch (0) | 2012.04.28 |