마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

(해결)Intent로 패키지 외부의 App을 호출했을때 종료시키는 방법(재업) [closed]

0 추천
저번에 질문을 올렸는데 패키지 내부에서로 잘못 이해하신건지 내부에서 쓰는 방법을 알려주시더군요.

패키지 외부의 app이며 intent를 써서 startActivity로 불러왔습니다. 메인액티비티를 앞으로 끌고 온 다음 killprocess로 종료시키려고 했는데, 이제보니 killprocess로 프로세스를 종료시켜도 액티비티가 종료되지 않으면 다시 onCreate를 실행하더군요.

이걸 액티비티까지 종료 시킬 수 있는 방법은 없는 건가요? 외부앱은 제가 만든 것이 아니라 플레이스토어에서 받아온것이라 소스접근은 불가능합니다.

 

===========================================================================

해결했습니다. 처음에 올린 메소드를 그대로 쓰는게 맞았고, intent에 flag를 넣을때 clear top | single top 의 형식으로 주니까 재생성하지 않아 startActivity할 때마다 제대로 실행하고, 프로세스를 종료시키면 태스크를 남기지않고 그대로 사라집니다.  이드로이드님께는 죄송하지만 해주셨던 말씀은 올려놨던 소스와 일치하는 부분이었습니다.
질문을 종료한 이유: 해결되었습니다.
unlimited90 님이 2015년 4월 7일 질문
2015년 4월 7일 closed

2개의 답변

0 추천
 
채택된 답변
작성자님의 소스에서 커맨드 명령을 써서 PID를 알아낸다음 종료시키면 되겠지만

루트 권한이 없으면 안될것으로 보이네요
Gradler (109,780 포인트) 님이 2015년 4월 7일 답변
PID는 알아내어 android.os.Process.SIGNAL_KILL 명령을 주었습니다만 프로세스종료는 onstop까지 실행하지 onDestory까지 가지않습니다. 프로세스를 종료시켜도 다시 onCreate로 넘어가더군요.  PendingIntent를 사용하는 것은 또 어떨까요?
0 추천
현재 OS에 실행중인 모든 activity를 다 가져와서 finish() 함수로 해당 앱의 activity를 다 종료 시키는 방식으로 하면 될거 같다는 생각에 답변 달았었는뎀,,

안되나요?
이드로이드 (22,930 포인트) 님이 2015년 4월 7일 답변
왠지 될거라 생각했는데, 안되나 보네요~
os에 실행중인 Activity는 무조건 맨위에 있는 액티비티뿐입니다. 나머지는 멈춰있지요. OS에 접근하려면 위의 아무거나냐님 말씀처럼 루트권한이 필요합니다. 루팅해서 권한을 얻어오지 못하면 할 수 없다는 것이지요.
...