2011-10-04 3 views
0

Android OS에서 서비스의 onDestroy 메소드를 강제로 호출 할 수있는 방법이 있습니까?서비스의 onDestroy 메소드를 강제하는 방법

좋아, 수동으로하는 방법을 찾은 것 같아. 나는 생각 (원격 서비스가 가장 좋은 응용 프로그램 디자인 케이스가 아니기 때문에, 디버깅 목적으로 만) 당신은 원격으로 서비스를 선언하는 경우 :

<service android:name="widget.SomeWidget" 
     android:process=":remote" /> 

그리고 다음 DDMS 장치 방금 리모컨을 중지 할 수 있습니다 개요 서비스. 나는 안드로이드 OS로 프로세스를 죽이는 것과 같은 효과가 있다고 생각한다. 로그 캣에서

결과 :

INFO/ActivityManager(38): Process asd.asd.asd:remote (pid 4104) has died. 
INFO/ActivityManager(38): Start proc asd.asd.asd:remote for service asd.asd.asd/widget.SomeWidget: pid=4230 uid=10028 gids={3003, 1015} 
+0

예, 서비스를 중지하는 방법이 서비스 –

답변

1

당신에 의해 제어되지 않는 서비스를 죽이는 OS 후 약간의 시간이 호출 될 예정됩니다. 당신이 할 수있는 최선은 콜 Context.stopService이다()
가 가장 가까운 해결 방법은 이런 식으로 뭔가를 시도하는 것입니다 : PROCESSID 당신이 죽이고 싶어 프로세스의 PID입니다

Runtime.getRuntime().exec("kill "+processId); 

. 이를 위해 뿌리 전화가 필요합니다.

+0

나는 이것이 내가 필요한 것이라고 생각한다. –

0

통화 Context.stopService()이 서비스 내부에서 서비스 또는 stopSelf()를 중지합니다.

+0

을 중지하도록 운영 체제를 만드는 것이 가장 좋지만 서비스를 죽이기 위해 OS를 시뮬레이트해야합니다 (그러면 onDestroy 메서드를 호출해야합니다) –

+0

정확히 이것을해야하는 이유는 무엇입니까? 테스트를하고 계십니까? – brianestey

+0

예, 테스트 목적으로 만 사용합니다. –

0

서비스 바인더 인터페이스를 통해 정리 작업을 처리하는 yourOwnDestroy() 메서드를 호출하는 것이 더 바람직합니다. onDestroy()에 의존하는 것은 좋지 않습니다.

onDestroy()

unbindService()stopService()

관련 문제