2017-12-11 10 views
2

MVP를 사용합니다. 큰 파일 (크기가 20MB 인 파일)을 다운로드한다고 가정합니다.MVP 대용량 파일을 다운로드하는 올바른 해결책

여기에 옵션 : 발표자 모델 서비스에

  • 파일 다운로드 다른
  • 뭔가
  • 가장 좋은 방법은 무엇입니까에서

  • 파일 다운로드에

    1. 파일 다운로드?

      P. 활동은 언제든지 파괴 될 수 있습니다. 예 : 화면을 회전시킬 때.

  • +2

    표준 DownloadManager가 가장 적합합니다. 모델 또는 발표자의 IntentService/JobScheduler –

    +0

    에서 파일을 다운로드하면 작업을 계속 다운로드 할 수 있다고 보장 할 수 없습니다. –

    답변

    0

    유스 케이스 (모델)에서 호출되는 저장소에서 파일을 다운로드하는 것이 좋습니다.

    사용 사례는 표현 자와 비동기 적으로 호출되어야하며 콜백을 통해 결과가 반환되고 뷰가 삭제되지 않은 경우 뷰가 업데이트됩니다.

    하지만 모든 데이터는 저장소 (API 호출, 파일의 데이터, GPS 위치 데이터 등)에로드해야합니다. 이렇게하면 모델과 발표자가 데이터가로드되는 방법이나 위치에 의존하지 않으므로 데이터의 출처가 변경되면 변경해서는 안됩니다.

    아마도 가장 좋은 솔루션 인 DownloadManager를 사용하기로 결정한 경우 플랫폼에 독립적이며 안드로이드 코드가 없어야하기 때문에 코드는 발표자, 모델 및 저장소 외부에 있어야한다고 생각합니다. 이 방법으로이 파일에 대한 단위 테스트를 수행하는 것이 더 쉽습니다.

    +0

    다운로드 파일 용 모델을 사용하고 있지만 활동이 파괴되면 (예 : 화면 회전). 모델은 활동 재창조에서 살아남을 수 있습니까? – Alex

    +0

    예, 사용자가 화면 회전을 수행하거나 작업/조각이 일시 중지 된 경우 대거, 모델 및 발표자를 사용하여 수행하는 방식은 손상되지 않습니다. 당신이 찾을 수있는 모든 mvp 샘플 코드가이 방법으로 작동 할 것입니다. – jeprubio

    +0

    그리고 뷰가 파기되면 발표자는 이벤트를 받지만 저장소 작업을 취소하지 않습니다. 원하는 경우 저장소 사용을 취소하기 위해 호출하지 않는 한. – jeprubio