문제

사용자 로그인 화면이 있습니다.사용자가 로그인 버튼을 누르면 IntentService를 생성하여 나머지 서비스에 연결하고 인증 결과를 반환합니다.

이제 내가 달성하려는 기능은 다음과 같습니다.활동이 일시 중지된 경우(예:백그라운드로 이동) 인텐트 서비스는 계속 실행되어야 하며 실행됩니다.그러나 작업 관리자를 사용하여 애플리케이션을 종료하면 인텐트 서비스가 중지되어야 하지만 지금은 중지되지 않습니다.계속 실행됩니다 onHandleIntent 완료될 때까지.수동으로 전화하면 stopSelf(), onDestroy() 호출되지만 onHandleIntent 메소드가 계속 실행됩니다.어떻게 강제로 onHandleIntent 그만하다?"return" 호출은 한 번의 나머지 메서드 호출로 처리될 수 있으므로 옵션이 아닙니다.

이 기능을 위해 인텐트 서비스를 사용해야 합니까, 아니면 다른 것(예: 서비스 또는 asynctask)을 사용해야 합니까?

도움이 되었습니까?

해결책

먼저, 앱이 포그라운드에서 실행되는 동안 서비스가 원하는 작업을 수행하는 경우 서비스가 필요하지 않습니다.활동이나 대화는 작업을 수행하기 위해 스레드를 생성할 수 있으며, 이러한 스레드는 앱의 작업 범위 내에 있으므로 앱이 종료되면 종료됩니다.그렇지 않으면 항상 수행하려는 작업의 경우 사용자가 장치에서 무엇이든 할 수 있을 때 반드시 서비스를 사용하십시오.

왜 "반환 호출"이 옵션이 아닌지 잘 모르겠습니다.이는 조건을 확인하고 조건이 충족되면 루프나 블록을 종료한다는 뜻이라고 가정합니다.이것은 일반적으로 스레드(서비스 또는 다른 곳에서)가 종료되어야 하는 방식입니다(다른 방법도 있지만). 구혼).서비스 스레드는 발생한 특정 이벤트(예: 활동이 소멸된 경우, 활동이 종료될 때 파일이나 데이터베이스에 속성을 설정하여)를 수신할 수 있습니다. onDestroy 호출되지만 이것이 원하는 것이라면 아마도 서비스를 사용해서는 안 됩니다.) 그런 다음 run() 우아하게 돌아올 수 있어요.

그러나 이것이 사용자가 자신의 기기(앱 내부 또는 외부)에서 무엇을 하든 상관없이 수행하고 싶은 작업이라면 외부에서 방해받아서는 안 되는 작업이어야 합니다.끝날 때까지 계속되어야 합니다.

이 서비스를 언제 중지할지 더 잘 정의할 수 있다면 어떨까요?

다른 팁

onDestroy() 메소드에서 멈춤

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top