Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/199.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用改型和OkHTTPClient由于超时而停止下载文件_Android_Retrofit_Retrofit2_Okhttp - Fatal编程技术网

Android 使用改型和OkHTTPClient由于超时而停止下载文件

Android 使用改型和OkHTTPClient由于超时而停止下载文件,android,retrofit,retrofit2,okhttp,Android,Retrofit,Retrofit2,Okhttp,我正在使用改型下载文件,但几秒钟后下载停止,并给出以下错误“改型给线程暂停超时:110在下载过程中”“或大部分”JavaBinder:!!!失败的BINDER事务!!!(包裹大小=2840),”,如何解决此问题?文件大小可以是5MB、10MB,下载时间可以是任意大小,具体取决于互联网速度。如果延迟,下载不应停止 代码: public void run() { OkHttpClient.Builder httpClient = new OkHttpClient.Builder()

我正在使用改型下载文件,但几秒钟后下载停止,并给出以下错误“改型给线程暂停超时:110在下载过程中”“或大部分”JavaBinder:!!!失败的BINDER事务!!!(包裹大小=2840),”,如何解决此问题?文件大小可以是5MB、10MB,下载时间可以是任意大小,具体取决于互联网速度。如果延迟,下载不应停止

代码:

public void run() {

        OkHttpClient.Builder httpClient = new OkHttpClient.Builder()
                .addNetworkInterceptor(new Interceptor() {
                    @Override
                    public Response intercept(Chain chain) throws IOException {
                      try {
                          Response originalResponse = chain.proceed(chain.request());
                          return originalResponse.newBuilder()
                                  .body(new ProgressResponseBody(originalResponse.body(), progressListener))
                                  .build();
                      }
                      catch (Exception e) {
                             e.printStackTrace();
                          progressListener.onError(e.getCause()+": "+e.getMessage());

                      }
                      return chain.proceed(chain.request());
                    }
                });
        AppGlobal.Log("usm_fileUrl","baseUrl= "+BASE_URL+" ,fileName= "+fileName);
        Retrofit.Builder builder = new Retrofit.Builder()
                .baseUrl(BASE_URL)
                .addConverterFactory(GsonConverterFactory.create())
                ;
        Retrofit retrofit = builder.client(httpClient.build()).build();
        RetrofitInterface downloadService = retrofit.create(RetrofitInterface.class);
        Call<ResponseBody> call = downloadService.downloadFileByUrl(fileName);
        this.notificationId = this.mNotification.createNotification(fileTitle,"Downloading...");
        call.enqueue(new Callback<ResponseBody>() {

            @Override
            public void onResponse(Call<ResponseBody> call, final retrofit2.Response<ResponseBody> response) {
                if (response.isSuccessful()) {
                    Log.d(TAG, "Got the body for the file");

                    new AsyncTask<Void, Long, Void>() {
                        @Override
                        protected Void doInBackground(Void... voids) {
                            saveToDisk(response.body());
                            return null;
                        }
                    }.execute();

                } else {
                    Log.d(TAG, "Connection failed " + response.errorBody());
                }
            }

            @Override
            public void onFailure(Call<ResponseBody> call, Throwable t) {
                t.printStackTrace();
                Log.e(TAG, t.getMessage());
            }
        });
public void run(){
OkHttpClient.Builder httpClient=新建OkHttpClient.Builder()
.addNetworkInterceptor(新的Interceptor(){
@凌驾
公共响应拦截(链)引发IOException{
试一试{
Response originalResponse=chain.procedure(chain.request());
返回originalResponse.newBuilder()
.body(新的ProgressResponseBody(originalResponse.body(),progressListener))
.build();
}
捕获(例外e){
e、 printStackTrace();
progressListener.onError(e.getCause()+“:”+e.getMessage());
}
返回chain.procedue(chain.request());
}
});
AppGlobal.Log(“usm_fileUrl”,“baseUrl=“+BASE_URL+”,fileName=“+fileName”);
reformation.Builder=新的reformation.Builder()
.baseUrl(基本URL)
.addConverterFactory(GsonConverterFactory.create())
;
改装改装=builder.client(httpClient.build()).build();
RegulationInterface downloadService=Regulation.create(RegulationInterface.class);
Call Call=downloadService.downloadFileByUrl(文件名);
this.notificationId=this.mNotification.createNotification(文件标题,“下载…”);
call.enqueue(新回调(){
@凌驾
公共无效响应(呼叫、最终改装2.响应){
if(response.issusccessful()){
Log.d(标记“获取文件的正文”);
新建异步任务(){
@凌驾
受保护的空位背景(空位…空位){
saveToDisk(response.body());
返回null;
}
}.execute();
}否则{
Log.d(标记“连接失败”+response.errorBody());
}
}
@凌驾
失败时公共无效(调用调用,可丢弃的t){
t、 printStackTrace();
Log.e(标记,t.getMessage());
}
});
}