딸바보님 블로그에서 발취하였습니다.
출처 : http://shstarkr.tistory.com/135
출처 : http://shstarkr.tistory.com/135
출처 : http://shstarkr.tistory.com/135
메인 액티비티가 아닌 서브 액티비티일 경우 메인 액티비티를 호출해 메인에서 종료해주는 방법입니다.
1. AnroidManifest.xml 에 아래 코드를 삽입
1. AnroidManifest.xml 에 아래 코드를 삽입
- <uses-permission android:name="android.permission.RESTART_PACKAGES"/>
2. 서브액티비티에 아래 함수를 선언하고 종료시킬 시점에서 close() 를 호출해줍니다.
3. 이번엔 메인액티비티에 아래 소스를 추가해줍니다.
- private void close()
- {
- finish();
- Intent intent = new Intent(현재액티비티명.this, 메인액티비티명.class);
- intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
- intent.putExtra("KILL_ACT", true);
- startActivity(intent);
- }
- protected void onNewIntent(Intent intent)
- {
- super.onNewIntent(intent);
- boolean isKill = intent.getBooleanExtra("KILL_ACT", false);
- if(isKill)
- close();
- }
- private void close()
- {
- finish();
- int nSDKVersion = Integer.parseInt(Build.VERSION.SDK);
- if(nSDKVersion < 8)
- {
- ActivityManager actMng = (ActivityManager)getSystemService(ACTIVITY_SERVICE);
- actMng.restartPackage(getPackageName());
- }
- else
- {
- new Thread(new Runnable() {
- public void run() {
- ActivityManager actMng = (ActivityManager)getSystemService(ACTIVITY_SERVICE);
- String strProcessName = getApplicationInfo().processName;
- while(true)
- {
- List<RunningAppProcessInfo> list = actMng.getRunningAppProcesses();
- for(RunningAppProcessInfo rap : list)
- {
- if(rap.processName.equals(strProcessName))
- {
- if(rap.importance >= RunningAppProcessInfo.IMPORTANCE_BACKGROUND)
- actMng.restartPackage(getPackageName());
- Thread.yield();
- break;
- }
- }
- }
- }
- }, "Process Killer").start();
- }
- }
출처 : http://shstarkr.tistory.com/135
'Android Dev' 카테고리의 다른 글
[안드로이드] 탭 하단의 위치 시키기!! (TabHost, TabWiget) (2) | 2011.07.14 |
---|---|
[안드로이드] 주소록 가져오기에서 바뀐점. -스크랩자료. (0) | 2011.06.23 |
[안드로이드] 슬립 화면 깨우기 (1) | 2011.06.22 |
[안드로이드] 첫화면 로고 (2) | 2011.06.22 |
안드로이드 - C2DM Server(JSP), Device(안드로이드폰) 구현 (28) | 2011.06.06 |