Android에서 동시에 여러 파일을 다운로드하는 방법

알렉산더

나는 활동이 있고 두 개의 목록보기가 있습니다. 첫 번째 목록보기에는 음악이 있습니다. 두 번째 목록보기는 다운로드 항목을 표시하고 각 다운로드 항목은 다운로드 비율에 대한 진행률 표시 줄을 표시합니다. 사용자가 음악 항목을 클릭하면 두 번째 목록보기에 다운로드 항목을 추가하고 AsyncTask로 파일 다운로드를 시작합니다. 사용자는 하나 이상의 음악을 클릭 할 수 있으며 이는 여러 파일을 동시에 다운로드하는 것을 의미합니다. AsyncTask로 파일을 다운로드 할 수 있습니다. 하지만 서비스중인 파일을 다운로드하고 싶은데 앱을 닫아도 다운로드가 계속되어야하기 때문입니다.

서비스와 동시에 여러 파일을 다운로드 할 수있는 방법을 모르겠습니다. 어떤 단계를 따라야합니까? 이것에 대한 튜토리얼이 있습니까?

아누 라그 싱

내 프로덕션 앱 중 하나에서 동일하게 구현했습니다.

  1. 다운로드 할 항목을 추가 할 테이블을 만듭니다. 다운로드를 위해 항목이 추가 된 시간을 기준으로 정렬해야합니다. 이것을 대기열로 간주하십시오. 또한 파일이 이미 다운로드되었는지 여부를 확인하기 위해 하나의 열을 추가합니다. 다운로드 한 경우 대기열에서 제거합니다.
  2. IntentService응용 프로그램이 닫혀 있어도 백그라운드에서 데이터를 다운로드 할 책임이있는을 만듭니다 . 이것은 Service테이블 큐가 비어 있지 않을 때까지 계속 실행되어야합니다. 새 항목이 추가되거나 네트워크 연결 상태가 dead에서 live로 변경 될 때만 시작해야합니다. 이 안에서 Service큐가 비어 있는지 확인해야합니다. 비어있는 경우 테이블에서 N 개의 행을 가져 와서 ExecutorService다운로드를 위해 queue ( )에 추가 합니다. 네트워크 상태의 chnage을 확인하려면 생성 BroadcastReceiver과 함께 ‎LocalBroadcastManager.
  3. 이제 DownloadIntentService 에서 작성할 수있는 코드입니다 . 필요에 따라 수정하십시오.

    private static int NUMBER_OF_CORES =
        Runtime.getRuntime().availableProcessors() * 2;
    private final ExecutorService executorService;
    private final ExecutorCompletionService<DownloadModel> executorCompletionService;
    
    public DownloadIntentService() {
    super("DownloadIntentService");
    executorService = Executors.newFixedThreadPool(NUMBER_OF_CORES);
    executorCompletionService = new ExecutorCompletionService<>(executorService);
    }
    
    ......
    @Override
    protected void onHandleIntent(Intent intent) {  
    
    //Check to see for storage permission
    if (ActivityCompat.checkSelfPermission(this,
            Manifest.permission.WRITE_EXTERNAL_STORAGE) == PackageManager.PERMISSION_GRANTED
            && ActivityCompat.checkSelfPermission(this, Manifest.permission.READ_EXTERNAL_STORAGE)
            == PackageManager.PERMISSION_GRANTED) {
     .....
     //Now create job queue
     ....
    //Fetch rows to download from table
    DownloadQuery downloadQuery = new DownloadQuery(DownloadIntentService.this);
    
    ArrayList<DownloadModel> downloadModelArrayList = downloadQuery.getDownload(DownloadContract.IFileDownloadStatus.NOT_DOWNLOADED,
                0, NUMBER_OF_CORES);
    //Check if queue contains any item
    if (downloadModelArrayList.size() > 0) {
    if (!executorService.isShutdown())
                        executorCompletionService.submit(new DownloadWorkerCallable(**Your download model from table to download**, DownloadIntentService.this));
    }
    .....
    //Don't forget to shutdown the executorService
    }
    }
    

이것은 실제로 파일을 다운로드하는 DownloadWorkerCallable구현 Runnable입니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

Android에서 여러 파일을 업로드하는 방법

분류에서Dev

wget을 사용하여 다양한 링크에서 여러 파일을 다운로드하는 방법

분류에서Dev

다운로드 파일에 이름을 부여하는 방법

분류에서Dev

Windows 용 Cygwin에서 Wget을 사용하여 여러 파일을 다운로드하는 방법

분류에서Dev

Pandas에서 동시에 여러 csv 파일을 읽는 방법

분류에서Dev

Python에서 Selenium을 사용하여 드롭 다운의 각 옵션을 선택하는 사이트에서 여러 파일을 다운로드하는 방법

분류에서Dev

phpstorm을 사용하여 ftp에서 파일을 다운로드하는 방법

분류에서Dev

VBA를 사용하여 Sharepoint에서 파일을 다운로드하는 방법

분류에서Dev

R shiny에서 여러 플롯을 zip 파일로 다운로드하는 방법은 무엇입니까?

분류에서Dev

Python 요청 라이브러리를 사용하여 웹에서 PDF 파일을 다운로드하는 방법

분류에서Dev

Python 요청 라이브러리를 사용하여 웹에서 PDF 파일을 다운로드하는 방법

분류에서Dev

Android에서 파일을 다운로드하는 방법

분류에서Dev

Gradle 파일을 사용하여 Android Google Source에서 소스 코드를 다운로드하는 방법

분류에서Dev

wget으로 웹 사이트에서 여러 파일을 다운로드하고 다음 파일을 다운로드하기 전에 다운로드 한 파일에 대한 기능을 수행하는 방법

분류에서Dev

Android에서 phonegap / cordova를 사용하여 파일을 다운로드하고 저장하는 방법

분류에서Dev

laravel의 다른 필드에서 여러 파일을 업로드하는 방법

분류에서Dev

ssis에서 여러 파일을로드하는 방법

분류에서Dev

JMeter에서 여러 스레드가 동시에 파일을 업로드하도록 허용하는 방법

분류에서Dev

Vue : 다운로드 태그를 사용하여 브라우저에 파일을 다운로드하는 방법

분류에서Dev

한 번에 여러 파일을 다운로드하는 방법은 무엇입니까?

분류에서Dev

* 여러 * 파일을 동시에 다운로드하는 콘솔 다운로드 가속기

분류에서Dev

Heroku에서 일부 파일을 다운로드하는 방법

분류에서Dev

파일 보호기를 사용하여 각도에서 Excel 파일을 다운로드하는 방법

분류에서Dev

C #을 사용하여 Azure Blob Storage에서 단일 요청으로 여러 파일을 다운로드하는 방법은 무엇입니까?

분류에서Dev

iOS에서 진행중인 백그라운드에서 여러 mp4 파일을 다운로드하는 방법은 무엇입니까?

분류에서Dev

Perl에서 YAML을 사용하여 여러 파일을로드하는 방법

분류에서Dev

노드 js에서 okhttp 라이브러리로 파일을 다운로드하는 방법

분류에서Dev

Java 코드를 사용하여 hdfs에 파일을 업로드하고 다운로드하는 방법

분류에서Dev

Google blobstore에서 android로 파일을 다운로드하는 방법

Related 관련 기사

  1. 1

    Android에서 여러 파일을 업로드하는 방법

  2. 2

    wget을 사용하여 다양한 링크에서 여러 파일을 다운로드하는 방법

  3. 3

    다운로드 파일에 이름을 부여하는 방법

  4. 4

    Windows 용 Cygwin에서 Wget을 사용하여 여러 파일을 다운로드하는 방법

  5. 5

    Pandas에서 동시에 여러 csv 파일을 읽는 방법

  6. 6

    Python에서 Selenium을 사용하여 드롭 다운의 각 옵션을 선택하는 사이트에서 여러 파일을 다운로드하는 방법

  7. 7

    phpstorm을 사용하여 ftp에서 파일을 다운로드하는 방법

  8. 8

    VBA를 사용하여 Sharepoint에서 파일을 다운로드하는 방법

  9. 9

    R shiny에서 여러 플롯을 zip 파일로 다운로드하는 방법은 무엇입니까?

  10. 10

    Python 요청 라이브러리를 사용하여 웹에서 PDF 파일을 다운로드하는 방법

  11. 11

    Python 요청 라이브러리를 사용하여 웹에서 PDF 파일을 다운로드하는 방법

  12. 12

    Android에서 파일을 다운로드하는 방법

  13. 13

    Gradle 파일을 사용하여 Android Google Source에서 소스 코드를 다운로드하는 방법

  14. 14

    wget으로 웹 사이트에서 여러 파일을 다운로드하고 다음 파일을 다운로드하기 전에 다운로드 한 파일에 대한 기능을 수행하는 방법

  15. 15

    Android에서 phonegap / cordova를 사용하여 파일을 다운로드하고 저장하는 방법

  16. 16

    laravel의 다른 필드에서 여러 파일을 업로드하는 방법

  17. 17

    ssis에서 여러 파일을로드하는 방법

  18. 18

    JMeter에서 여러 스레드가 동시에 파일을 업로드하도록 허용하는 방법

  19. 19

    Vue : 다운로드 태그를 사용하여 브라우저에 파일을 다운로드하는 방법

  20. 20

    한 번에 여러 파일을 다운로드하는 방법은 무엇입니까?

  21. 21

    * 여러 * 파일을 동시에 다운로드하는 콘솔 다운로드 가속기

  22. 22

    Heroku에서 일부 파일을 다운로드하는 방법

  23. 23

    파일 보호기를 사용하여 각도에서 Excel 파일을 다운로드하는 방법

  24. 24

    C #을 사용하여 Azure Blob Storage에서 단일 요청으로 여러 파일을 다운로드하는 방법은 무엇입니까?

  25. 25

    iOS에서 진행중인 백그라운드에서 여러 mp4 파일을 다운로드하는 방법은 무엇입니까?

  26. 26

    Perl에서 YAML을 사용하여 여러 파일을로드하는 방법

  27. 27

    노드 js에서 okhttp 라이브러리로 파일을 다운로드하는 방법

  28. 28

    Java 코드를 사용하여 hdfs에 파일을 업로드하고 다운로드하는 방법

  29. 29

    Google blobstore에서 android로 파일을 다운로드하는 방법

뜨겁다태그

보관