브로드 캐스트 리시버에서 asynctask를 시작하는 것이 나쁜 습관으로 간주되는지 알고 싶습니까? 기본적으로 Google의 C2DM 서버에 등록한 다음 등록 된 브로드 캐스트 수신자를 차단하면 내 서버로 보내려고합니다.브로드 캐스트 리시버에서 asynctask를 시작하는 중
이 작업을 수행하는 가장 좋은 방법은 무엇입니까?
브로드 캐스트 리시버에서 asynctask를 시작하는 것이 나쁜 습관으로 간주되는지 알고 싶습니까? 기본적으로 Google의 C2DM 서버에 등록한 다음 등록 된 브로드 캐스트 수신자를 차단하면 내 서버로 보내려고합니다.브로드 캐스트 리시버에서 asynctask를 시작하는 중
이 작업을 수행하는 가장 좋은 방법은 무엇입니까?
예, 이는 잘못된 행동으로 간주됩니다. onReceive()
이 반환되고 실행중인 다른 활성 구성 요소가없는 경우 AsyncTask
을 BroadcastReceiver
에서 시작하면 Android가 프로세스를 중단시킬 수 있기 때문입니다.
올바른 방법은 Service
을 BroadcastReceiver
에서 시작하는 것입니다. 그리고이 Service
은 AsyncTask
을 관리해야합니다. 이런 식으로 안드로이드는 활성 구성 요소에 대해 인식하고 안드로이드는 조기에 그것을 죽이지 않을 것입니다 (메모리 조건이 충분하지 않은 다른 중요한 조건이 발생하지 않는 한).
@inazruk 감사합니다. – Hades
비동기 작업에서 응용 프로그램 컨텍스트에 대한 참조가 있다면 어떻게됩니까? onReceive()가 돌아 오면 시스템이 프로세스를 죽일 수 있습니까? – 500865
프로세스가 죽을 확률은이 프로세스 내부의 내용을 누가 참조했는지와는 완전히 관련이 없습니다. 살해 될 확률은 현재 진행중인 구성 요소와 수명주기의 단계에 따라 크게 달라집니다. – inazaruk