2012-01-09 3 views
6

내 응용 프로그램에서 ActivityManager.killBackgroundProcesses를 실험하고 재미있는 것을 알았습니다. 나는 stackoverflow에 누군가가 이것에 대한 약간의 비춰 줄 수 있기를 바랍니다.ActivityManager.killBackgroundProcesses가 "강제 종료"와 다릅니다

그래서 예를 들어, youtube와 같은 응용 프로그램을 시작하면 먼저 비디오 페이지 목록을 본 다음 메뉴 -> 설정을 클릭하면 설정 페이지가 나타납니다. 이제 홈 버튼을 클릭하면 배경에 YouTube가 놓이게됩니다. 여태까지는 그런대로 잘됐다. 이제 ActivityManager.killBackgroundProcesses를 실행하여 YouTube 애플리케이션을 종료하거나 동일한 API를 사용한다고 생각되는 Advanced Task killer를 사용하고 YouTube를 다시 시작하면 설정 페이지가 표시되고 비디오 페이지의 기본 목록은 표시되지 않습니다.

ActivityManager.killBackgroundProcesses를 수행하는 대신 시스템 설정 -> 응용 프로그램 관리 -> 유튜브 -> 강제 중지를 선택하고 YouTube를 다시 시작하면 설정 페이지가 아닌 비디오 페이지 목록이 표시됩니다.

ActivityManager.killBackgroundProcesses는 강제 종료와는 다른 것으로 보이지만 배경에 배치되기 전에 있던 마지막 작업/페이지를 여전히 기억하므로 강제 정지는 새로운 시작을 제공합니다.

누구든지 설명해 드릴 수 있습니까? 내 코드에서 응용 프로그램을 새로 시작하기 위해 "강제 정지"를 수행 할 수 있습니까?

감사합니다.

+0

분명히하기 위해 내가 죽이거나 다시 시작하려고하는 앱은 gmail, youtube 등과 같은 코드를 변경할 수없는 타사 앱입니다. – Safecoder

+0

Google의 기존 게시물에서 발견되었습니다. http://groups.google.com/group/android-developers/browse_thread/thread/d8fc993c54fe76e1 "Force 중지"가 restartPackage로 구현 된 것 같습니다. 2.2에서는 restartpackage가 기본적으로 제거되었으며 기본적으로 killbackgroundprocess와 같습니다. . 2.2 및 나중에 프로세스를 죽일 새 API를 사용해야합니다 추측하고 있지만 그것은 설명되어 있지 않습니다 ... – Safecoder

답변

1

글쎄, 난 나보다 다른 애플 리케이션과 함께 이전에 시도하지 못했던 것과 동일하게 사용하는 방법을 잘 모르겠지만, mayby이 도움이 될 것이다 - 사용에 대한 생각 : android.os.Process.killProcess(android.os.Process.myPid());

을 그리고 귀하의 질문에 왜 시스템이 중지 할 수 있습니다 약 당신은 할 수 없습니다. 진실은 시스템이 더 많은 것을 할 수 있다는 것입니다. 좀 더 구체적으로, 강제 종료 버튼 시스템을 누르면 주어진 PID로 처리 할 kill 신호 (신호 9)가 전송됩니다.

이것이 위와 같은 기능이 도움이 될 것이라고 생각합니다. 거의 동일하지는 않지만 신호를 보내고 있기 때문입니다.

희망이 있으면 도움이 될 것입니다.

+0

제안 주셔서 감사. 하지만 제 경우에는 도움이되지 않습니다. killProcess는 내가 소유하지 않은 응용 프로그램, 예를 들어 gmail, youtube 등을 죽이지 않습니다. 나는 그것을 시도했지만 그 응용 프로그램에는 아무런 영향을 미치지 않습니다. – Safecoder

0

Android OS 보안 시스템에 녹음하면 앱이 다른 활동을 죽일 수 없습니다. 시스템에 요청을 보내면 가능한 경우 필요한 모든 작업을 수행합니다.

설정은 시스템 응용 프로그램이므로 설정이 시스템 응용 프로그램보다 많습니다.

OS와 마찬가지로 앱을 종료 할 수 없습니다. 확실하지는 않지만 앱 permisionns를 확인하십시오. 아마도 해결책이있을 것입니다.

+0

예, 아니요. killBackgroundProcesses를 사용하면 프로세스를 닫을 수 있지만 강제 종료로 "닫기"가 아닌 것 같습니다. 그것은 이전에 중단 된 부분을 기억하는 것처럼 이전 실행에서 여전히 상태를 유지합니다. – Safecoder

+0

.killBackgroundProcesses 이후에 응용 프로그램이 "settings-> manage application"에 남아 있습니까? –

관련 문제