BroadcastReceiver
에서 네트워크 작업을 수행하고 있습니다. 이 작업은 백그라운드에서 수행되며이 경우 앱이 실행되지 않습니다.백그라운드에서 네트워크 작업을 수행하려면 무엇을 사용해야합니까?
어느 것이 더 사용 하시겠습니까? Service
또는 AsyncTask
?
BroadcastReceiver
에서 네트워크 작업을 수행하고 있습니다. 이 작업은 백그라운드에서 수행되며이 경우 앱이 실행되지 않습니다.백그라운드에서 네트워크 작업을 수행하려면 무엇을 사용해야합니까?
어느 것이 더 사용 하시겠습니까? Service
또는 AsyncTask
?
BroadcastReceiver
개체는 onReceive() 호출 기간 동안 만 유효합니다. 이 함수에서 코드가 반환되면 시스템은 객체가 완료되고 더 이상 활성화되지 않은 것으로 간주합니다. 따라서 여기서 AsyncTask
또는 Thread
을 사용하는 것이 좋습니다. documentation에서 또한
: 특히
이 브로드 캐스트 리시버가, 당신이 브로드 캐스트 리시버 내에서 서비스에 대한 대화 또는 바인드가 표시되지 않을 수 있습니다.
<receiver>
태그를 통해 출시 된 경우
, 그 객체는이 함수에서 반환 후 더 이상 살아 없습니다. 즉, 결과를 비동기 적으로 반환하는 작업을 수행하면 안됩니다. 특히 서비스와 상호 작용하는 경우에는
bindService()
대신startService()
을 사용해야합니다. 이미 실행중인 서비스와 상호 작용하려면, 당신은peekService()
을 사용할 수 있습니다 이것이 의미하는 것은 당신이 당신의 방송 RCVR에서 할 수 startService()
는 의도를 통해 네트워크 운영에 필요한 데이터를 전달합니다. 서비스가 네트워크 작업을 수행합니다. 서비스가 끈적 거리면 peekService()
을 사용할 수 있습니다. 그러나 결코 당신을 방송 rcvr에 bindService()
해야합니까.
더 관련있는 인용문은'이것은 장기 실행 작업의 경우 BroadcastReceiver와 함께 서비스를 사용하여 작업 과정 전체에 걸쳐 포함 된 프로세스를 활성화 상태로 유지한다는 것을 의미합니다. ' –
흠, 나는 그것을 놓쳤습니다. 'registerReceiver()'를 사용하여 의미합니까? – Reno
실제로는 BroadcastReceiver에서 서비스를 시작하여 가능한 빨리 수신기를 반환해야합니다. 인 텐트를 통해 서비스에 데이터를 전달할 수 있습니다. –
서비스를 개선하십시오. AsyncTask는 주로 UI를 차단하지 않습니다.
중복 가능한 [Android : AsyncTask vs Service] (http://stackoverflow.com/questions/6957775/android-asynctask-vs-service) –
중복 될 수 있다고 주장하고 싶습니다. 사용할 때 특별한 고려 사항이 있습니다. BroadcastReceiver. 이 특별한 경우에는 서비스를 사용해야합니다. –