2014-05-17 3 views
3

서비스를 시작하는 활동이 있습니다. 홈 화면으로 나가고 최근 앱 목록에서 수동으로 활동을 닫으면 onCreate가 다시 호출됩니다. 활동이 파괴 될 때Android onCreate Activity onDestroy가 호출 될 때 호출되는 서비스

그래서에서 onCreate는 내가 다시 호출 할 수있는 서비스에서 onCreate를 원하지 않는

(서비스 활동에서 호출 된 시간들의 OnDestroy에서 실행에도 불구하고) 다시 호출한다. 나는 그것의 가능한 중복을 안다 : Android service onCreate is called multiple times without calling onDestroy 그러나 다른 프로세스에서 서비스를하는 것이 제안 된 해결책은 (적어도 안드로이드 4.4 킷 캣에) 작동하지 않는다. (적어도 안드로이드 4.4 키트 캣)

어떤 제안이 있나?

+0

설명하는 다소 비슷한 문제에 대한 AOSP 버그 보고서를 확인 했습니까? 즉 https://code.google.com/p/android/issues/detail?id=63618? 서비스가 다시 시작되지만 어쩌면이 문제를 해결할 수있는 아이디어가있을 수도 있습니다. – harism

+0

최근 앱 목록에 홈 키가 눌러져 있고 휴대 전화의 구현에 활동 옵션이 ​​없습니다. – danny117

답변

3

"최근 사용한 응용 프로그램"목록에서 응용 프로그램을 종료하면 강제로 서비스가 종료되기 때문입니다. 다시 시작하지 않으려면 두 가지 방법이 있습니다. 별로 좋지 않은 방법은 Android Manifest의 활동과 다른 프로세스에 서비스를 배치하는 것입니다. 예를 들어

:

<activity ... 
    process:"com.example.activity.process" /> 
<service ... 
    process:"com.example.service.process" /> 

그래서 서비스도 죽이고 다시 시작되지 않습니다 응용 프로그램을 죽이는시. 이 방법으로 이동하면 안드로이드가 서비스를 종료합니다.

더 정확한 방법은 onStartCommand() 방법을 사용하는 것입니다.

은 단순히 당신의 서비스에 다음 코드를 추가합니다 :

@Override 
public int onStartCommand(Intent intent, int flags, int startID) { 
    return START_NOT_STICKY; 
} 

이 제대로 호출되지 않습니다 onDestroy() 즉 종료하면 다시 시작되는 서비스를 방지 할 수 있습니다.