2011-03-25 5 views
0

는,이 같은 서비스를 시작합니다내 서비스를 중지하면 전경 활동이 중단되는 이유는 무엇입니까? 내 응용 프로그램의 주요 활동에

사용자가 버튼을 누르면
Intent i = new Intent(this, MyService.class); 
startService(i); 

, 나는이 같은 서비스를 중지 :

Intent i = new Intent(this, MyService.class); 
stopService(i); 

내가 이렇게 전경을 전화를 걸고있는 활동이 사라지고 사라집니다.

서비스가 별도의 프로세스에서 실행되어야한다고 생각하여 매니페스트의 서비스에서 android : process = ": remote"설정을 시도했지만 그 행동을 변경하지 않았습니다.

전체 앱을 종료하지 않고 서비스를 중지 할 수없는 것으로 보입니다. 이 문제를 해결할 방법이 있습니까?

+0

이것은 정상적인 동작이 아닙니다. ddms를 시작하고 버그를 다시 만들고 로그를 게시하십시오. –

답변

0

더 나은 해답을 제공하기 위해 더 많은 정보를 필요로하지 않습니다. 내 서비스의들의 OnDestroy() 메소드에서는,이 같은 방송 수신기를 비활성화되었습니다

PackageManager pacman = getPackageManager(); 
pacman.setComponentEnabledSetting(
    new ComponentName(this, MyReceiver.class), 
    PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 
    0); 

이 코드의 AndroidManifest.xml에 정의 된 방송 수신기를 사용하지 않습니다. 마지막 인수 인 0은 DONT_KILL_APP로 설정되어 있어야합니다. 이 코드를 변경하여 문제를 해결했습니다.

PackageManager pacman = getPackageManager(); 
pacman.setComponentEnabledSetting(
    new ComponentName(this, MyReceiver.class), 
    PackageManager.COMPONENT_ENABLED_STATE_DISABLED, 
    PackageManager.DONT_KILL_APP); 
0

로그가 없으면 확실하게 알 수는 없지만 앱에서 예외가 발생하고 잠시 멈추거나 닫히는 이상한 경로가 있거나 finish이라는 이상한 경로가 있습니다. 어떤 경우

은 당신이 설명한 것을 예상하지만 우리는 응용 프로그램이 죽는 이유를 내가 알아 낸

+0

좋은 제안이지만 침묵하는 catch 블록과 부적절한 finish() 호출을 확인했지만 아무 것도 발견하지 못했습니다. –

관련 문제