2015-01-22 3 views
1

서비스를 생성했으며이 서비스가 항상 실행되기를 원합니다. 하지만 서비스를 만든 응용 프로그램을 닫으면 Android가 서비스를 제거한 다음 다시 시작합니다. 다음서비스를 다시 시작하지 않으려면 어떻게해야합니까?

내 응용 프로그램의 서비스가 MainActivity의 버튼을 누르면 생성된다

startService(new Intent(getApplicationContext(), MyService.class)); 

로그 캣 :

11월 1일부터 22일까지 : 44 : 52.242 1218년부터 1389년까지/system_process I/ActivityManager : 살인 2040 : com.my.application/u0a10046 : 작업 제거 01-22 11 : 44 : 52.252 1218-1218/system_process W/ActivityManager : 예약 다시 시작 crashed service com.my.application/.MyService in 5000ms 01-22 11 : 44 : 57.272 2061-2061 /? D/dalvikvm : 늦게 사용 가능하지 않음 CheckJNI (이미 설정 됨) 01-22 11 : 44 : 57.272 1218-1235/system_process I/ActivityManager : 서비스 용으로 proc com.my.application 시작 com.my.application/.MyService : 다음과 같이 "START_NOT_STICKY를 돌려"추가 PID = 2061 UID = 10046 GID를의 = {50046, 1028} 귀하의 서비스 클래스에서

답변

1

:

START_NOT_STICKY의 의미가합니다 (에 언급되어

public int onStartCommand(Intent intent, int flags, int startId) { 
    // your code ... 
    return START_NOT_STICKY; 
} 
Service.java의 java doc) :

onStartCommand (Intent, int, int)에서 반환 할 상수 :이 서비스의 프로세스가 시작될 때 (onStartCommand (Intent, int, int)에서 돌아온 후) 프로세스가 종료되고 전달할 새 시작 인 텐트가없는 경우 그런 다음 서비스를 시작한 상태에서 벗어나서 beginService() 에 대한 명시 적 호출이있을 때까지 을 다시 생성하지 마십시오. 전달할 보류중인 인 텐트가없는 경우 서비스가 다시 시작되지 않으므로 서비스는 null 의도로 onStartCommand (Intent, int, int) 호출을 수신하지 않습니다.

+0

답장을 보내 주셔서 감사합니다. 하지만 앱을 종료 한 후 서비스를 중지하지 못하게하는 방법을 의미 했습니까? – Mixer

+0

질문에 대한 오해로 사과드립니다.사용자에게 서비스가 허용되었다는 사실을 알리면 서비스 클래스에서 startForeground()를 사용할 수 있다고 생각합니다. 일부 음악 플레이어 –

+0

처럼 이미 생각했습니다. 하지만이 경우 게시 된 알림 창. 그리고 나는 그것을 필요로하지 않는다. – Mixer

0

여러 Android 버전에서 동작이 여러 번 변경되었습니다. 경우에 따라 Android가 Service을 (를) 죽이는 것을 방지 할 수 없습니다. 일부 Android 버전에서는 Service을 별도의 프로세스에 넣으면 도움이 될 수 있습니다. 일반적으로 최근 작업 목록에서 앱을 스 와이프하면 Android가 활동을 호스팅하는 프로세스를 종료하지만 프로세스를 그대로두고 Service. 이를 수행하려면 매니페스트의 <service> 선언에

android:process=":service" 

을 추가하십시오.

이제 2 개의 프로세스가 실행 중이므로 일부 작업이 더 복잡해집니다. 사용자 정의 Application 클래스가있는 경우, 그 인스턴스가 각 프로세스에 작성됩니다. static 변수를 사용하는 경우 프로세스간에 공유되지 않습니다. 당신이 무슨 일이 일어나고 있는지 이해하지 못한다면 인생을 비참하게 만들 수 있습니다.

관련 문제