2013-07-30 3 views
2

연속/시간별 서버 업데이트에 가장 적합한 것은 어느 것입니까?Android : Looper vs AlarmManager

일부 개발자는 AlarmManager 뒤에 PendingIntent를 사용하고 일부는 Looper with Handler를 사용합니다.

아무도 나에게 지속적인 네트워크 업데이트에 가장 적합한 이유를 설명해주십시오.

답변

1

연속/시간별 서버 업데이트에 가장 적합한 것은 어느 것입니까?

이의 당신이 지금부터 15 분 핸들러를 통해 Runnable을 예약하는 가정 해 봅시다 : 앱이 그 시간에 배경/전경에서 실행한다고 가정하면

가 달려있다.
사용자가 실행중인 모든 활동을 "닫을"경우 메모리를 확보하기 위해 어느 정도 포 그라운드 서비스/활동을 실행하지 않으면 시스템이 프로세스를 종료합니다. 이 경우 을 입력하면 Runnable이 실행되지 않습니다.
사용자가 앱에서 다른 곳으로 이동할 때도 서버 업데이트를 계속 폴링하려는 경우 -이 옵션은 분명히 좋지 않습니다. 당신이 그런 식으로 서버를 업데이트하도록 선택하는 경우 - 적어도 사용자가 한 스크린에서 다른 스크린으로 이동할 때 당신의 핸들러 참조도 할당 된 상태로 유지됩니다 그런 식으로 상황에 시작된 Service에서 그것을 할 ...

를 반면에 - 제공 계류중인 의도가 AlarmManager 일 경우 처리가 살아 있는지 여부를 보장하지 않습니다. AlarmManager에 제공된 의도는 계류중인 의도와 함께 제공 한 앱 (및 서비스/활동/방송)을 깨울 것입니다. - 귀하의 질문에 대한

나는 두의 것도 서버 업데이트를 얻을 수있는 좋은 해결책이 없다고 생각한다

사용자가 아마 10 ~ 20 응용 프로그램 (페이스 북/트위터/Whattsap/Viber/구글 +이를 ... .) 자신의 장치에 설치된 서버에서 업데이 트를 받고. 서로 다른 시간 간격으로 각자가 깨어나고 인터넷 연결이 열리 며 소중한 배터리 수명과 대역폭을 소모합니다. 그건 미친 짓이야! 귀하의 장치는 "절전"되지 않으며, 모든 프로세스가 항상 열립니다, 인터넷 셀룰러 라디오 전송도. 배터리가 0 %로 매우 빠르게 부자가 될 것입니다!

오른쪽은 GCM API를 사용하는 것입니다. 또한 서버 측 구현이 필요하지만 일반적인 아이디어는 새 데이터가 서버 측에 전달 될 때 애플리케이션을 깨우는 책임이 있으며 그로 인해 안드로이드 애플리케이션은 업데이트를 폴링 할 필요가 없다는 것입니다. 서버가 사용자에게 통지했을 때 알림이 표시됩니다 (프로세스가 작동하지 않으면 절전 모드로 전환됩니다). 당신이 궁금합니다 경우 -이 작동하는 방법입니다 - 당신이 그것에 대해 읽을 수 How does push notification technology work on Android?

I 조언 - 좋은 조언을 http://developer.android.com/google/gcm/index.html

+0

1. 좋은 설명과 나 또한 많은 개발자에게 매우 유용합니다. 하지만 왜 내가 항상 GCM (Google Cloud Messaging)을 선호하는지 이해하도록 도와 줄 수 있습니까? 그리고 이것이 서버에 데이터를 시간에 따라 보내고받는 데 어떻게 도움이되는지 (예 : GPS 추적 앱은 항상 그런 종류의 일을해야합니다). 이 작업을 위해 힘든 새로운 것을 사용하기에 완벽한 결정입니까? 또는 이전 버전 (AlalamManager/Looper)을 계속 사용합니다. – Ranjit

+0

Ok .. 업데이트 된 서버 데이터가 필요할 때 좋습니다. 즉 서버가 새로운 데이터를 발견하면 즉각적으로 클라이언트에 전달합니다. 벌금.하지만 클라이언트는 어떻습니까 (그 반대)? 연속적인 업데이트 된 데이터 (예 : 위도, 경도)를 서버에 보내는 방법. – Ranjit

+0

나는 그것이 왜 더 나은지 정확히 설명했다. 당신은 당신의 질문에서 반대 방향 (서버로 현재 위치 보내기)에 관해 언급하지 않았습니다. 어쨌든 - 위치가 변경되었을 때 서버 정보를 보내려면 앞서 언급 한 이유 때문에 신중하게해야합니다. "Handlers 대 AlarmManager 사용"질문은 관련이 없습니다. Google 모범 사례를 사용하는 경우 명시 적으로 위치 수신기 콜백을 설정하거나 대기중인 인 텐트를 제공해야하기 때문입니다. 여기 처리기 –