2012-06-04 2 views
2

ActivityService과 같은 두 개의 응용 프로그램이 있습니다. 나는 ServiceActivity에서 시작합니다. 내가 활동을 종료하면 멈추지 만 완전히 멈추지 않고 백그라운드에서 실행됩니다 (Settings->ManageApplications 메뉴에서 볼 수 있음). 그래서 응용 프로그램을 완전히 종료하는 onDestroy() 함수에서 android.os.Process.killProcess(android.os.Process.myPid())을 사용했습니다. 그러나 문제는, 내 activity.i 또한 아래 라인을 사용하여 시도에서가 시작된 이후 그것은 또한 내 서비스를 중지하는 것이다른 응용 프로그램에서 한 응용 프로그램의 상태 가져 오기

ActivityManager activityManager = (ActivityManager)this.getSystemService(Context.ACTIVITY_SERVICE); 
     activityManager.killBackgroundProcesses(this.getApplication().getPackageName()); 

입니다하지만 여전히 문서에서 말했듯이는 동료 프로세스를 중지하기 때문에 내 서비스를 중지 . 내 질문은 어떻게 내 서비스를 죽이지 않고 내 활동을 완전히 끝낼 수 있는지입니다. 고맙습니다.


시나리오는 두 어플리케이션 '은'& 'B'가 있다고 가정. 응용 프로그램 'a'를 finish() 호출을 사용하여 중지하면 'a'가 성공적으로 닫힙니다. 이제 'b'에서 'a'의 상태를 runningProcessInfo 호출을 사용하여 확인하고 그 응용 프로그램 'a'가 백그라운드에서 실행 중임을 확인할 수 있습니다.

+0

다운로드 탭 또는 실행 탭에서 설정 -> 응용 프로그램 -> 응용 프로그램 관리에서 응용 프로그램을 볼 수 있습니다 –

+0

일부 코드 태그를 사용하십시오 ... –

답변

6

제 질문은 어떻게하면 내 서비스를 죽이지 않고도 내 활동을 완전히 종료 할 수 있다는 것입니다.

finish()은 사용자가 BACK (기본값)을 누르면 자동으로 발생합니다. 내가 멈출 활동을 종료하지만 완전히 백그라운드에서 실행 중지지고 있지 않은 경우

응용 프로그램이 활동하지 않습니다 (설정 ->들을 관리 할 메뉴에서 볼 수있다). 응용 프로그램은 구성 요소의 모음입니다. 귀하의 경우 귀하의 신청서는 귀하의 질문에있는 정보에 따라 적어도 하나의 활동과 하나 이상의 서비스로 구성됩니다.

그래서 응용 프로그램을 완전히 종료하는 onDestroy() 함수에서 "android.os.Process.killProcess (android.os.Process.myPid())"를 사용했습니다.

금지하지 마세요.

+0

호출 finish() 메서드가 onDestroy)? –

+1

@TalKanel :'finish()'는 밀리 초 내에'onDestroy()'로 이어져야합니다. – CommonsWare

+1

@CommonsWare 고맙습니다. 마무리 함수를 호출하고 onDestroy 함수를 호출합니다. 하지만 그건 내 응용 프로그램을 완전히 멈추지 않는다는 것입니다. "RunningAppProcessInfo"를 사용하여 찾을 수 있습니다. 그것은 내 응용 프로그램이 백그라운드에서 실행 중임을 알립니다. 내 응용 프로그램이 백그라운드에서 실행되는 것을 원하지 않습니다. 나중에 응용 프로그램 상태에 따라 결정하기 때문입니다. 그렇다면 백그라운드에서 실행하지 않고 어떻게 응용 프로그램을 멈출 수 있습니까? –

관련 문제