2012-06-08 1 views
0

지금은 데스크톱에서 서버를 실행하고 있습니다. 내 앱을 시작하고이 서버에서 데이터를 수집하기 위해 버튼을 누르기를 원한다면 버튼을 다시 누르면 멈출 수 있기를 원합니다. 앱이 활성화되어 있지 않아도 사용자는 버튼을 누른 후 항상이 서버에서 데이터를 가져와야합니다. 지금까지 서비스를 설정하거나 스레드를 사용하는 방법을 고려했습니다.긴 네트워크 연결을 위해 서비스 사용

서비스는 내가 원하는 것과 똑같은 소리로 들리지만 긴 네트워크 연결을 유지하기위한 것이 아닙니다. 내가 BluetoothChat 샘플 응용 프로그램을 통해 찌르고 그것은 서비스를 사용하지 않았다. 서비스가 그때 사용하는 것이 옳은가, 아니면 샘플 애플리케이션과 같은 쓰레드로 구현해야 하는가? 긴 연결이 필요한 유일한 이유는 서버에서 오류 보고서를 수신하는 것입니다. 다른 네트워크 물건은 사용자가 앱을 직접 사용하는 경우에만 발생합니다. 어쨌든 서비스는 호출하는 활동과 동일한 스레드에서 실행되기 때문에 어쨌든 스레드를 사용해야 할 것입니다.하지만 서비스의 일부를 스크랩해야하는지 여부는 중요한 질문입니다. 지금은 기본 서비스를 설정하여 메시지를 처리 ​​할 수 ​​있으며 실제로 사용하기 쉽습니다. 그것에 관한 문서는 그 곳곳에 있습니다. "X를하고 싶다면이게 좋습니다!"라고 말하는 섹션이 필요합니다.

답변

1

서비스는 UI 스레드에서 실행되지만 IntentService는 자체 스레드에서 실행됩니다.

"앱"이 활성화되어 있지 않다는 것은 모호합니다. 서비스를 실행중인 경우 항상 활성 상태입니다. IntentService는 onHandleIntent() 메소드에서 작업을 마치면 활성화됩니다. 앱의 모든 활동이 활성화되지 않을 수 있습니다. 즉, 앱이 백그라운드에 있음을 의미합니다.

그 외에도 내가하려는 일에 대해 더 알고 싶습니다. 일반적으로 연결을 끊임없이 열어두기보다는 주기적으로 데이터를 수집하는 것이 좋습니다. 예를 들어, 장치의 인터넷 연결이 끊어지면 어떻게합니까?

+0

컴퓨터에서 수집 할 데이터를 스트리밍합니다. 장치가 인터넷에 연결이 끊어지면 스트리밍은 연결이 다시 복원 될 때까지 일시적으로 중지됩니다. IntentService를 조사하여 내가 필요한 것인지 확인합니다. –

관련 문제