휠 만들기 - RxDownload

4358 단어
RxJava를 기반으로 한 다운로드 도구로 다중 스레드 다운로드와 인터럽트 리셋 지원, 인터럽트 리셋 지원 여부 스마트 판단
태그(공백 구분): Android RxJava Download Tools
RxJava 기반 다운로드 도구, 멀티스레드 및 인터럽트 릴레이 지원
프로젝트 주소
RxDownload
효과도
demo
주요 기능:
  • Retrofit+OKHTTP를 사용하여 네트워크 요청
  • RxJava 기반 제작, RxJava 각종 조작부호 체인 호출 지원
  • 인터럽트 릴레이, 서버 응답 값에 따라 인터럽트 릴레이 지원 여부를 자동으로 판단
  • 인터럽트 릴레이가 지원되지 않으면 레거시 다운로드
  • 다중 스레드 다운로드, 최대 스레드 설정 가능, 기본값 3
  • 네트워크 접속 실패가 감지되면 자동으로 재접속을 시도하고 최대 재시도 횟수를 구성할 수 있습니다. 기본값은 3
  • Last-modified 필드에 따라 서버 파일의 변경 여부를 판단할 수 있음
  • 서버와 검증하는 과정에서 더욱 가벼운 HEAD 요청 방식으로 응답 헤드만 가져와 서버의 부담을 줄였다
  • 사용 방법
    1.Gradle 의존도 추가
    Download
        dependencies{
             compile 'zlc.season:rxdownload:1.1.0'
        }
    

    2. 코드 호출
    Subscription subscription = RxDownload.getInstance()
                    .download(url, "weixin.apk", null)
                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(new Subscriber() {
                         @Override
                        public void onCompleted() {
    
                        }
    
                        @Override
                        public void onError(Throwable e) {
    
                        }
    
                        @Override
                        public void onNext(final DownloadStatus status) {
    
                        }
                    });
    

    download(String URL, String saveName, String savePath) 매개변수 설명:
    매개 변수는 다운로드 주소, 파일 이름 저장, 주소 저장입니다.
    url과saveName은 필수 매개 변수,savePath는 선택 가능한 매개 변수이며, 기본 다운로드 주소는/storage/emulated/0/Download/디렉터리, 즉 내장 저장된 Download 디렉터리입니다.
    3. 매개변수 구성
    구성할 수 있는 매개변수는 다음과 같습니다.
    Subscription subscription = RxDownload.getInstance()
                    .maxThread(10)     //      
                    .maxRetryCount(10) //          
                    .retrofit(myRetrofit)//      retrofit   ,      
                    .defaultSavePath(defaultSavePath)//         
                    .download(url,savename,savepath) //    
                    .subscribeOn(Schedulers.io())
                    .observeOn(AndroidSchedulers.mainThread())
                    .subscribe(new Subscriber() {
                        @Override
                        public void onCompleted() {
    
                        }
    
                        @Override
                        public void onError(Throwable e) {
    
                        }
    
                        @Override
                        public void onNext(DownloadStatus status) {
                        //Status           
                        }
                    });
    

    4. DownloadStatus 다운로드 상태
    class DownloadStatus {
        private long totalSize;
        private long downloadSize;
        public boolean isChunked = false;
        //...
        //       ,   byte
        public long getTotalSize() {}
    
        //        ,   byte
        public long getDownloadSize() {}
    
        //         , :10MB
        public String getFormatTotalSize() {}
    
        //             , :5KB
        public String getFormatDownloadSize() {}
    
        //           , :2MB/36MB
        public String getFormatStatusString() { }
    
        //        ,       , :5.25%
        public String getPercent() {}
    }
    

    5. 다운로드 취소 또는 일시 중지
    Subscription subscription = RxDownload.getInstance()
                    .download(url, null, null)
                    //...
    
    //    ,       ,            ,          ,       
    if (subscription != null && !subscription.isUnsubscribed()) {
                subscription.unsubscribe();
    }
    

    6. 더 많은 기능은 차츰차츰 완벽해질 것이다
    만약 이 항목에 대해 의문이 있으시다면, issues를 제기하러 오신 것을 환영합니다.
    나에 관하여
    프로젝트에 대해 의견을 교환하려면 다음과 같이 하십시오.
    QQ : 270362455
    Gmail: [email protected]
    License
    Copyright 2016 Season.Zlc
    
    Licensed under the Apache License, Version 2.0 (the "License");
    you may not use this file except in compliance with the License.
    You may obtain a copy of the License at
    
       http://www.apache.org/licenses/LICENSE-2.0
    
    Unless required by applicable law or agreed to in writing, software
    distributed under the License is distributed on an "AS IS" BASIS,
    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
    See the License for the specific language governing permissions and
    limitations under the License.
    

    좋은 웹페이지 즐겨찾기