2014-04-17 2 views
2

많은 정보를 보유하고있는 Azure에 외부 데이터베이스가 있습니다. 내 앱은이 데이터 중 일부를 동기화하고 앱의 데이터베이스에 로컬로 저장할 수 있어야합니다. 현재 웹 서비스를 사용하여 데이터베이스를 호출합니다. 앱을 처음 시작하면 다운로드해야하는 많은 양의 데이터가 생성됩니다. 외부 데이터베이스에서 많은 수의 행을 다운로드하는 가장 효율적인 방법은 무엇입니까? XML 파일이 가장 좋은 방법이라고 생각했지만 확실하지 않습니다. 다운로드가 필요한 수천 개의 행이있을 수 있으므로 어느 방법이 가장 적합할지 모르겠습니다.많은 양의 데이터를 안드로이드에 다운로드하는 가장 효율적인 방법은 무엇입니까?

답변

1

가 외설 사용자에게 진행률 표시 줄을 표시하는 데이터베이스의 데이터를 저장할 수 다운로드해야 데이터를 다운로드하는 방법은 300 가지가 아니므로 기본적으로 API를 호출하고 데이터를 가져와야합니다. 분명한 성능상의 이유로 XML을 피하고 대신 JSON을 선호합니다. 따라서 일단 JSON 파일을 얻은 후에는이를 파싱하여 로케일 데이터베이스에 저장하십시오. 나는 또한 당신이 방대한 양의 데이터를 다운로드 할 것이라는 것을 사용자에게 경고하는 것을 잊지 말고 방해받지 않도록 서비스를 사용할 것을 제안합니다.)

다운로드 된 데이터의 양을 최소화하지 않으려면, 예를 들어 JSON 파일을 온라인으로 변경되지 않는 모든 "정적"항목을 포함하는 에셋에 저장할 수 있습니다.

+0

감사합니다. XML을 사용하려고했지만 JSON을 대신 사용해 보겠습니다. –

+0

반갑습니다. 제 생각에는 JSON은 XML보다는 네트워크를 통해 객체를 전송하는 것이 더 적절합니다. 가볍고 객체로 파싱하는 것이 더 간단하며 자동으로 구문 분석 할 수있는 매우 효율적인 라이브러리가 있습니다. 아키텍처를 원할 경우 Java REST API를 원할 경우 Android에서 구문 분석을 위해 Jackson을, Jersey에서 Java 구문을 살펴볼 수 있습니다. 행운을 빕니다 ;) – tanou

0

나는 일을 어떤 종류의 service으로 내릴 것이다. 서비스는 응용 프로그램과 상호 작용하지 않고 백그라운드에서 실행되는 이점이 있습니다. 이 작업을 수행하려면 다른 스레드를 만들어야합니다. 다운로드가 끝나면 단순히 파괴됩니다.

+0

죄송합니다. 제 질문에 대해 오해 하셨을 것 같습니다. 데이터의 실제 다운로드 방법에 대해 묻습니다. 앱 구조가 아닙니다. 이미 정렬되어 있습니다. 앱의 일상적인 동기화를 위해 백그라운드 서비스를 사용하고 있습니다.하지만 앱이 처음 시작될 때 데이터가 없으며 ** 필수 데이터를 주 서버에서 다운로드해야합니다 ** 진행하기 전에 초기 동기화는 활동 내부의 백그라운드 스레드에서 수행됩니다. –

+0

아, 알겠습니다. 데이터를 파일로, HTTP 요청과 함께 JSON/XML로 전송할 수 있으며, 중단 한 지점에서 다시 시작할 수있는 지점에서 네트워크 오류가있는 경우 청크로 가져올 수 있습니다. – KennyC

0

데이터 어쨌든 당신이 사용하는 어떤 방법, 어쩌면 당신이 그것을 처음 다운로드, XML 파일로 초기 데이터를 준비하고

관련 문제